我有一个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命令花费这么长时间?
答案 0 :(得分:1)
命令本身应该立即完成。后果,即一切都需要再次缓存,可能需要花费很多时间。它没有意义:如果你可以完全删除它,那将是一个好主意。 (这也是StackOverflow中的主题)
编辑:它是否在sync
之前执行echo 3 > /proc/sys/vm/drop_caches
,例如
sync; echo 3 > /proc/sys/vm/drop_caches
?因为sync
操作会刷新所有写入磁盘的操作,可能需要一些时间才能完成。此外,虽然sync
也存在性能问题,但它可能有一定意义,如果突然断电,数据已经写入磁盘,因此您将是安全的。