Quando vi a interface do usuário no VirtManager pela primeira vez, pensei que "Máximo" é a quantidade de RAM que aparece para o convidado e "Atual" é a RAM reservada quando a VM é iniciada. Achei que o VirtManager reservaria automaticamente mais RAM quando o convidado solicitasse até o tamanho "Máximo".
Mas quando eu testei, não funcionou dessa maneira. O convidado sempre vê o valor "Atual" como seu tamanho total de RAM. Então, por que existe "Máximo"?
E o "Atual" também não está alocado, porque, embora eu tenha definido 4092 MB, o Gerenciador de Tarefas no host mostra que está usando 920 MB.
A memória máxima é a memória na qual o convidado é inicializado - mas não pode usar tudo se a memória atual for limitada a um valor inferior.
Alguns exemplos:
Esse tipo de reserva é para evitar a adição de memória a quente , o que é mais difícil do que inicializar com mais memória e reivindicar de volta/marcar como sem uso alguma parte da própria memória.
Ao observar seus
qemu-system-x86_64
processos no gerenciador de tarefas (oups
outop
), você vê apenas a memória realmente usada pelo convidado (mais alguma memória necessária para o próprio emulador): por exemplo, inicializar um kernel linux básico + espaço do usuário pode ser feito com ~ 256M e, se nenhum processo estiver sendo executado dentro do convidado, você verá uma utilização de memória tão baixa para o próprio processo do emulador (mesmo que o convidado tenha 4G de memória atual/máxima atribuída). Em outras palavras, a alocação do kernel linux é um caso de cópia na gravação: não é feito de uma só vez, mas sob demanda real do kernel/espaço do usuário.Advertência: os convidados do Windows zeram toda a memória na inicialização, forçando efetivamente uma alocação completa de memória do lado do host (até a memória atual ) na inicialização do convidado.