Linux:echo 3> / proc / sys / vm / drop_caches需要几小时才能完成

我有一台色卡司N8900 NAS,它是基于Linux的文件服务器,通过NFS向六个客户端提供文件。 出于某些原因,Thecus支持尚未解释,它运行一个脚本,每60秒检查/ proc / meminfo,如果磁盘caching超过可用RAM的50%,他们做一个“echo 3> / proc / sys / vm / drop_caches “命令来刷新caching。

撇开是否合理的问题,实际的“echo 3> / proc / sys / vm / drop_caches”命令可能需要几个小时才能完成,这对我来说似乎太长了。

最大的问题是,当发生这种情况时,机器上的负载就会像磁盘利用率一样激增,从而使得所有的NFS通信都被抓取,直到命令最终完成,此时事情又会有所反应。

NAS本身有16个内存,7个raid6configuration的驱动器(加上热备份),根本没有驱动器问题(根据SMARTtesting)。

所以问题是:什么会导致drop_caches命令这么久?

放弃caching不应该花费太多时间。 你确定它真的不是从那个echo命令返回几个小时?

caching被删除后,机器速度变慢是有道理的,因为之前从caching中读取的文件现在必须从磁盘读取。

命令本身应该立即完成。 其后果,即一切需要再次caching,可能需要很长的时间。 这没有意义:如果你能完全删除它,这将是一个好主意。

也许你在看错误的命令:在echo 3 > /proc/sys/vm/drop_caches之前是否sync执行sync; echo 3 > /proc/sys/vm/drop_caches sync; echo 3 > /proc/sys/vm/drop_caches ? 由于刷新所有写入磁盘的sync操作可能需要一点时间才能完成。 此外,虽然sync也有性能问题,但在突然断电的情况下,数据已经写入到磁盘,这样可能会有一定的意义,所以您将会安全。