我启动 qemu 的命令如下所示:
$ qemu-system-x86_64 \
-name guest=win10 \
-m 4830196K \
-enable-kvm \
-drive file=win10.img,format=raw,index=0,media=disk,if=virtio \
......
qemu按照我给的参数占用了4G内存,但是guest机器使用的内存大小可能只有2G。
我想指定访客可用的最大内存、访客使用多少内存以及 qemu 占用多少内存。
我应该怎么办?
QEMU 不像 Hyper-V 那样支持动态客户内存分配。
它确实支持 API(通过 QEMU 对象模型)和virtio-balloon设备的手动控制(如果存在于 VM 中)。只需添加
-device virtio-balloon
到命令行即可。(还有一种动态添加和删除虚拟内存 DIMM 的方法,但我对此并不熟悉。)您可以使用 QEMU Monitor 控制台发出
balloon 1234
命令,其中1234
是目标 RAM 量(以兆字节为单位)。您还可以使用info balloon
获取当前分配。您可以使用各种方法访问 QEMU Monitor,包括套接字和键盘快捷键。
libvirt也封装了这个特性(或者可能是新版本中的动态 DIMM 东西)。您可以在 VM 上定义“当前”和最大内存大小。