我有一个虚拟服务器,提供商按资源使用量向我收费。我可以设置最大 RAM 限制,但我仍然需要按实际使用的 RAM 付费,而不是按最大 RAM 付费(价格根据实际使用量每 5 分钟计算一次)。
正常情况下,使用所有 RAM 是可以的,但是 Linux 策略“未使用的 RAM 是浪费的 RAM”不适合这种核算,因为机器最终将使用所有可用的 RAM,即使其中大部分仅用作磁盘缓存,我仍然需要为此付费。
我喜欢将提供商的限制设置得稍微高一些,以满足 RAM 的峰值需求。我能以某种方式限制用于缓存等的内存量吗?假设我预留了 3 GB,而我的应用程序 + 系统服务通常需要 1GB,但如果真的有需要,我的应用程序可以额外使用 2GB 的 RAM,但在空闲时,我想限制缓存仅占用最多 500 MB 的可用 RAM,这样我就不必一直为 3 GB 付费。
答案1
链接答案如何清空 Linux 系统上的缓冲区和缓存向您展示如何释放缓存(pagecache、dentries 和 inode)。您需要反复执行此释放活动,可能来自 cron。我不知道它是否会在 OpenVZ 容器中按您想要的方式工作,因为 OpenVZ 的内存管理似乎很复杂(或者可能没有足够好的文档记录)。我并不是要批评 OpenVZ;它是一种很好的虚拟化解决方案,可以将许多系统压缩到物理服务器上。
凉爽的,linux-ftools可以帮助您了解每个文件使用了多少个缓存页。
您还可以尝试交换性,并将其设置为 100 以进行积极交换。