我有一个服务器运行一个erlang应用程序,例如riak ..
在出现问题之前,像这样的内存使用情况
但是很长一段时间后,缓存已清除并且系统开始使用交换。
现在我有两个问题。
以下是最重要的信息:
更新:此问题再次出现。
由于我已经运行命令
sudo swapoff -a
因此系统不使用交换,系统运行良好。现在的问题是为什么系统发布页面被缓存了..?
系统将释放pgae缓存的情况是什么?
更新:我已经解决了这个问题。
我从《了解Linux内核》一书中得到了答案
该书说,如果有足够的可用内存,则该页将在不确定的时间段内保留在高速缓存中,然后可以在不访问磁盘的情况下由其他进程重用。
我认为这意味着如果页面缓存在系统中停留了很长时间,系统将释放缓存。
阅读linux源码后,我将对其进行更新。为什么即使有足够的内存,系统也会释放缓存的页面?
谢谢
更新
如果我们在一个进程发现没有足够的内存时交换内存,那么该进程将需要很长时间才能获得足够的内存。它将需要调用页面框架回收。
后端有一个global_reclaim。不检查交换值
最佳答案
看一下您正在运行的进程(例如:mysql,java等...)
如果您为这些进程设置的内存限制太低,有时又需要更多,则丢失的内存不会被带到缓冲区上,而是会在交换时被占用。
我认为这可以解释您的问题。