Я использую последнюю версию Ubuntu Quantal и запускаю гостевой kvm, у которого должно быть 2048 МБ памяти. Теперь, через несколько часов, я вижу, что процесс kvm этого гостя составляет около 2700 МБ, так что на 700 МБ больше, чем гость должен иметь возможность использовать. Я имею в виду небольшие накладные расходы вроде 1%, но не 30% ?!
root 8631 74.0 22.2 4767484 2752336 ? Sl Nov07 512:58 kvm -cpu kvm64 -smp sockets=1,cores=2 -cpu kvm64 -m 2048 -device virtio-blk-pci,drive=drive-virtio0,id=virtio0,bus=pci.0,addr=0xa,bootindex=100 -drive file=rbd:data/vm-disk-1,if=none,id=drive-virtio0,cache=writeback,aio=native -device virtio-net-pci,netdev=net0,bus=pci.0,addr=0x12,id=net0,mac=02:7a:86:e6:1a:6c,bootindex=200 -netdev type=tap,id=net0,vhost=on -usbdevice tablet -nodefaults -enable-kvm -daemonize -boot menu=on -vga cirrus
root 8694 0.0 0.0 0 0 ? S Nov07 0:00 [kvm-pit/8631]
Как это возможно и как этого избежать?
Вы можете использовать устройство virtio bubble, чтобы попытаться вернуть память в систему, но это помогает только в том случае, если гостевая ОС не использует всю свою память.
KVM действительно нуждается в некоторой памяти для работы, но я считаю, что многое из этого будет заменено через некоторое время.
Кроме того, если вы в конечном итоге запускаете множество похожих виртуальных машин, убедитесь, что у вас включено объединение одинаковых страниц в Linux. Это позволит совместно использовать память от похожих виртуальных машин; требует большей загрузки ЦП, но того стоит с большим количеством виртуальных машин. Я думаю, что сейчас это по умолчанию в ubuntu
Одна из возможных проблем может заключаться в том, что вы используете cache = writeback на вашем диске. которые могут съесть часть вашей памяти помимо памяти, используемой гостем.
Не было времени проверить, так ли это, но это предположение.