Solución:
Respuesta a la P1:
- En uso se refiere a la cantidad real de memoria física que se está utilizando.
- los segundo número en la memoria comprometida se refiere al límite de confirmación, que es la cantidad de memoria física + el tamaño del archivo de página.
- los primer número en la memoria comprometida se refiere a la cantidad de memoria solicitada por las aplicaciones.
- Cuando una aplicación solicita por primera vez usar una cierta cantidad de memoria, Windows se asegura de que pueda caber en algún lugar, ya sea en el archivo de paginación o en la memoria. No significa que mucha memoria esté ocupando la memoria física real o el espacio del archivo de paginación. Simplemente significa que Windows reserva este espacio en el límite de confirmación total, en caso de que se use. Se utiliza la mayor parte de la memoria solicitada, pero no toda.
- En caché Se refiere a la cantidad de memoria física que se utiliza para acelerar el acceso al sistema de archivos. En el sistema operativo cliente, hasta el 10% de su memoria se utiliza para almacenar en búfer las escrituras (“umbral de página sucia”).
- Grupo paginado es la cantidad de memoria del controlador del dispositivo y del kernel que PUEDE pasar de la memoria física al archivo de página lenta (fuente).
- Grupo no paginado es la cantidad de memoria del controlador del dispositivo y del kernel que debe permanecer en la memoria física. Este tipo de memoria no se puede descargar en el disco.
Respuesta a la P2:
Simplemente hablando, en Windows, la “memoria” puede estar respaldada por la RAM física o un archivo de paginación (en el disco). Los archivos de paginación se utilizan para muchos propósitos, incluida la liberación de RAM física para programas a los que se accede con poca frecuencia. Es órdenes de magnitud más lenta que la RAM física porque está respaldada por un disco, girando o no.
Si su sistema no tiene suficiente memoria, es posible que las aplicaciones que está utilizando activamente se extiendan al disco y que su sistema se ralentice drásticamente.
Como puede ver en la Respuesta 1, no es completamente fácil determinar si tiene suficiente memoria o no a partir de esos números.
Sugeriría que el siguiente método determine si tiene suficiente memoria o no:
- Iniciar el Monitor de recursos (Ganar+R y escriba
perfmon /res
) - Utilice su computadora portátil como lo haría normalmente.
- Cuando note una desaceleración, vuelva al monitor de recursos y vea el gráfico de memoria en el lado derecho. La falla dura se refiere aproximadamente a la cantidad de veces que tuvo que acceder al archivo de paginación para acceder a la memoria. El número de fallas graves debe ser cercano a 0. Si no es así, no tiene suficiente RAM para lo que esté haciendo.
Tienes un par de remedios:
- Cierre las aplicaciones o pestañas que no utilice antes de que el sistema se ralentice.
- Actualice la RAM si es posible.
Tomando estos no en el orden que pidió …
(Nota: esto aún está en progreso. Es probable que lo modifique y edite en los próximos días. Y agregaré mayúsculas de pantalla).
(Tenga en cuenta lo segundo: me doy cuenta de que esto es largo. Es lo más breve que puedo, mientras que al menos intento responder a la mayoría de las preguntas que comúnmente surgen de respuestas más cortas. A modo de comparación, el capítulo de Gestión de la memoria de Internos de Windows tiene unas 200 páginas, suficiente para hacer un libro de tamaño decente por sí solo. Si realmente quieres aprender estas cosas, hay otro libro (que recomiendo) llamado ¿Qué lo convierte en página? eso entra en más detalles. Tiene poco más de 600 páginas. Como mencioné anteriormente, es probable que edite esto en los próximos días, ¡pero no espere que se acorte! )
En uso
En uso es la cantidad de memoria física (RAM) que corresponde a las páginas virtuales a las que se puede acceder sin incurrir en una falla de página.
Precaución: ¡No es la cantidad de memoria virtual a la que se puede acceder sin incurrir en un error de página! Ese es un número mayor. Se pueden asignar muchas páginas virtuales diferentes a la misma página física.
Antecedentes: cada página virtual puede ser “válida”, lo que significa que ocupa memoria física y su entrada en la tabla de páginas tiene el bit “válido” establecido. De lo contrario, el bit válido puede estar claro, en cuyo caso la referencia a la página virtual incurrirá en un error de página. Entonces el sistema operativo tiene que resolver la falla. Entonces se dice que la página ha sido “fallada” en la RAM. Por lo general, se asume que esto significa “leer la página desde el disco”, pero a menudo ese no es el caso (detalles más adelante). Otro término que escuchará que se utiliza para una página válida es “residente”.
El principal contribuyente a En uso son las páginas que componen el conjuntos de trabajo de procesos y del SO, más el no paginado pool (que suele ser bastante pequeño, unos cientos de MB más o menos; diré más sobre ello más adelante). El conjunto de trabajo de un proceso es simplemente una lista de las páginas físicas que actualmente son “residentes” para ese proceso. Cada proceso tiene su propia lista de trabajo.
Nota: Las páginas físicas de RAM pueden estar en conjuntos de trabajo de varios procesos al mismo tiempo. Esto significa que sumar los tamaños de los conjuntos de trabajo de todos los procesos le dará un número mayor que la cantidad real de RAM que están usando. los En uso total, sin embargo, representa correctamente las páginas compartidas; es decir, no los cuenta doble o múltiple.
Precaución: el término En uso puede ser engañoso porque las páginas de RAM en las listas En espera y Modificadas también están “en uso”, aunque no se puede acceder a ellas sin fallas de página y no están en ningún conjunto de trabajo. Estas dos listas se explicarán un poco más adelante.
nb: Gran parte de esta discusión va a mencionar procesos y sus conjuntos de trabajo. El código y los datos del modo kernel del sistema operativo Windows también viven en la memoria virtual, y gran parte de ella es paginable. Es decir, no tiene que permanecer en la RAM todo el tiempo, al igual que el código de la aplicación y los datos. Si bien no es un proceso en sí mismo (a pesar del llamado proceso “Sistema”), existe un conjunto de trabajo para realizar un seguimiento de las páginas que son “válidas” para el sistema operativo, o más precisamente, para el espacio de direcciones del kernel. De hecho, a partir de Windows 7 y versiones posteriores, el conjunto de trabajo del sistema se dividió en cuatro conjuntos de trabajo (para varios tipos de código y datos paginable), principalmente por razones de rendimiento. Casi todo lo que hablo con respecto a los conjuntos de trabajo se aplica tanto a los conjuntos de trabajo del sistema operativo como a los de los procesos, pero no voy a agregar “o uno de los conjuntos de trabajo del sistema operativo” cada vez que menciono un conjunto de trabajo de procesos. .
Disponible
No preguntaste sobre este, pero es importante. Disponible es toda la RAM que se puede asignar a un nuevo uso (por ejemplo, a un proceso diferente al que la estaba usando anteriormente, o incluso a una nueva página virtual dentro del mismo proceso) sin quitarla de un conjunto de trabajo y sin guardar su contenido en alguna parte. (Porque los contenidos ya están guardados en algún lugar, si son importantes).
Disponible no aparece en la pestaña Rendimiento del Administrador de tareas actual, panel Memoria. Es visible en la pestaña Memoria del Monitor de recursos. Es la suma de las listas de páginas Standby, Free y Zero. Se acercan detalles sobre ellos.
En caché
los En caché El contador en la pestaña Rendimiento del Administrador de tareas es el total de los siguientes tres usos de RAM. Es un recuento de RAM, no de memoria virtual.
En caché parte 1: el Lista de páginas en espera (incluso SuperFetch)
Esto es visible en la pestaña “Memoria” del “Monitor de recursos”. Antes de Windows Vista, esto se usaba exclusivamente como “caché de página”: las páginas de RAM que se eliminan de los conjuntos de trabajo (después de lo cual la referencia a ellas incurriría en un error de página) se colocan primero en la lista de páginas en espera. A partir de ahí, se pueden reasignar a algún otro uso (“reutilización”). Pero si el proceso original hace referencia a una página en el SPL antes de que eso suceda, la página se puede restaurar a su conjunto de trabajo original (es decir, se puede “hacer válida”) sin tener que leerla desde el disco. Por lo tanto, el SPL forma un caché de páginas de primero en entrar, primero en salir en todo el sistema que podría volver a necesitarse pronto. (A diferencia de los conjuntos de trabajo, que son por proceso; las páginas se eliminan de los conjuntos de trabajo sobre la base de uso menos reciente, no FIFO).
Todo eso todavía se aplica. Pero a partir de Vista y versiones posteriores, algunas de las páginas del SPL pueden reutilizado para su uso por SuperFetch. SuperFetch es un mecanismo proactivo de almacenamiento en caché de archivos de solo lectura que mantiene un historial de los archivos a los que se accede con frecuencia e intenta acelerar las cosas leyendo dichos archivos en la RAM antes de que realmente se soliciten.
Lo inteligente de SuperFetch es que las páginas utilizadas por SuperFetch no se eliminan de la lista de páginas en espera, por lo que aún se pueden reutilizar en muy poco tiempo como cualquier otra cosa en el SPL. Y todavía se cuentan como parte de En caché. Y como parte de Disponible. ¡Así que SuperFetch realmente no “usa” ninguna RAM! O al menos, no quita “Disponible“, ni contribuye a”En uso“.
SuperFetch está deshabilitado de forma predeterminada en sistemas con un SSD para el disco del sistema operativo. La lista en espera se sigue utilizando como se describe aquí, como caché de página.
La lista de páginas en espera es parte de la RAM que se informa como Disponible, lo que significa que todas y cada una de sus páginas se pueden reutilizar para cualquier otra cosa en cualquier momento, incluso aquellas páginas que SuperFetch está utilizando. Está no parte de En uso, aunque se esté utilizando. ¡Ciertamente SuperFetch lo está usando! También se utiliza cada vez que se resuelve un error de página de software en el SPL. Todo lo que digo aquí es que afirmo que En uso La cantidad de RAM que “se está utilizando” es, en el mejor de los casos, engañosa. Microsoft debería haber elegido un término diferente para En uso.
En caché parte 2: el Lista de páginas modificadas
A partir de Windows 8 y versiones posteriores, En caché contador también incluye páginas físicas que están en el Lista de páginas modificadas. (El MPL ha existido desde siempre; todo lo nuevo es contarlo como parte de En caché.) Al igual que el SPL, el tamaño del MPL se puede ver en la pestaña Memoria del Monitor de recursos, aunque normalmente debería ser bastante pequeño o cero.
El MPL es como el SPL, excepto que se utiliza para páginas cuyo contenido se modificó mientras estaban residentes. (Esto es registrado por la MMU de la CPU). Cuando se eliminan de sus conjuntos de trabajo, estas páginas se mueven al MPL en lugar de al SPL. Los subprocesos del “escritor de páginas modificado” en el proceso “Sistema” se activan periódicamente, copian el contenido de estas páginas en sus respectivos almacenes de respaldo (ya sea el archivo de página o, para las páginas respaldadas por archivos, sus respectivos archivos) y luego muévelos a la lista de páginas en espera, momento en el que pasan a formar parte de Disponible y son tratados como si los hubieran puesto en el SPL en primer lugar. Ellos no eran parte de Disponible mientras están en el MPL porque no se pueden reutilizar para otra cosa antes de que su contenido se guarde en algún lugar.
El MPL no se cuenta como parte de En uso cualquiera.
Tenga en cuenta que si tiene (tontamente y desafiando un buen consejo) deshabilitó su archivo de paginación, el sistema nunca podrá escribir páginas modificadas respaldadas por archivos de paginación. El síntoma habitual aquí es un MPL absurdamente grande, que puede causar escasez de RAM disponible y, por lo tanto, “paliza de página”, donde el sistema operativo pasa más tiempo copiando páginas dentro y fuera de la RAM que haciendo el trabajo que desea hacer.
La función “Memoria comprimida” de Windows 10 ha cambiado un poco la parte de “escritura en el archivo de paginación”; No voy a entrar en eso aquí, ya que no afecta a los contadores de los que estamos hablando.
En caché parte 3: el Caché del sistema de archivos
- ACTUALIZACIÓN: En algún momento durante las muchas versiones de Windows 10, o quizás ya en Windows 8, esto ya no es parte del Administrador de tareas. En caché encimera. Pero todavía existe, y el contador de PerfMon que menciono todavía está ahí y activo. El tamaño residente de la caché del sistema de archivos también se incluye en En uso. Tengo que hacer algunas pruebas para ver exactamente cuándo se cambió esto.
o al menos la parte “residente” de la caché del sistema de archivos. Nuevamente, “Residente” significa que es la parte en RAM, en un conjunto de trabajo de una asignación virtual más grande.
Oye, ¿no hablamos ya de un caché? ¿”SuperFetch”? Sí, pero este no es el mismo caché que SuperFetch. A diferencia de SuperFetch, el caché del sistema de archivos es un caché reactivo (nunca predictivo, es decir, nunca almacena en caché nada hasta que realmente se ha utilizado, luego se almacena en caché para un uso rápido futuro (dentro de la misma instancia del sistema operativo).
La caché de archivos también tiene un papel vital en el apoyo al acceso a archivos en los límites que no están alineados con el sector. Si abre un archivo con la opción “sin almacenamiento en caché”, todas sus lecturas y escrituras deben ser múltiplos del tamaño del sector de la unidad y deben comenzar en los límites del sector. La caché de archivos le permite leer y escribir solo un byte a la vez (al menos en lo que respecta a las llamadas a la API).
En versiones anteriores de Windows, la parte residente del caché de archivos formaba parte del conjunto de trabajo del sistema, y su contribución al conjunto de trabajo del sistema se podía encontrar en el contador de PerfMon. Memory | System Cache Resident Bytes
. A partir de Windows 7 y versiones posteriores, el conjunto de trabajo del sistema se ha dividido en cuatro conjuntos de trabajo separados, el caché de archivos ocupa uno de ellos, y ese mismo contador aún refleja su tamaño residente. De cualquier manera, la parte residente de la caché del sistema de archivos se incluye en “en uso” (porque es un conjunto de trabajo).
- nb: el contador “en caché” del administrador de tareas no tiene nada que ver con los cachés internos de la CPU (L1, L2, etc.). Por supuesto, esos cachés existen, pero Windows no los administra y no se reflejan en ninguno de los contadores de administración de memoria del sistema operativo, ni “total”, ni “en uso”, ciertamente no “en caché”.
Los grupos no paginado y paginado
los Paginado y No paginado los contadores dan los tamaños virtuales de dos regiones del espacio de direcciones del kernel, llamadas “grupos de memoria”. Ambos se utilizan para asignaciones de memoria bastante pequeñas y a corto plazo (generalmente mucho menos de 1 MB cada una) que son necesarias para varios componentes del código del modo kernel de Windows, incluidos los controladores de dispositivo. El código del modo kernel los usa de una manera muy similar a la de los programas de aplicación que usan “montones”. (La razón por la que Windows los llama grupos en lugar de montones es histórica).
Una de las piscinas es No paginado lo que significa que siempre se guarda en la RAM. Entonces, para este, el tamaño indicado por el Administrador de tareas es el tamaño físico (RAM) y el tamaño virtual. El grupo no paginado es utilizado por componentes que pueden ejecutarse en contextos donde no se pueden manejar fallas de página, como las rutinas de servicio de interrupción de controladores de dispositivos, rutinas DPC y otras rutinas que deben ejecutarse en IRQL DISPATCH_LEVEL o superior. He explicado los IRQL en otra respuesta aquí.
La otra piscina, llamada Paginado por el administrador de tareas, realmente debería llamarse “páginacapaz“. Al igual que la memoria virtual ordinaria que utilizan los procesos, no necesariamente paginado, es solo que partes de él pueden ser. Al igual que con todas las demás regiones en las que se puede paginar, sus páginas se “enviarán por error” a la RAM a pedido, es decir, cuando se haga referencia a ellas mientras no están en la RAM, y posiblemente se “paginarán” más adelante si la memoria física se está agotando y las nuevas fallas de página deben resolverse.
El tamaño que muestra el Administrador de tareas para el grupo paginable es el tamaño virtual. Un subconjunto de eso será “válido”, es decir, en RAM (es decir, el tamaño físico). El Administrador de tareas no informa del tamaño de la parte en RAM (paginada) del grupo paginado, pero se puede ver en la herramienta SysInternals Process Explorer (Ver | Información del sistema) o en el contador PerfMon Memory | Pool Paged Resident Bytes
.
Todo el grupo “no paginado” y la parte “paginada” o “residente” del grupo paginado son parte de lo que se cuenta como “en uso”.
Para obtener más información sobre las agrupaciones de memoria del kernel, consulte la documentación sobre la interfaz del kernel. ExAllocatePool
.
Precaución: No paginado no es el subconjunto paginado de Paginado! Estas son asignaciones virtuales separadas. Por lo tanto, es completamente posible, por ejemplo, que el grupo no paginado se muestre con un tamaño mayor que el paginado, pero no es común.
Precaución: De ninguna manera son estos la cantidad total de espacio de direcciones virtuales del kernel.
Comprometido
los Comprometido los contadores se refieren a un tipo particular de memoria virtual. Para explicar realmente esto, tengo que explicar los otros tipos.
Cada página del espacio de direcciones virtuales puede estar en uno de cinco estados: no utilizado, no paginable, mapeado, reservado y comprometido.
Los espacios de direcciones virtuales “no paginable”, “comprometidos” y “asignados” corresponden a memoria y se puede acceder con éxito (leer o escribir), posiblemente con un error de página en el camino; No se puede acceder a “No utilizado” y “Reservado”.
(Ese mensaje de error que a veces ve: “La instrucción en 0x (alguna dirección) hizo referencia a la memoria en 0x (alguna dirección), la memoria no se pudo leer” (o “escribir”). Eso es lo que sucede si el código de su sistema intenta acceder al espacio de direcciones “no utilizado” o “reservado”. O si se intenta escribir en una página de solo lectura, o acceder a una dirección virtual protegida por kernel desde el modo de usuario. nb: La dirección informada es virtual, no física, y el mensaje no significa que tenga un problema con su RAM. Es un error en el programa).
La memoria virtual “no paginable” siempre es “residente” físicamente y es casi exclusivamente la provincia del código del modo kernel de Windows. Es parte de “en uso”. los No paginado pool, ya discutido, es un ejemplo de memoria virtual no paginable.
Precaución: Aunque la memoria virtual no paginable siempre es residente, la consideramos “virtual” porque todavía la referenciamos mediante direcciones virtuales. También tiene todas las demás propiedades de la memoria virtual, excepto que siempre es “válido” por lo que nunca producirá un error de página cuando se acceda.
El espacio de direcciones virtuales “mapeado” se puede paginar hacia / desde el disco. Su “almacén de respaldo”, que es un nombre elegante para el lugar donde se guardan partes de él si no se pueden guardar todas en la RAM al mismo tiempo, son archivos que se proporcionaron cuando se creó cada región mapeada. (Las API relevantes aquí son CreateFileMapping
y MapViewOfFile
.) El contenido de las regiones mapeadas de hecho comienza en esos archivos; se lee en la RAM a medida que se accede (“búsqueda de demanda”).
La memoria mapeada es, por cierto, excepcionalmente común: es en las regiones mapeadas donde vive todo el código ejecutable. También se utiliza con mucha frecuencia para acceder a archivos grandes, a diferencia del acceso tradicional de lectura / escritura.
Las regiones mapeadas se pueden compartir entre procesos. Si el mapeo está configurado para acceso de lectura / escritura (¡no se hace típicamente para archivos de código!), Entonces las modificaciones a los vas mapeados se vuelven a escribir en los respectivos archivos mapeados.
Sin embargo, existe la posibilidad de crear una “región mapeada respaldada por archivos de paginación” que se puede compartir entre procesos como cualquier otra región mapeada, pero los cambios no se conservarán en ninguna parte una vez que todos los procesos la hayan desasignado.
El espacio de direcciones virtuales “comprometido” también se puede paginar hacia / desde el disco. La diferencia entre esto y “mapeado” es que el almacén de respaldo para vas “Comprometidos”, si fuera necesario, es el archivo de paginación (si tiene uno, que sin duda debería).
“Comprometido” como “mapeado” se pagina por demanda, pero la primera vez que se accede a una página de memoria comprometida, no hay lectura desde el disco, porque a diferencia de la memoria mapeada, no hay lugar para leer el contenido inicial de. Una nueva página física simplemente se asigna al proceso (de la RAM “Disponible” anteriormente, normalmente la Lista de páginas cero) y se hace válida en el conjunto de trabajo del proceso. Entonces, una página de memoria comprometida no ocupa espacio de almacenamiento en ningún lugar hasta la primera vez que se hace referencia a ella.
Dado que la memoria comprometida es paginable (incluso si no tiene un archivo de paginación, pero realmente debería tener uno), es probable que no todo esté en la RAM – “residente” – al mismo tiempo. Como es habitual, el sistema operativo intenta mantener las páginas de vas a las que se ha accedido más recientemente en la RAM; si la RAM disponible es escasa, entonces el sistema operativo “paginará” otras páginas, eliminándolas de sus conjuntos de trabajo y colocándolas en el SPL o MPL. En el último caso, pronto se escriben a su tienda de respaldo.
El tamaño total de “comprometido” (es decir, respaldado por un archivo de paginación, o lo sería si tuvieras un archivo de paginación, lo cual definitivamente deberías tener), en todos los procesos más el kernel del sistema operativo, es el primer número debajo de la palabra Comprometido.
También incluye varias otras contribuciones: principalmente los grupos no paginado y paginado, y las regiones mapeadas que se mapean mediante copia en escritura. Este número a menudo se llama cometer cargo.
Una forma de pensar en el cargo de compromiso es: si tiene un archivo de paginación (que debería), y todos El contenido paginable de la memoria (comprometido, grupo paginado, etc.), excepto la memoria mapeada, tenía que paginarse fuera de la RAM: este es el espacio de archivo de paginación que se necesitaría.
El segundo número debajo de la palabra Comprometido es el “límite de confirmación”. Ese es el tamaño de la RAM más el tamaño total actual de los archivos de paginación. No se permite que el cargo de compromiso sea mayor que eso. Si un proceso intenta comprometer memoria virtual de un tamaño que excedería el límite de confirmación, entonces, si es posible, Windows ampliará el archivo de paginación para hacer espacio (y verá la ventana emergente “poca memoria”). Si no es posible ampliar el archivo de paginación, el mensaje dirá “memoria insuficiente” y el proceso que lo hizo se bloqueará.
El subconjunto residente del cargo de compromiso es parte de “en uso”. Tenga en cuenta que incluso si no tiene un archivo de paginación (y si no lo tiene, ¿qué le pasa?), Esto no es necesariamente lo mismo que el cargo de confirmación. Por un lado, si compromete memoria virtual pero luego no accede a toda ella, las partes a las que no accede nunca ocuparán espacio de almacenamiento en ningún lugar. También es posible eliminar la memoria comprometida de un conjunto de trabajo y colocarla en la lista de páginas modificadas. Por lo general, solo un subconjunto de la memoria comprometida ocupará RAM.
No hay forma de que el Administrador de tareas determine el subconjunto de memoria comprometida que está en la RAM. Sin embargo, la herramienta “RAMmap” de SysInternals puede mostrar esto.
Sumando todo
Disponible + En uso + Modificado se suman a la RAM total que puede utilizar el sistema operativo.
la RAM total utilizable por el sistema operativo más la La RAM “reservada por hardware” debe ser igual a la cantidad total de RAM instalada.
Disponible es igual a la Lista de páginas en espera, más el Lista de páginas gratuitas, más el Lista de páginas cero
Gratis como se muestra en la pestaña Memoria del Monitor de recursos es la suma de la lista de páginas cero y la lista de páginas libres.
(He omitido deliberadamente cualquier otra discusión sobre la Lista de páginas cero porque no es importante para los contadores sobre los que se preguntó).
En caché = el Lista de páginas en espera (algunos de los cuales son utilizados por SuperFetch), además (para Windows 8 y posteriores) Lista de páginas modificadas, más (para versiones anteriores de Windows que aún no se han determinado con precisión) la parte paginada o residente de la caché de archivos del sistema.
Precaución: Dado que la lista de páginas en espera es parte de “Disponible” y “En caché”, es totalmente posible agregar “Disponible” y “En caché” y obtener un total que sea mayor que la cantidad total de RAM. Estos números simplemente no están destinados a sumarse.
La pestaña Memoria del Monitor de recursos muestra la suma de Libre y Cero como un solo número, etiquetado como “Libre”. El Monitor de rendimiento puede mostrarle estos tamaños individualmente.
¿Tengo suficiente RAM?
“Hasta donde yo sé, el kernel manipula la administración de la memoria de una manera compleja, entonces, ¿puedo concluir que si tengo memoria libre en la memoria RAM de mi computadora portátil, entonces mi memoria es suficiente?”
La mejor métrica para “¿tengo suficiente RAM?” suele ser la tasa de errores de página dura. Las fallas de página duras son fallas de página que requieren lectura del disco. Puede ver esto en los gráficos de la columna derecha del Monitor de recursos (las pestañas “Descripción general” y “Memoria”), o por proceso en la pestaña Memoria. El contador PerfMon Memory | Page Reads/sec
también lo muestra.
La tasa de fallas general es un superconjunto de la tasa de fallas duras y no es tan interesante. Incluye “fallas de página blandas”, que no implican lecturas de disco y, por lo tanto, requieren mucho menos tiempo. (Es difícil decir cuánto tiempo tardan, pero lo estimaría en unos pocos cientos de veces de instrucción, como máximo). Estos incluyen fallas resueltas en las listas de páginas en espera y modificadas, fallas en páginas compartidas que ya están residentes por uno o más de otros procesos, y fallas de “demanda cero”, que ocurren en la primera referencia a páginas privadas. No se sorprenda si ve miles de errores de página por segundo. Es la página que lee desde el disco lo que ralentiza enormemente las cosas (incluso si su disco es un SSD).
Pero, ¿qué pasa con “Disponible”? o “Gratis”?
Mucha gente se preocupa por la cantidad de memoria “disponible” o memoria “libre”. Primero, es bastante común que un sistema Windows en el que no muchos procesos han salido durante mucho tiempo muestren que no hay memoria libre o casi ninguna. Esto se espera ya que el único evento que normalmente devuelve la memoria a “Libre” es cuando un proceso sale; Las páginas físicas que eran válidas para su memoria “comprometida” se mueven luego a la lista “Libre”.
“Disponible” incluye la lista de espera y está tan listo para ser asignado a un nuevo uso como “Gratis”, por lo que si tiene muchos “Disponibles”, hay menos necesidad de preocuparse de que no sea mucho “Gratis”.
Incluso para “Disponible”, la principal ventaja de tener muchos disponible la memoria es para admitir el inicio rápido de nuevos programas o un nuevo comportamiento en programas que ya se están ejecutando. En esos momentos, verá ráfagas de errores graves en la página; esto es completamente normal, de hecho, inevitable. Si su carga de trabajo no hace mucho de eso, su sistema puede estar contento con un porcentaje menor de RAM disponible.
Y de nuevo mencionaré: un SSD hace que las fallas de página sean mucho más rápidas que si fueran a un disco giratorio. E irán más rápido aún si se trata de un SSD PCIe M.2. Todavía son mucho más lentos que las fallas suaves.
Una cosa más: a menudo escuchará la afirmación de que “nunca puede tener suficiente RAM”. Bueno, es cierto que (salvo algunas circunstancias inusuales) agregar RAM a su sistema nunca causará un rendimiento problema. Sin embargo, ciertamente puedes gastar demasiado dinero en RAM. Hay un punto de rendimientos decrecientes más allá del cual agregar más RAM no acelerará su sistema de manera notable. Dónde se encuentra este punto depende de su carga de trabajo y de varios aspectos de su hardware (particularmente si tiene un SSD o un disco giratorio). Como creo que he dejado claro anteriormente, deshacerse de su archivo de paginación no elimina la paginación hacia / desde el disco, porque los archivos mapeados todavía existen y todavía se leen y escriben a través de paginación. Entonces, deshacerse de su archivo de paginación (lo que no debería hacer de todos modos) no significa que pueda dejar de preocuparse por la velocidad de su disco.
Pregunta 1:
¿Qué es exactamente el grupo de memoria comprometida, caché, paginado y no paginado y en qué se diferencian con la memoria en uso?
Memoria comprometida:
La memoria comprometida son todas las formas de memoria asignadas para su uso. Esto incluye tanto la memoria física como la virtual (paginación). Memoria comprometida frente a memoria disponible
Memoria en caché: Normalmente, la memoria está integrada en la CPU. Esta memoria es mucho más rápida de acceder ya que está lo más cerca posible del procesador que la está usando.
Memoria paginada:
La memoria de paginación es una memoria virtual, es decir, nada físico adjunto al sistema. Cuando el sistema determina que necesita más memoria de la que está disponible, creará una memoria virtual que en realidad es solo espacio de almacenamiento en el disco duro. Este tipo de memoria es mucho más lento ya que depende de las velocidades de lectura / escritura del disco duro.
No paginado:
Simplemente lo contrario de la memoria paginada. Esto significa que sería un total de memoria excluyendo la cantidad de memoria paginada.
Pregunta 2:
Hasta donde yo sé, el kernel manipula la administración de la memoria de una manera compleja, entonces, ¿puedo concluir que si tengo memoria libre en la memoria ram de mi computadora portátil, entonces mi memoria es suficiente?
Por lo general, es bueno asegurarse de tener suficiente memoria física para la tarea más intensiva en memoria para la que utilizará su computadora. Como se explicó anteriormente, la memoria de paginación técnicamente hará el trabajo, pero será mucho más lenta que la memoria física. Lo que le sugeriría es que controle sus niveles de memoria, abra y ejecute la configuración más intensiva que crea que ejecutaría de manera realista y ver cuánta memoria se utiliza.