我正在调查一台用于科学数据分析的服务器。它运行的是 RHEL 6.4,有近 200GB 的 RAM。对于通过 SSH 的用户来说,它的运行速度非常慢,经过一番探索后,我很快注意到 RAM 使用率非常高。奇怪的是,即使在空闲状态下,它仍然使用大量 RAM:
我还查看了htop
,没有发现任何正在运行的进程占用了超过 0.1% 的 RAM。所以我想知道发生了什么?目前唯一正在运行的用户启动的进程是两个 NFS 挂载共享之间的 rsync。
我尝试重新启动服务器,几分钟后响应速度快了很多,但随后内存使用量再次飙升。
有什么方法可以查明为什么内存使用率如此之高?
答案1
它之所以很高,是因为这样可以节省精力。释放内存需要付出努力。如果你这样做了,那么让它再次被使用也需要付出努力。因此,为了节省精力,现代操作系统只有在别无选择的情况下才会释放内存。
如果你在想“我现在想释放内存,以便以后使用”,那就打消这个想法吧。内存不必现在释放,以后才能使用。它可以现在使用,然后还稍后再使用。所以这里没有痛苦的权衡。使用内存是纯粹的胜利。
不管您的问题是什么,内存使用率过高都不是问题。这是系统正常运行的标志。
答案2
大约 190G 的内存被文件系统缓存使用,这通常不是什么问题。
看看cached
顶部的字段。
答案3
你也可以运行
echo 3 /proc/sys/vm/drop_caches
如果你感觉焦躁不安;)