memory windows-xp taskmanager

memory - "Uso de memoria" mayor que "Tamaño de VM" en el Administrador de tareas de WinXP



windows-xp taskmanager (6)

En mi Administrador de tareas de Windows XP, algunos procesos muestran un valor más alto en la columna Uso de memoria que el VMSize. Mi instancia de Firefox, por ejemplo, muestra 111544 K como uso de memoria y 100576 K como VMSize.

De acuerdo con el archivo de ayuda de Task Manager, Mem Usage es el conjunto de trabajo del proceso y VMSize es la memoria comprometida en el espacio de direcciones virtuales.

Mi pregunta es, si el número de páginas comprometidas para un proceso es A y el número de páginas en la memoria física para el mismo proceso es B, ¿no debería ser siempre B ≤ A? ¿No es el número de páginas en la memoria física por proceso un subconjunto de las páginas comprometidas?

¿O esto tiene que ver con el intercambio de memoria entre los procesos? Por favor explique. (Tal vez mi definición de ''Working Set'' está fuera de lugar).

Gracias.


El Administrador de tareas de XP simplemente está equivocado. EDIT: si no me crees (y alguien no, porque votaron por esto), lee Firefox 3 Memory Usage . Yo cito:

Si está viendo Memory Usage en Windows XP, sus números no serán tan buenos. La razón: Microsoft cambió el significado de "bytes privados" entre XP y Vista (para mejor).

Parece que MS se confundió. Solo cambias algo así si está roto.

Pruebe Process Explorer en su lugar. Qué Administrador de tareas etiqueta "Tamaño de VM", Process Explorer (más correctamente) etiqueta "Bytes privados". Y en Process Explorer, Working Set (y Bytes privados) siempre son menores o iguales que Virtual Size, como era de esperar.


Puede encontrar alguna explicación en The Memory Shell Game

Conjunto de trabajo (A): este es un conjunto de páginas de memoria virtual (que están comprometidas) para un proceso y están ubicadas en la RAM física. Estas páginas pertenecen completamente al proceso. Un conjunto de trabajo es como una lista de "actualmente / recientemente trabajando en estas páginas".

Memoria virtual : esta es una memoria que un sistema operativo puede tratar. Independientemente de la cantidad de RAM física o espacio en el disco duro, este número está limitado por la arquitectura de su procesador.

Memoria comprometida : cuando una aplicación toca una página de memoria virtual (confirmaciones de lectura / escritura / programación), la página se convierte en una página comprometida. Ahora está respaldado por una página de memoria física. Por lo general, esta será una página de RAM física, pero podría ser una página en el archivo de página en el disco duro, o podría ser una página en un archivo mapeado en memoria en el disco duro. El administrador de memoria maneja las traducciones de la página de memoria virtual a la página física. Una página virtual podría estar ubicada en la memoria RAM física, mientras que la página al lado podría estar en el disco duro en el archivo de la página.

PERO: Uso de PF (Archivo de página): esta es la cantidad total de páginas comprometidas en el sistema. No le dice cuántos se escriben realmente en el archivo de la página. Solo le indica qué parte del archivo de página se usaría si todas las páginas comprometidas se tenían que escribir en el archivo de página al mismo tiempo.

De ahí B> A ...

Si aceptamos que B representa el "uso de mem" o también el uso de PF, el problema proviene del hecho de que representa posibles usos de la página : en Xp, este espacio de archivos potencial se puede usar como un lugar para asignar esas páginas de memoria virtual que los programas tienen pedido, pero nunca puesto en uso ...


El uso de memoria es la cantidad de memoria electrónica actualmente asignada al proceso.

VM Size es la cantidad de memoria virtual actualmente asignada al proceso.

asi que ...

  • Una página que existe solo electrónicamente aumentará solo el uso de la memoria.
  • Una página que existe solo en el disco aumentará solo el tamaño de VM.
  • Una página que existe tanto en la memoria como en el disco aumentará ambas.

Algunos ejemplos para ilustrar:

Actualmente en mi máquina, iexplore tiene 16,000K de uso de memoria y 194,916 VM de tamaño. Esto significa que la mayor parte de la memoria utilizada por Internet Explorer está inactiva y se ha intercambiado al disco, y solo una fracción se mantiene en la memoria principal.

Contraste con mcshield.exe con 98,984K de uso de memoria y 98,168K VM Size. Mi conclusión aquí es que McAfee AntiVirus está activo, con mucha memoria en uso. Dado que ha estado funcionando durante bastante tiempo (todo el día, desde el arranque), espero que la mayoría de los 98.168 K VM Size sean copias de la memoria electrónica, aunque no hay nada en el Administrador de tareas que confirme esto.


