
Gibt es eine Möglichkeit, die Speichernutzung eines QEMU-KVM-Gasts transparent zurückzufordern oder zu verhindern?
Szenario A:
Ein Gast nutzt während der Spitzenzeiten 8 GB RAM, nachts sinkt die Nutzung auf 4 GB, der Gast beansprucht jedoch weiterhin 8 GB RAM vom Host.
Szenario B:
Ein Gast nutzt 2 GB RAM, hat aber 6 GB RAM im Seitencache. Der Gast beansprucht 8 GB RAM vom Host, aber bis zu 6 GB davon könnten RAM sein, der in einem anderen Gastsystem wichtiger sein könnte.
Mein erster Gedanke zum Thema Ballooning war, dass der Gast den Ballooning-Effekt nicht „sehen“ würde, aber beim Senden von „Balloon 2048“ wird der Speicher im Gast tatsächlich auf ~2 GB reduziert.
Antwort1
Sie können einschaltenautomatisches Ballonfahrenin einem Libvirt-Gast durch Bearbeiten des XML:
<memballoon model='virtio'>
Das virtuelle Speicher-Balloon-Gerät übernimmtein Parameter autodeflate
, der standardmäßig auf eingestellt ist off
. Setzen Sie ihn auf , on
um automatisches Ballooning zu aktivieren.
<memballoon model='virtio' autodeflate='on'>
Beachten Sie, dass es im Virt-Manager keine GUI-Option zum Aktivieren oder Deaktivieren dieser Einstellung gibt.
Wenn Sie QEMU manuell aufrufen (bewahren Sie bitte Ihren Verstand und tun Sie dies nicht), fügen Sie ,automatic=true
dem Balloon-Gerät z. B. hinzu -device virtio-balloon,automatic=true
.
Autoballooning erfordert qemu/kvm 1.3.1 oder höher.
Beachten Sie, dass dies wahrscheinlich nicht alle Ihre Speicherkonfliktprobleme lösen wird. Am besten ist es, einfach über genügend RAM zu verfügen, um alle Ihre virtuellen Maschinen auszuführen.
Antwort2
Führen Sie dies jeden Abend nach den Stoßzeiten in der VM und/oder im VM-Host aus:
synchronisieren; echo 1 > /proc/sys/vm/drop_caches
Es löscht den FS-Cache und gibt ihn als verfügbaren Speicher an das System zurück. Anschließend kann der KVM/Hypervisor ihn als freien Speicher betrachten und andere Verwendungsmöglichkeiten dafür finden.
funktioniert auch sehr gut mit Docker-Systemen