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

时间:2013-12-10 21:38:21

标签: linux kernel nfs nas

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

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

最大的问题是,当发生这种情况时,机器上的负载会突然增加,磁盘利用率也会增加,使得所有NFS流量都会爬行,直到命令最终完成,此时事情会再次响应。

NAS本身有16个内存,7个驱动器采用raid6配置(加上热备盘),根本没有驱动器问题(根据S.M.A.R.T.测试)。

所以问题是:什么会导致drop_caches命令花费这么长时间?

1 个答案:

答案 0 :(得分:1)

命令本身应该立即完成。后果,即一切都需要再次缓存,可能需要花费很多时间。它没有意义:如果你可以完全删除它,那将是一个好主意。 (这也是StackOverflow中的主题)

编辑:它是否在sync之前执行echo 3 > /proc/sys/vm/drop_caches,例如 sync; echo 3 > /proc/sys/vm/drop_caches?因为sync操作会刷新所有写入磁盘的操作,可能需要一些时间才能完成。此外,虽然sync也存在性能问题,但它可能有一定意义,如果突然断电,数据已经写入磁盘,因此您将是安全的。