我有Ubuntu 16.04主机,我使用KVM安装了虚拟客户机(Windows server 2012)。可用的RAM总量为16 GB。
我已经安装了virtio气球驱动程序。我已经为Windows分配了4GB当前内存和12GB最大内存。然而,Windows将8GB未分配的内存视为已用内存。请参阅附图。 Memory usage in Guest
当我打开一些繁重的应用程序时,分配的内存仅限于4GB的可用内存。当在窗口中使用完整内存时(无法顺利运行),计算机的行为方式相同。
Windows可以看到所有12 GB RAM,但只能使用4 GB。 如何确保Windows可以利用12GB内存?
答案 0 :(得分:4)
您描述的行为就是气球驱动程序的操作方式。虚拟机管理程序公开了一个安装了12 GB虚拟DIMM的虚拟机。然后气球驱动程序获取8 GB的内存并将其返回给虚拟机管理程序。它抓取内存的方式因客户操作系统而异,但实质上它必须分配它以使其看起来正在使用中,从而阻止客户操作系统使用它。气球驱动程序不会根据访客工作负载要求自动调整。因此,如果您的Windows客户需要超过4 GB,您需要在主机操作系统上使用libvirt / virsh来更改气球级别,以便提供一些"使用过的" 8 GB回到客户操作系统。如果您希望客户操作系统看到&使用完整的12 GB,根本不要使用气球驱动程序。