qemu-kvm 从低使用率来宾回收内存

Dev*_*von 5 memory qemu kvm-virtualization virtio

有没有办法透明地回收或防止使用 qemu-kvm 来宾的内存?

场景A:

来宾在高峰时段使用 8GB 的​​ RAM,它在晚上返回到 4GB 的使用量,但来宾仍然要求主机提供 8GB 的​​ RAM。

场景B:

来宾使用 2GB 的 RAM,但页面缓存中有 6GB 的 RAM。来宾要求主机提供 8GB 的​​ RAM,但其中最多 6GB 可能是在另一个来宾系统中可能更重要的 RAM。


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

Mic*_*ton 5

您可以通过编辑 XML 在 libvirt guest 虚拟机中打开自动气球:

<memballoon model='virtio'>
Run Code Online (Sandbox Code Playgroud)

虚拟内存气球设备采用一个参数 autodeflate,默认为off。将其设置on为启用自动气球。

<memballoon model='virtio' autodeflate='on'>
Run Code Online (Sandbox Code Playgroud)

请注意,virt-manager 中没有 GUI 选项来启用或禁用此设置。

如果您手动调用 qemu(请保持理智,不要这样做),然后添加,automatic=true到气球设备,例如-device virtio-balloon,automatic=true.

自动气球需要 qemu/kvm 1.3.1 或更高版本。

请注意,这可能无法解决所有内存争用问题;最好有足够的 RAM 来运行所有虚拟机。

  • 设备 virtio-balloon 没有“automatic=true”选项。libvirt 的 `autodeflate` 对应于 `deflate-on-oom=on`。 (9认同)