我启动 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内存,但是客户机使用的内存大小可能只有2G。
我想要指定客户机可用的最大内存、客户机使用的内存量以及 qemu 占用的内存量。
我应该怎么办?
答案1
QEMU 不像 Hyper-V 那样支持动态客户内存分配。
它确实支持 API(通过 QEMU 对象模型)和手动控制virtio-气球设备(如果虚拟机中存在)。只需将其添加-device virtio-balloon
到命令行即可。(还有一种动态添加和删除虚拟内存 DIMM 的方法,但我对此并不熟悉。)
您可以使用 QEMU Monitor 控制台发出命令balloon 1234
,其中1234
是目标 RAM 量(以兆字节为单位)。您还可以使用它info balloon
来获取当前分配。
您可以使用各种方法访问 QEMU Monitor,包括套接字和键盘快捷键。
虚拟器也封装了此功能(或者可能是较新版本中的动态 DIMM 功能)。您可以在虚拟机上定义“当前”和最大内存大小。