Como as máquinas virtuais podem consumir tão pouca memória RAM na máquina host física?

24

Estou executando o VirtualBox em uma máquina com Windows XP com 2 GB de RAM. Eu criei uma máquina Ubuntu virtual e aloquei uma memória base de 750MB.

Só para testar, eu rodei 20 coisas ao mesmo tempo na máquina virtual. De acordo com o "top" do Ubuntu, 750 megs de memória estavam sendo usados, bem como considerável espaço de troca.

No entanto, de volta ao Gerenciador de Tarefas do Windows, o VitrualBox estava usando apenas 45.000K de memória. Quando pedi à máquina virtual para fazer mais e mais, o uso da CPU do processo do VirtualBox foi aumentado (no Windows), mas o uso da memória permaneceu o mesmo.

Como uma máquina virtual que está usando 750 MB de memória consome apenas 45 MB de memória em uma máquina física?

Suponho que a resposta é que a máquina virtual não está usando memória real, mas sim memória simulada (ou seja, espaço de troca), mas com certeza parece irritada como se estivesse sendo executada na RAM.

UPDATE: Eu brinquei com perfmon como sugerido. Mesmo resumindo tudo o que posso pensar, ainda parece ocupar menos de 300 megas ... então ainda é um mistério.

Process               VirtualBox     VirtualBox#1     Total
PoolNonpagedBytes     5,840          42,552           48,392
PoolPagedBytes        119,796        166,892          286,688
PrivateBytes          8,884,224      52,719,616       61,603,840
VirtualBytes          75,939,840     161,202,176      237,142,016
Sum                   84,949,700     214,131,236      299,080,936
    
por dggoldst 02.08.2009 / 18:54

4 respostas

7

As colunas no Gerenciador de Tarefas podem dar números enganosos - para uso preciso da memória por processo, você poderia usar o perfmon (Monitor de Desempenho no Painel de Controle) e observar os números de "bytes particulares".

Para mostrar isso, vá em perfmon, clique para adicionar o contador (eu sou um tipo de pessoa Ctrl + I ). O "objeto de desempenho" seria "Processo", com "Bytes privados" na lista de contadores - obviamente, você precisaria selecionar o processo relevante na lista à direita.

    
por 02.08.2009 / 19:58
5

Com algumas soluções de virtualização no Linux, a maneira como eles alocam memória faz com que apareça no kernel do host como um arquivo especial mapeado por memória (assim como o arquivo /proc/kcore special), portanto, é contado na contagem "em cache". a saída de free , não a contagem "usada".

Eu presumo que algo semelhante está acontecendo com seu ambiente Windows: os 45Mb serão usados pelos processos de gerenciamento do VirtualBox, e os 750 alocados para a própria VM serão contados em outro lugar.

    
por 02.08.2009 / 19:31
0

Pode ser memória virtual, arquivos mapeados na memória ou algo semelhante.

Você já tentou exibir outras colunas no Gerenciador de Tarefas?

    
por 02.08.2009 / 19:33
0

Não acredite no gerenciador de tarefas. Não pode ver tudo.

Esse problema é visto com mais freqüência no SQL Server, por exemplo Com o Sql, nunca encontrei alguém que me dissesse uma maneira de obter informações precisas do Gerenciador de Tarefas, o que me levaria a acreditar que o número não está oculto em uma das outras colunas.

    
por 04.08.2009 / 12:59