是否必须在drop_caches之前运行同步?

时间:2013-07-06 05:55:03

标签: performance caching linux-kernel

我已经阅读了很多文档说,在做echo [1,2,3]>之前做一个“同步”是个好主意。的/ proc / sys目录/ VM / drop_caches。我无法理解为什么需要它,drop_cache是​​一个非破坏性的操作,drop_cache不会删除脏数据。我也看到过echo 1>的行为。 / proc / sys / vm / drop_caches首先将脏数据提交回磁盘,然后释放缓存。这可以通过/ proc / meminfo“Dirty”& “回写”。

2 个答案:

答案 0 :(得分:5)

写入drop_caches只释放 clean 缓存。

执行sync会写回已更改的数据,即将缓存转换为干净缓存。

答案 1 :(得分:2)

我通过做一个小实验证实了这一点。

“sync”仅使脏缓存清理缓存。缓存仍然保留。 drop_caches不会触及脏缓存,只会丢弃干净的缓存。因此,为了使所有内存都空闲,必须先在drop_caches之前进行同步,以防刷新守护进程未将更改写入磁盘。

关于这个小实验的博客 -

What are exactly O_DIRECT, O_SYNC Flags, Buffers & Cached in Linux-Storage I/O?