
Existe uma maneira de recuperar ou impedir o uso de memória de forma transparente de um convidado qemu-kvm?
Cenário A:
Um convidado usa 8 GB de RAM durante os horários de pico, retorna para 4 GB de uso à noite, mas o convidado ainda reivindica 8 GB de RAM do host.
Cenário B:
Um convidado usa 2 GB de RAM, mas possui 6 GB de RAM no cache de páginas. O convidado está reivindicando 8 GB de RAM do host, mas até 6 GB podem ser RAM que poderiam ter mais importância em outro sistema convidado.
Meu primeiro pensamento sobre o balão foi que o convidado não "veria" o efeito do balão, mas ao enviar o "balão 2048", a memória dentro do convidado seria reduzida para ~ 2 GB.
Responder1
Você pode ligarbalão automáticoem um convidado libvirt editando o XML:
<memballoon model='virtio'>
O dispositivo balão de memória virtual levaum parâmetro autodeflate
, cujo padrão é off
. Defina-o como on
para ativar o balão automático.
<memballoon model='virtio' autodeflate='on'>
Observe que não há opção GUI no virt-manager para ativar ou desativar esta configuração.
Se você estiver chamando o qemu manualmente (salve sua sanidade e não faça isso), adicione ,automatic=true
ao dispositivo balão, por exemplo -device virtio-balloon,automatic=true
.
O balão automático requer qemu/kvm 1.3.1 ou posterior.
Observe que isso provavelmente não resolverá todos os seus problemas de contenção de memória; é melhor simplesmente ter RAM suficiente para executar todas as suas máquinas virtuais.
Responder2
cronize isso na VM e/ou no host da VM todas as noites após horários de pico:
sincronizar; eco 1 > /proc/sys/vm/drop_caches
ele descarta o cache fs e o devolve como memória disponível para o sistema, então o KVM/Hypervisor pode vê-lo como memória livre e encontrar outros usos para ele
também funciona muito bem com sistemas docker