我读过很多文档说,在执行echo 1,2,3 >/proc/sys/vm/drop_cache之前做一个"sync“是个好主意。我不能理解为什么需要它,drop_cache是一个非破坏性的操作,脏数据不会被drop_cache删除。我还看到了echo 1>/proc/sys/vm/drop_ cache首先将脏数据提交回磁盘,然后释放缓存的行为。这可以通过/proc/meminfo "Dirty“& "Writeback”看到。
发布于 2013-07-07 23:54:15
写入drop_caches只释放干净的缓存。
执行sync写回更改的数据,即将脏缓存转换为干净缓存。
发布于 2013-07-08 14:03:54
我通过一个小实验证实了这一点。
"sync“只使脏缓存清理缓存。缓存仍被保留。drop_caches不接触脏缓存,只丢弃干净的缓存。因此,为了释放所有内存,有必要在drop_caches之前先进行同步,以防刷新守护进程尚未将更改写入磁盘。
我关于这个小实验的博客-
What are exactly O_DIRECT, O_SYNC Flags, Buffers & Cached in Linux-Storage I/O?
https://stackoverflow.com/questions/17500134
复制相似问题