Eu tenho um servidor RHEL6.2 que estou usando para executar máquinas virtuais KVM.
O próprio servidor tem 16 GB de RAM. Eu quero ver a maior VM que eu posso rodar nela e não deixar o processo qemu-kvm ser trocado. O RAM da VM é ~ 15 GB. (Sim, percebo que isso está aumentando o limite, mas leia até o final antes de responder algo como "15GB é demais".)
[root@xxx libvirt]# virsh dumpxml VM2 | grep -i memory
<memory>15000000</memory>
<currentMemory>15000000</currentMemory>
[root@xxx libvirt]# ps -ef | grep kvm
root 872 1 16 10:55 ? 00:03:00 /usr/libexec/qemu-kvm [...] -m 14649 -name VM2 [...]
[root@xxx libvirt]# free -k
total used free shared buffers cached
Mem: 16332640 16194440 138200 0 1544 15700
-/+ buffers/cache: 16177196 155444
Swap: 35651568 7583432 28068136
Mas o RSS do processo KVM tem apenas 880 MB (coluna 6 abaixo). Espero que seja mais de 12-14 GB.
[root@xxx libvirt]# ps -eF | grep kvm
root 872 1 14 4534221 882916 7 10:55 ? 00:03:11 /usr/libexec/qemu-kvm
E, se eu somar o RSS de todos os processos, é apenas ~ 1gig.
[root@xxx libvirt]# ps -eF | awk '{print $6}' | grep '[0-9]' | tr '\n' '+' | sed 's/+$/\n/' | bc
1004064
Aqui estão os processos que são os maiores usuários de memória (RSS, coluna 6).
root 5188 22329 0 27572 1192 4 11:19 pts/0 00:00:00 ps -eF
root 31461 1 0 10746 1236 7 Jul25 ? 00:06:22 [...]
root 6339 6275 0 272676 3288 4 Jul27 ? 00:13:38 [...]
root 2059 1 1 443909 13352 7 Jul17 ? 05:29:11 libvirtd --daemon
root 872 1 13 4534221 928300 2 10:55 ? 00:03:24 /usr/libexec/qemu-kvm [...]
Espero que cerca de 300-500 MB de memória ainda estejam disponíveis para a VM.
UPDATE
Após reiniciar a máquina, não consigo mais reproduzir isso. O sistema agora funciona como eu esperava. Aqui estão esses números esperados.
Ah, devo mencionar. Existe um programa intensivo de memória em execução na VM. Ele aloca 80% da memória total e grava continuamente números aleatórios.
RSS da VM:
[root@hb05b15 ~]# ps -eF | grep kvm
root 7330 1 97 4520362 12483728 2 11:59 ? 00:39:55 /usr/libexec/qemu-kvm [...]
Mem e números de troca:
[root@hb05b15 ~]# free -k
total used free shared buffers cached
Mem: 16332640 13277468 3055172 0 21064 215196
-/+ buffers/cache: 13041208 3291432
Swap: 35651568 0 35651568
Resuma o RSS para todos os processos:
[root@hb05b15 ~]# ps -eF | awk '{print $6}' | grep '[0-9]' | tr '\n' '+' | sed 's/+$/\n/' | bc
12607180