Eu tenho três VMs em execução no Red Hat Enterprise Linux com 8 GB de RAM, cada uma das VMs tem 3 GB alocadas e também executo uma VM de 512 MB. Se considerarmos também o uso de memória do sistema operacional convidado (geralmente 1,5 GB devido a um antivírus obrigatório corporativo), isso adiciona 11 GB de RAM. Para poder executar todas essas coisas sem interromper meu computador, uso o ZRAM com 7 GB de uso máximo de memória. Na maioria das vezes dificilmente tenho qualquer problema desta forma, mas em troca, minha memória é geralmente muito cheia, com cerca de 700 MB de RAM física livre e aproximadamente a mesma quantidade de ZRAM livre.
O que eu descobri nessa configuração é que, para salvar com êxito o estado de uma VM usando o comando Save de virt-manager
(que é traduzido como virsh
' managedsave
), devo adicionar algum espaço de troca extra e quando isso acontecer, minha VM salvará em torno da taxa na qual o espaço de troca é lido, porque pareceria que o algoritmo de salvamento de estado da VM copia blocos de memória do convidado para a memória do host e salva esses blocos em disco. disco, o que significa que salvar o estado de uma VM requer alguma quantidade de memória extra. Por tentativa e erro, encontrei a memória virtual extra mínima necessária para salvar minhas VMs de 3 GB como 1 GB, ou seja, devo emitir swapon <pagefile>
em um arquivo de 1 GB formatado como espaço de troca, o que me leva a acreditar que você precisa de pelo menos 30% da memória atribuída da sua VM está disponível para salvar seu estado. Além disso, quando eu tenho ZRAM suficiente disponível, mas minha memória principal está quase cheia, eu posso ver no GKrellm como meu sistema está bagunçando páginas a toda velocidade no espaço de troca na memória.
Então, alguém sabe exatamente por que o KVM-QEMU requer memória extra para salvar o estado de uma VM?
Tags qemu memory kvm virtual-memory rhel