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