Bre*_*rsh 5 linux memory cache
我想限制 Linux 服务器将 RAM 分配给磁盘缓存缓冲区,并使其闲置。(CentOS 5,如果重要的话)。我知道,即使只是缓存磁盘,使用每一滴可用的物理 RAM 也是理想的选择 - Linux 在这方面非常擅长。大多数时候我什至不会考虑尝试克服这一点。让我告诉你为什么我想(我不关心监控):
我的公司与第三方就某些虚拟机签订了合同,并且我们的每月账单中包含承诺的内存限制。超额费用非常昂贵。其中 2 个虚拟机运行一个应用程序,该应用程序在进程启动期间仅消耗RAM,但一旦稳定,使用率就会下降很多。开发人员向我保证,这就是这项服务应该做的事情,并且不会很快变得“更好”。因此,我为这些虚拟机配置的 RAM 约为正常运行模式下通常所需的 2 倍。一旦稳定,多余的东西就会被扔进缓冲区缓存,每个人都很高兴。除了财务人员。
我们的提供商根据我们为虚拟数据中心承诺的总量计算分配给缓冲区缓存的 RAM,因此我们每月支付费用。很多。我不相信我关心缓存的任何内容 - 我很乐意以更少的 RAM(即更少的缓存)运行并在文件访问上受到一些性能影响(我假设......)除非应用程序从头开始,需要 RAM 才能真正地交换来回。
因此,我正在寻找一种方法来告诉 Linux“嘿,只使用 1GB(或更好,x%)的可用 RAM 进行磁盘缓存缓冲,是的,继续浪费其余的!”。多年来我们可以节省大量资金,因为如果 RAM 实际上保持空闲并且没有分配给缓冲区,它就不会会计入我们承诺的金额,我们也不必“租用”它。但由于有些东西正在使用它,即使它只是缓冲区缓存,我们也要为此付费。
我搜索了很多地方,大多数都看到这样的问题:“天哪,为什么我的服务器几乎一直处于 100% 状态……”,人们对他们的监控/警报/nms 感到害怕,并从响应中获得教育 - 这不是我的问题; 10 年前我也有过同样的反应,但在这种情况下,我真的不想使用该 RAM,这样当应用程序不需要它时我就不必“支付租金”。
如果您想到其他方法来实现此目的,欢迎提供替代建议。
非常感谢...
小智 2
我不知道你是否可以阻止缓存,但你可以定期要求 linux 删除缓存。此处解释了执行此操作的方法:https://unix.stackexchange.com/questions/87908/how-do-you-empty-the-buffers-and-cache-on-a-linux-system
如果您sync
之前该echo to /proc/sys/vm/drop_caches
命令,它应该释放大量内存。
Linux 不会通过打开文件并缓存它们来主动填充您的内存。只有真正处于活动状态的文件才会被缓存。这可以是您的应用程序使用的文件,包括程序的二进制代码。
它也可以是日志文件。您可以使用网络日志记录来避免这种情况。
另一种方法可能是在虚拟机中运行应用程序,使用更少的内存,并使用内存磁盘作为交换设备(然后控制 sappiness 级别),但它有点复杂。
我想知道你的提供商如何知道你的系统分配了多少内存但没有使用。ram的那些页,即使不使用,也不会是空的。
归档时间: |
|
查看次数: |
12221 次 |
最近记录: |