我有一台色卡司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
也有性能问题,但在突然断电的情况下,数据已经写入到磁盘,这样可能会有一定的意义,所以您将会安全。