qemu-kvm 从低使用率客户机回收内存

qemu-kvm 从低使用率客户机回收内存

有没有办法透明地回收 qemu-kvm 客户机的内存,或者阻止使用内存?

场景 A:

客人在高峰时段使用了 8GB 的​​ RAM,晚上的使用量又回到了 4GB,但是客人仍然向主机索要 8GB 的​​ RAM。

场景 B:

客户机使用 2GB RAM,但页面缓存中有 6GB RAM。客户机从主机索要 8GB RAM,但其中最多 6GB 的 RAM 可能对另一个客户机系统更重要。


我对气球的第一个想法是,客人不会“看到”气球效果,但当发送“气球 2048”时,客人内部的内存实际上减少到~2GB。

答案1

您可以打开自动气球在 libvirt 客户机中通过编辑 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

每天晚上繁忙时段后,在 VM 和/或 VM 主机中执行 cron 操作:

同步;回显 1 > /proc/sys/vm/drop_caches

它删除 fs 缓存并将其作为可用内存返回给系统,然后 KVM/Hypervisor 可以将其视为空闲内存并找到其他用途

也能很好地与 Docker 系统配合使用

相关内容