Em um Windows 10 OS
sistema, instalei VirtualBox
com 4 GB de RAM, usando CentOs 7
como sistema operacional. Ao ligar a VM, a RAM
utilização do sistema operacional host aumenta conforme o esperado até um determinado nível ( o sistema geral tem 8 GB de RAM ).
Espero que o sistema operacional da VM tenha sua cota de RAM (4 GB) e todos os aplicativos iniciados dentro da VM usarão sua RAM e deixarão o sistema operacional host em paz.
No entanto, quando executo o docker dentro da VM, o overall RAM consumption of the entire system increases
, e quando inicio alguns contêineres baseados em java dentro da VM, o consumo de RAM do sistema aumenta novamente. Repeti esse experimento e as observações foram semelhantes.
Estou um pouco confuso com esse comportamento. Eu esperava que, uma vez que a VM iniciasse com o sistema operacional do host, ela reservaria 4 GB de memória para si mesma e todos os aplicativos iniciados dentro (docker etc.) usariam a RAM reservada para a VM, mas vejo o consumo de RAM do host ou do sistema aumentando em vez disso.
Observei o aumento do consumo de RAM no gerenciador de tarefas do Windows 10 e no Resmon.
É possível que aplicativos docker ou java iniciados dentro da VM Linux de alguma forma vejam toda a memória do sistema disponível para uso e tentem usá-la em vez disso? Eu teria pensado que isso não aconteceria, pois uma VM fornece um bom nível de isolamento do sistema operacional host.
Se o comportamento é que o sistema operacional Linux ocupa menos RAM no início na inicialização e só aumenta quando há aplicativos dentro da VM exigindo mais, é razoável esperar que, seja qual for o estado dos aplicativos, o consumo de RAM da VM diminuirá não aumentar além da cota de 4 GB alocada para ele?
Não, a VM não reserva toda a RAM que pode usar. Sua RAM é alocada conforme necessário. Não é incomum em data centers que a RAM acumulada das VMs em execução em um servidor exceda em muito o tamanho real da RAM do hardware.