有没有办法限制Linux中的“缓冲区”内存使用?

我想限制一个Linux服务器的RAM分配到磁盘高速caching缓冲区,而不是闲置。 (如果有关系的话,CentOS 5)。 我知道,即使只是caching磁盘,使用每一滴物理内存都是理想的select – Linux非常棒。 大多数时候我甚至不考虑试图击败这一点。 让我告诉你为什么我想(我关心监测):

我的公司与第三方签订了一些虚拟机的合同,我们在每月的账单上都有一个承诺的内存限制。 Overages是疯狂的昂贵。 其中2个虚拟机运行一个应用程序,只是在启动过程中 RAM,但一旦稳定,使用率就会下降很多。 开发人员向我保证,这个服务应该做什么,不会很快变好。 所以我保留这些虚拟机configuration了正常运行模式通常需要的大约2倍的RAM。 一旦稳定,额外的东西就会被扔进缓冲区caching,大家都很开心。 除了财务人员。

我们的服务提供商将虚拟数据中心的总数量与分配给缓冲区caching的内存进行了对比,因此我们每个月都会支付这笔费用。 很多。 我不相信我关心什么是caching – 我会很高兴地运行较less的RAM(即更less的caching),并采取一些文件访问性能打击(我承担…),除了当应用程序从头开始,并需要内存不会真正交换到地狱和背部。

所以我正在寻找一种方法来告诉Linux,“嘿,只有1GB(或者更好,x%)的可用内存来caching磁盘caching,只要继续,浪费剩下的时间吧!” 这些年来我们可以节省很多钱,因为如果这个RAM实际上保持空闲并且没有分配给缓冲区,那么它就不会计入我们承诺的数额,我们也不必“出租”它。 但是由于有些东西正在使用它,所以即使它只是缓冲区caching,我们也会付钱。

我search了很多东西,大部分都是看到“OMG为什么我的服务器总是几乎100%”这样的问题,以及那些被吓坏了的关于他们的监控/报警/ nms和受到反馈教育的人​​ – 这不是我的问题; 10年前我也有同样的反应,但是在这种情况下,我真的不想使用RAM,所以当应用程序不需要时,我不必“付房租”。

备用build议欢迎,如果你想另一种方法来完成这一点。

非常感谢…

我不知道你是否可以防止caching,但你可以经常要求Linux放弃caching。 解决方法是: https : //unix.stackexchange.com/questions/87908/how-do-you-empty-the-buffers-and-cache-on-a-linux-system如果您只syncecho to /proc/sys/vm/drop_caches命令之前,它应该释放大量内存。

Linux不会主动通过打开文件和caching文件来填充内存。 只有实际活动的文件才会被caching。 这可以是您的应用程序使用的文件,包括程序的二进制代码。

它也可以是日志文件。 你可以使用networking日志来避免这种情况。

另一种方法是在虚拟机上运行你的应用程序,使用更less的ram,以ram-disk作为交换设备(然后控制sappiness的水平),但是这有点复杂。

我想知道你的提供者是如何知道你的系统有多lessram被分配但是没有被使用的。 即使不使用,这些内存页也不会是空的。