Uso de memória da máquina virtual não aparecendo no TaskManager

28

Há algo sobre o gerenciamento de memória do Windows e seu relacionamento com o TaskManager que eu não entendo e espero que alguém possa me esclarecer.

Se eu estiver executando uma máquina virtual (não importa se é o Virtual PC 2007, Virtual Server 2005 ou VirtualBox, pois eles agem da mesma maneira) e abra o TaskManager, posso ver na guia processos algumas entradas da VM, mas o os valores da memória são razoavelmente pequenos (cerca de 30 MB). Obviamente, não está incluindo a memória realmente consumida pela própria VM. Nenhuma das várias colunas relacionadas à memória que você pode tornar visível parece funcionar de maneira diferente. O uso de memória na guia Desempenho parece estar correto para o uso total de memória, incluindo a VM.

Então, minha pergunta é por que o uso de memória da VM (que terá 100 MB) não aparece na guia Processos?

Scott Bussinger
fonte

Respostas:

30

VirtualPC, HyperV e provavelmente produtos similares usam algo chamado memória bloqueada do driver, que não é visível no Process Explorer, Gerenciador de Tarefas, etc. O RAMMap mostra a memória bloqueada do driver usada por um processo.

Sajee
fonte
1
Para o registro, o RAMMap é apenas o Vista ou superior.
21412 Tim Tim Abell
1
RAMMap não mostram memória bloqueado por um processo, ele fez Show Total ensinei memória bloqueado
NeDark
Apenas para apontar para os outros, ele não disse que processava a memória bloqueada. Ele disse que o motorista bloqueava a memória. É assim que a memória dinâmica funciona. Se você não gostar, ou acha que está mexendo com seu aplicativo, basta configurar a VM para memória estática em vez de dinâmica. Eu já vi alguns aplicativos java terem problemas ao usar a memória dinâmica em uma VM, configurando-os para corrigir a estática estática .
John C
Que processo realmente aloca essa memória? Eu tentei o VMMap do SysInternals e quando você escolhe o VBoxHeadless.exeprocesso certo (é uma folha no ramo da árvore de processos, ou seja, não tem nenhum outro filho, você pode usar, por exemplo, o Process Explorer para encontrá-lo), a memória "perdida" aparece em Bytes particulares e Conjunto de trabalho desse processo (mesmo que o Process Explorer esteja mostrando muito menos para ambos os valores). Estou um pouco confuso por que eles estão mostrando valores diferentes, mas o VMMap parece mostrar o número real .
Dawid Ferenczy Rogožan
6

Qualquer sistema de virtualização hospedado, como os listados, incluirá um driver de dispositivo que será executado no kernel do sistema operacional host. Isso é necessário, pois os programas no modo de usuário não podem emitir as instruções necessárias para criar uma máquina virtual.

O motivo pelo qual você não vê a memória no gerenciador de tarefas é que está procurando na memória os programas no modo usuário associados às máquinas virtuais, e não o driver de dispositivo no modo kernel que realmente alocou a memória para as VMs.

Jake Oshins
fonte
Que processo realmente aloca essa memória? Eu tentei o VMMap do SysInternals e quando você escolhe o VBoxHeadless.exeprocesso certo (é uma folha no ramo da árvore de processos, ou seja, não tem nenhum outro filho, você pode usar, por exemplo, o Process Explorer para encontrá-lo), a memória "perdida" aparece em Bytes particulares e Conjunto de trabalho desse processo (mesmo que o Process Explorer esteja mostrando muito menos para ambos os valores). Estou um pouco confuso por que eles estão mostrando valores diferentes, mas o VMMap parece mostrar o número real .
Dawid Ferenczy Rogožan
5

Para visualizar a quantidade de memória em uso por uma VM, você precisa garantir que a coluna Working Set esteja visível no seu Gerenciador de tarefas. Geralmente, apenas o conjunto privado é visível.

Para habilitar esta coluna:

1) Inicie o Gerenciador de tarefas

2) Vá para a guia Processos

3) Ver> Selecionar colunas

4) Verifique se "Memória - conjunto de trabalho" está marcado

Por exemplo, o conjunto privado da VM em execução no momento é 43mb, enquanto o conjunto de trabalho é 2.3Gb

Mark Henderson
fonte
1
Qual é a quantidade total de aplicativos de memória usados? Conjunto de trabalho + Conjunto privado ou apenas Conjunto de trabalho?
Zendar
2
Talvez seja diferente nas diferentes versões do Windows, mas no Windows 7 não é isso que estou vendo. Os números do "Conjunto de Trabalho" são maiores que os números do "Conjunto de Trabalho Privado", mas não remotamente o suficiente para dar conta da memória da VM. Eu tentei todas as colunas relacionadas à memória e nenhuma delas. Isso ocorre com o Windows Virtual PC e o VirtualBox. Qual versão do Windows e qual host de VM você está usando?
Scott Bussinger
Infelizmente, não há um número único que indique "quanta memória" um processo está usando, pois você se depara com complicações como memória compartilhada, memória mapeada por arquivo, memória paginada e algumas outras. Aqui está uma boa explicação de alguns conceitos: stackoverflow.com/questions/1984186/…
tylerl
Eu não acho que o Conjunto de Trabalho esteja lhe dizendo algo útil neste caso. Dentro da VM, está relatando que usa cerca de 6 GB de memória, enquanto os processos do VirtualBox não consomem mais de 100 MB em seus Conjuntos de Trabalho .
Dawid Ferenczy Rogožan