VMware 是否知道 Linux 内存磁盘缓存?

VMware 是否知道 Linux 内存磁盘缓存?

在我的VMware环境中的虚拟机被标记为“压力“因为它始终需要大约 75% 的总 RAM。

它是一个 Debian 9 VM,所以我多次连接 SSH 来调查这个问题;我注意到free命令输出平均显示总共 2 GB 中只有大约 840MB RAM 被使用,另外 1GB 用于 buff/cache。

据我所知,如果需要更多内存,Linux 内核可以回收 buff/cached RAM:VMware vSphere是否了解这种机制,或者 VM 是否存在一些错误配置?

free -h编辑:这是该虚拟机的命令的典型输出:

               total       used        free      shared  buff/cache   available
Mem:           2.0G        927M         76M        156M        1.0G        772M
Swap:          2.0G        293M        1.7G

答案1

简而言之,VMWare 不知道(或关心)客户机使用 RAM 的用途,只知道客户机正在使用 RAM。客户机正在使用 RAM,即使客户机可以选择不使用它来做某些事情。

VMWare 只关心可供客户机使用的 RAM 总量,尤其是可供其他客户机使用的 RAM 量(当主机 RAM 超额预订时,这一点至关重要)。客户机选择执行(或不执行)的任何缓存/缓冲/交换都是其职责,因此如果您想配置该行为,请在客户机中执行。VMWare 根本不会尝试修改客户的内存管理实践。

如果您希望 VMWare 忽略该框的 RAM 使用情况,我建议您重新配置它的警报。

答案2

我认为 VMware balloon 驱动程序与此相关。如果由于所有这些虚拟机仅将 RAM 用于磁盘缓存而导致虚拟机管理程序的 RAM 不足,则 vmware tools balloon 驱动程序将产生对 RAM 的需求之内VM 本身,迫使 VM OS 减少用于缓存的 RAM 数量,并释放该 RAM 以供虚拟机管理程序在其他地方使用。

相关内容