¿Por qué Windows siempre utiliza tanta Memoria Virtual como hay RAM instalada?

¿Y por qué quiere tener un máximo de dos veces más de esa cantidad? Mi sistema tiene 32 GB de RAM y Windows, por defecto, establece un mínimo de 16 MB de memoria virtual, asignado 32 GB (!) Y recomienda 50 GB (!). Aún peor en un sistema de RAM de 64 GB en el que se recomienda más de 100 GB para ser asignado, aunque "sólo" se utiliza de nuevo la misma cantidad que estaba disponible en la RAM, 64 GB en este caso.

Por lo que he entendido el concepto del archivo de paginación es que Windows sólo se expande cuando sea necesario y comienza con la cantidad mínima, aunque nunca lo hace, siempre va en el máximo absoluto. Esto es extremadamente molesto porque deshabilitar el archivo de paginación o no establecerlo a la misma cantidad de RAM instalada, causa problemas en algunos programas que utilizan un montón de memoria como 7zip, simplemente afirman que no hay suficiente memoria para asignar, aunque hay suficiente De la memoria utilizable libre.

Este comportamiento potencialmente disminuye enormemente la vida útil de mis unidades (SSD). ¿Por qué Windows hace esto y cómo puedo evitar esto, o alternativamente cómo puedo deshabilitar el archivo de paginación sin tener ningún comportamiento extraño en algunos programas.

En primer lugar, es un error gigante (no suyo) que el diálogo de Windows, el que establece el tamaño del archivo de paginación, equipara el archivo de paginación con "memoria virtual". El archivo de paginación es simplemente el almacén de respaldo para una categoría de espacio de direcciones virtuales, que utiliza la memoria comprometida privada. Hay espacio de direcciones virtuales que está respaldado por otros archivos (archivos asignados), y hay vas que es siempre nonpageable y por lo que permanece en la memoria RAM en todo momento. Pero todo es "memoria virtual" en que, al menos, la traducción de direcciones virtuales a RAM siempre está funcionando.

Su observación es correcta: la asignación de Windows del tamaño del archivo de paginación utiliza un cálculo simple de default = tamaño de RAM y máximo = dos veces. (Solía ​​ser 1.5x y 3x.) Tienen que ponerlo a algo, y estos factores proporcionan un resultado que es casi siempre suficiente. También garantiza suficiente espacio de paginación para capturar un volcado de memoria si el sistema se bloquea (suponiendo que hayas habilitado kernel o volcados completos).

Por lo que he entendido el concepto del archivo de paginación es que Windows sólo se expande cuando sea necesario y comienza con la cantidad mínima, aunque nunca lo hace, siempre va en el máximo absoluto.

Ah … comienza con el "tamaño inicial". Esto NO es el "mínimo permitido". Es por eso que lo está viendo en su tamaño de RAM, porque Windows utiliza eso para el tamaño inicial.

Pero … ¿está diciendo que está viendo el tamaño real del archivo de paginación ir al valor máximo? Por ejemplo, si está configurado en 16 GB inicial, 32 GB máx., Está viendo el tamaño real ("actualmente asignado") a 32 GB? Siempre debe volver al tamaño inicial cuando reinicie, BTW.

¿Ve usted "el sistema está funcionando con poca memoria virtual" pop-ups? Porque debería, cuando el sistema operativo expande el archivo de paginación más allá del tamaño actual.

El sistema operativo no va a ampliar el archivo de paginación a menos que algo realmente ha intentado asignar tanta memoria privada comprometida que necesita el espacio de paginación ampliado para almacenar la información. Pero, tal vez algo tiene. Eche un vistazo a la pestaña Procesos del Administrador de tareas. La columna "Comprometer tamaño" muestra esto para cada proceso. Haga clic en el encabezado de la columna para ver quién es el cerdo. 🙂

Esto es extremadamente molesto porque deshabilitar el archivo de paginación o no establecerlo a la misma cantidad de RAM instalada, causa problemas en algunos programas que utilizan un montón de memoria como 7zip, simplemente afirman que no hay suficiente memoria para asignar, aunque hay suficiente De la memoria utilizable libre.

