我有一台 16GB RAM 的服务器,运行着几个 Linux 虚拟机(大约 10 个),它们执行几个不同的任务。这些机器在默认配置下,会用缓存填满我给它们的内存。
尽管这对于物理主机而言是一种理想的行为,但在我的设置中,此缓存实际上消耗的是主机无法释放的实际主机 RAM,并迫使我为虚拟机设置相对较低的 RAM 量(不超过(16 - host cache)/number of vms
)。这是非常不理想的,因为系统失去了灵活性,无法处理来自具体虚拟机的零星 RAM 请求。
我想到的唯一方法是限制内核可用于缓存的 RAM 数量(或使缓存更快过期),但我没有找到有关如何执行此操作的任何文档。大多数论坛帖子都提到 linuxatemyram.com 或类似网站,而且我也没有在 /proc/sys/vm/ 下看到任何相关参数。
也许有人能对此提供一些见解?我将不胜感激。
答案1
您可以将值修改/proc/sys/vm/vfs_cache_pressure
为大于 100(默认值)的值。如果将值增加到 100 以上,则会导致内核优先选择回收 dentry 和 inode。