El uso de memoria de la máquina virtual no aparece en el Administrador de tareas

28

Hay algo acerca de la administración de memoria de Windows y su relación con TaskManager que no entiendo y espero que alguien pueda iluminarme.

Si estoy ejecutando una máquina virtual (no importa si es Virtual PC 2007, Virtual Server 2005 o VirtualBox, ya que actúan de la misma manera) y aparece el Administrador de tareas. Puedo ver en la pestaña de procesos algunas entradas para la VM pero Los valores de memoria son bastante pequeños (alrededor de 30 MB). Obviamente, no incluye la memoria que realmente está consumiendo la propia máquina virtual. Ninguna de las varias columnas relacionadas con la memoria que puede hacer visibles parece funcionar de manera diferente. El uso de memoria en la pestaña Rendimiento parece ser correcto para el uso de memoria total, incluida la VM.

Entonces, mi pregunta es ¿por qué el uso de memoria de la VM (que será de 100 MB) aparece en la pestaña Procesos?

Scott Bussinger
fuente

Respuestas:

30

VirtualPC, HyperV y probablemente productos similares usan algo llamado memoria bloqueada del controlador, que no es visible en Process Explorer, Task Manager, etc. RAMMap le mostrará la memoria bloqueada del controlador utilizada por un proceso.

Sajee
fuente
1
Para el registro RAMMap es Vista o superior solamente.
Tim Abell
1
RAMMap no mostró memoria bloqueada para un proceso, sí mostró memoria bloqueada total
NeDark
Solo para señalar a los demás, no dijo que la memoria bloqueada del proceso. Dijo que el conductor bloqueó la memoria. Así es como funciona la memoria dinámica. Si no le gusta o cree que está jugando con su aplicación, puede configurar la VM para memoria estática en lugar de dinámica. He visto que algunas aplicaciones de Java tienen problemas al usar memoria dinámica en una máquina virtual, y configurarlas como estáticas solucionó la falla .
John C
¿Qué proceso asigna realmente esa memoria? He probado el VMMap de SysInternals y cuando eliges el VBoxHeadless.exeproceso correcto (es una hoja en la rama del árbol de procesos, es decir, no tiene otro hijo, puedes usar, por ejemplo, Process Explorer para encontrarlo), esa memoria "perdida" aparece debajo de Bytes privados y Conjunto de trabajo de ese proceso (aunque Process Explorer muestra mucho menos para ambos valores). Así que estoy un poco confundido por qué muestran valores diferentes, pero VMMap parece mostrar el número real .
Dawid Ferenczy Rogožan
6

Cualquier sistema de virtualización alojado como los que enumeró incluirá un controlador de dispositivo que se ejecuta dentro del núcleo del sistema operativo host. Esto es necesario ya que los programas en modo de usuario no pueden emitir las instrucciones necesarias para crear una máquina virtual.

La razón por la que no ve la memoria en el administrador de tareas es que está buscando en la memoria los programas en modo de usuario asociados con las máquinas virtuales, y no el controlador de dispositivo en modo kernel que realmente asignó la memoria para las máquinas virtuales.

Jake Oshins
fuente
¿Qué proceso asigna realmente esa memoria? He probado el VMMap de SysInternals y cuando eliges el VBoxHeadless.exeproceso correcto (es una hoja en la rama del árbol de procesos, es decir, no tiene otro hijo, puedes usar, por ejemplo, Process Explorer para encontrarlo), esa memoria "perdida" aparece debajo de Bytes privados y Conjunto de trabajo de ese proceso (aunque Process Explorer muestra mucho menos para ambos valores). Así que estoy un poco confundido por qué muestran valores diferentes, pero VMMap parece mostrar el número real .
Dawid Ferenczy Rogožan
5

Para ver la cantidad de memoria que usa una máquina virtual, debe asegurarse de tener la columna Conjunto de trabajo visible en su Administrador de tareas. A menudo solo el conjunto privado es visible.

Para habilitar esta columna:

1) Inicie el Administrador de tareas

2) Ir a la pestaña Procesos

3) Ver> Seleccionar columnas

4) Asegúrese de que "Memoria - Conjunto de trabajo" esté marcado

Por ejemplo, el conjunto privado de la máquina virtual que estoy ejecutando en este momento es de 43 MB, mientras que el conjunto de trabajo es de 2,3 Gb

Mark Henderson
fuente
1
¿Cuál es el uso total de la aplicación de memoria? ¿Conjunto de trabajo + conjunto privado o solo conjunto de trabajo?
zendar
2
Quizás sea diferente en diferentes versiones de Windows, pero en Windows 7 eso no es lo que estoy viendo. Los números del "Conjunto de trabajo" son mayores que los números del "Conjunto de trabajo privado", pero no lo suficientemente remotamente como para dar cuenta de la memoria de la VM. He probado todas las columnas relacionadas con la memoria y ninguna lo hace. Esto es con Windows Virtual PC y VirtualBox. ¿Qué versión de Windows y qué host VM está usando?
Scott Bussinger
Desafortunadamente, no hay un número único que indique "cuánta memoria" está usando un proceso, ya que tiene complicaciones como memoria compartida, memoria asignada a archivos, memoria paginada y algunas otras. Aquí hay una buena explicación de algunos conceptos: stackoverflow.com/questions/1984186/…
tylerl
No creo que el Conjunto de trabajo te esté diciendo nada útil en este caso. Dentro de la VM, informa que usa aproximadamente 6 GB de memoria, mientras que los procesos de VirtualBox no consumen más de 100 MB en sus conjuntos de trabajo .
Dawid Ferenczy Rogožan