Memoria virtual

Suponga que su programa (por ejemplo, Oracle) asignó 100 MB de memoria al iniciarse: su tamaño de VM aumenta en 100 MB, aunque no se tocan páginas físicas o de disco adicionales. es decir, la VM no es más que mantenimiento de la memoria.

La memoria física total disponible + la memoria del archivo de paginación es la memoria máxima que TODOS los procesos en el sistema pueden asignar. El sistema hace esto para asegurarse de que en cualquier momento si los procesos realmente comienzan a consumir toda la memoria que asignó, el sistema operativo puede proporcionar las páginas físicas reales requeridas.

Memoria privada

Si el programa copia 10 MB de datos en esos 100 MB, OS detecta que no se han asignado páginas al proceso correspondiente a esas direcciones y asigna 10 MB de páginas físicas a la memoria privada de su proceso. (Este proceso se llama error de página)

Set de trabajo

Definición: el conjunto de trabajo es el conjunto de páginas de memoria que un programa ha tocado recientemente.

En este punto, estas 10 páginas se agregan al conjunto de trabajo del proceso. Si el proceso continúa y copia estos datos en otro caché de 10 MB previamente asignado, todo lo demás permanece igual, pero el conjunto de trabajo vuelve a subir en 10 Mb si esas páginas antiguas no están en el conjunto de trabajo. Pero si esas páginas ya están en el conjunto de trabajo, entonces todo está bien y el conjunto de programas de trabajo sigue siendo el mismo.

Comportamiento de conjunto

Imagine que su proceso nunca toca las primeras 10 páginas nunca más, en cuyo caso estas páginas se recortan del conjunto de trabajo de su proceso y posiblemente se envían al archivo de página para que el SO pueda incluir otras páginas que se utilizan con más frecuencia. Sin embargo, si no hay requisitos urgentes de baja memoria, entonces este acto de paginación no necesita hacerse y el sistema operativo puede actuar como si fuera rico en memoria. En este caso, el conjunto de trabajo simplemente deja que estas páginas permanezcan.

Cuando es Working Set> Virtual Memory

Ahora imagine que el mismo programa desasigna todos los 100 Mb de memoria. El tamaño de la VM de los programas se reduce inmediatamente en 100 MB (recuerde VM = contabilidad de todas las solicitudes de asignación de memoria)

El conjunto de trabajo no necesita verse afectado por esto, ya que eso no cambia el hecho de que esos 10 Mb de páginas en las que se tocó recientemente. Por lo tanto, esas páginas aún permanecen en el conjunto de trabajo del proceso, aunque el SO puede reclamarlas siempre que lo requiera.

Esto haría efectivamente que la VM <funcione. Sin embargo, esto se rectificará si inicia otro proceso que consume más memoria y el SO recupera las páginas del conjunto de trabajo.


La fragmentación de la memoria es probablemente la razón: si el proceso asigna 1 octeto, cuenta para 1 octeto en el VMSize, pero este 1 octeto requiere una página física (4K en el sistema operativo Windows). Si después de asignar / liberar memoria, el proceso tiene un segundo octeto que está separado por más de 4K del primero, este segundo octeto siempre se almacenará en una página física aparte de la 1. Entonces, el recuento de VM Size es de 2 octetos, pero el uso de la memoria es de 2 páginas == 8K

Entonces, el hecho de que MemUsage sea mayor que VMSize muestra que el proceso hace una gran cantidad de asignación y desasignación y fragmenta la memoria. Esto podría deberse a que el proceso se inició hace mucho tiempo. O bien, hay lugar para la optimización ;-)


Asignación de archivos

Una forma muy común de cómo el uso de Mem puede ser mayor que VM Size es mediante el uso de objetos de mapeo de archivos (por lo tanto, puede estar relacionado con la memoria compartida, ya que la asignación de archivos se usa para compartir memoria). Con la asignación de archivos puede tener una memoria comprometida (ya sea en el archivo de página o en la memoria física, no lo sabe), pero no tiene una dirección virtual asignada. La memoria confirmada aparece en el uso de Mem, mientras que el uso de direcciones virtuales usadas se rastrea por tamaño de VM.

Ver también:

¿Qué significa "VM Size" en el Administrador de tareas de Windows? en

Rompiendo la barrera de 32 bits en mi blog de desarrollador

Discusión de Usenet Todavía confunde por qué el conjunto de trabajo es más grande que la memoria virtual