Esto tiene que hacer no con la RAM disponible, pero con algo llamado "commit charge" y "commit limit". El "límite de compromiso" es la suma de (RAM – memoria virtual no paginable) + tamaño de página actual. Así que un sistema con 8 GB de RAM y 16 GB de archivo de paginación actual tendría un límite de commit de aproximadamente 24 GB ("about" porque la RAM que contiene contenido nonpageable no cuenta hacia el límite de commit) .

La "carga de compromiso" es la cantidad de espacio de direcciones privadas que existe actualmente en el sistema. Esto tiene que ser menor que el límite de compromiso, de lo contrario el sistema no puede garantizar que la materia tiene un lugar para estar.

En la ficha Rendimiento del administrador de tareas, puede ver estos dos números con la leyenda "Confirmar (GB)". Por ejemplo, estoy mirando una máquina que dice "Commit (GB) 1/15". Eso es 1 GB de carga de confirmación actual de un límite de 15 GB.

Si un programa como 7zip intenta hacer, por ejemplo, un VirtualAlloc de tamaño> (commitLimit – commitCharge), es decir, mayor que el límite de "restante", entonces si el SO no puede expandir el archivo de paginación para hacer que el límite de commit sea lo suficientemente grande, Falla la solicitud de asignación. Eso es lo que estás viendo sucediendo. (Windows en realidad no tiene mensaje de error para "bajo en la memoria física", no para el acceso de modo de usuario! Sólo para virtual.)

No tiene nada que ver con la RAM libre , ya que toda la RAM (menos el pequeño bit que no es paginable) cuenta hacia el límite de compromiso si está actualmente libre o no.

Es confuso porque cuando se mira el sistema después de uno de estos fallos de asignación, no hay nada aparentemente equivocado – usted mira el sistema, su carga de compromiso está muy por debajo del límite, usted puede incluso tener una gran cantidad de RAM libre. Tendrías que saber cuánta memoria comprometida privada el programa había estado intentando asignar para ver cuál era el problema. Y la mayoría de los programas no le dirán.

Suena a mí como 7zip es ser demasiado agresivo en tratar de asignar vas, tal vez está escalando sus solicitudes en función de su tamaño de RAM? ¿Estás seguro de que no hay una configuración de archivo de paginación más pequeña en la que 7zip sería feliz? ¿Está utilizando la versión de 32 bits o 64 bits de 7-zip? El uso de la versión de 32 bits solucionaría esto, ya que no se puede utilizar más de 2 o quizás 3 GB de espacio de direcciones virtuales. Por supuesto, puede que no sea tan rápido en enormes conjuntos de datos.

Este comportamiento potencialmente disminuye enormemente la vida útil de mis unidades (SSD).

Bueno, no, en realidad no. Simplemente poner un archivo de paginación fuera de cualquier tamaño no significa que el sistema realmente va a escribir mucho en el archivo de paginación. (A menos que tengas la opción de "borrar archivo de paginación al apagar", e incluso entonces no creo que escriba todo, el Mm sabe qué bloques están en uso y solo debería escribir esos … Nunca he pensado De eso antes, voy a tener que comprobar.)

Si desea ver cuánto material está realmente en su archivo de paginación, utilice la utilidad PerfMon. Hay un grupo de contadores para el archivo de página, y por supuesto quieres el contador "% use". Interprete este porcentaje por el tamaño real del archivo (como se muestra en el Explorador).

Se utiliza mucho espacio y ya que el espacio en un SSD es bastante caro, esto es una preocupación para la mayoría de nosotros. Una cosa que podría intentar es poner un archivo de paginación de tamaño razonable, digamos 4 o 8 GB, en su SSD, luego adjuntar una unidad de roya giratoria y poner un archivo de paginación grande en eso. O si desea un SSD y nada más para su archivo de paginación, compre un pequeño barato sólo para el segundo archivo de paginación.

    Intereting Posts