如何让qemu动态获取内存?

如何让qemu动态获取内存?

我启动 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 功能)。您可以在虚拟机上定义“当前”和最大内存大小。

相关内容