KVM 中的动态内存分配

Dynamic memory allocation in KVM

我有 Ubuntu 16.04 主机,我在上面安装了一个使用 KVM 的虚拟来宾(Windows 服务器 2012)。总可用 RAM 为 16 GB。

我已经安装了 virtio 气球驱动程序。我给windows分配了4GB当前内存和12GB最大内存。但是 windows 将 8GB 未分配内存视为已用内存。

当我打开一些繁重的应用程序时,分配的内存限制为 4GB 以上的可用内存。在 windows 中使用全部内存时,计算机的行为方式相同(不 运行 顺利)。

windows 可以看到所有 12 GB RAM 但只能使用 4 GB。 如何确保 windows 可以利用全部 12GB 内存?

您描述的行为只是气球驱动程序的操作方式。管理程序公开了一个安装了 12 GB 虚拟 DIMM 的虚拟机。然后,气球驱动程序会占用该内存的 8 GB,并将其返回给管理程序。它获取内存的方式因来宾 OS 而异,但本质上它必须分配内存以使其看起来正在使用,从而防止来宾 OS 使用它。气球驱动程序不会根据来宾工作负载要求自动调整。因此,如果您的 windows 客人需要超过 4 GB,您需要在主机 OS 上使用 libvirt/virsh 来更改气球级别,给一些 "used" 8 GB回客OS。如果您希望来宾 OS 查看并使用完整的 12 GB,根本不使用 balloon 驱动程序。