qemu-kvm 從低使用率客戶機回收內存

qemu-kvm 從低使用率客戶機回收內存

有沒有辦法透明地回收或阻止使用 qemu-kvm 來賓的記憶體?

場景一:

訪客在高峰時段使用 8GB RAM,晚上會恢復到 4GB 使用量,但訪客仍向主機索取 8GB RAM。

場景B:

來賓使用 2GB RAM,但頁面快取中有 6GB RAM。來賓從主機請求 8GB RAM,但最多 6GB 的 RAM 在另一個來賓系統中可能更重要。


我對氣球的第一個想法是,訪客不會「看到」氣球效果,但是當發送「氣球2048」時,訪客內部的記憶體實際上減少到~2GB。

答案1

您可以開啟自動氣球在 libvirt guest 中透過編輯 XML:

<memballoon model='virtio'>

虛擬記憶體氣球設備佔用一個參數 autodeflate,預設為off.將其設定為on啟用自動氣球。

<memballoon model='virtio' autodeflate='on'>

請注意,virt-manager 中沒有 GUI 選項可啟用或停用此設定。

如果您手動調用 qemu(請保持理智,不要這樣做),然後添加,automatic=true到氣球設備,例如-device virtio-balloon,automatic=true.

自動氣球需要 qemu/kvm 1.3.1 或更高版本。

請注意,這可能無法解決所有記憶體爭用問題;最好有足夠的 RAM 來運行所有虛擬機器。

答案2

每晚繁忙時段後,在虛擬機器和/或虛擬機器主機中執行此 cron 任務:

同步; echo 1 > /proc/sys/vm/drop_caches

它會刪除 fs 快取並將其作為可用記憶體傳回給系統,然後 KVM/Hypervisor 可以將其視為可用記憶體並找到其他用途

也可以很好地與 docker 系統配合使用

相關內容