ᕕ( ᐛ )ᕗ Jimyag's Blog

balloon 内存管理

内存 balloon 是指在虚拟化环境下,宿主机可以将分配给虚机的部分内存进行回收给 其他虚机或其他进程 使用的一种技术,目前 kvm,xen,vmware 等都对 balloon 技术提供支持,这里只介绍 kvm 下的 balloon 技术。

气球 中的内存是指 host 中可以使用的内存,给气球充气,就是讲 guest 中不使用的部分内存放到气球中让 host 中的进程使用。给气球放气,就是将气球中的内存释放给 guest 使用。

qemu 中 balloon 的使用

# 在 qemu 的配置文件中添加

[device "balloon0"]
driver = "virtio-balloon"

启动虚拟机,我们只开了 1G 内存

在虚拟机内部看到有 1G 内存,符合预期,我们调整 balloon 的大小

观察到 balloon 的大小被调整到 512M,虚拟机内部的内存也被调整到 512M,符合预期

在宿主机上 虚拟机进程占用的 内存也相应减少了

image

image

image

image

image

balloon 可以做什么

防止 host 出现 OOM 如果宿主机有 8G 内存,开了 4 个 2G 的虚拟机,但是 每个虚拟机并不是一直都会占用 2G 内存,在宿主机内存占用过高时,可以动态调整每个虚拟机的内存大小,防止 host 出现 OOM。

参考

  1. https://kvm-forum.qemu.org/2020/KVM%20Forum%202020%20Virtio-%28balloon%20pmem%20mem%29%20Managing%20Guest%20Memory.pdf

#qemu #balloon