drop_caches之前是否需要“sync”?

drop_caches之前是否需要“sync”?

我读过很多文档说,sync在执行之前执行 a 是个好主意echo [1,2,3] > /proc/sys/vm/drop_caches。我无法理解为什么需要它,因为 drop_cache 是一个非破坏性操作,脏数据不会被 drop_cache 删除。我还看到了一种行为,echo 1 > /proc/sys/vm/drop_caches首先将脏数据提交回磁盘,然后释放缓存。这可以通过/proc/meminfo“Dirty”和“Writeback”看到。

答案1

无论如何,我在 stackoverflow 上得到了答案,我通过做一个小实验证实了这一点。

“sync”仅使脏缓存变为干净缓存。缓存仍然保留。 drop_caches 不会触及脏缓存,只会删除干净的缓存。因此,为了释放所有内存,有必要在 drop_caches 之前先进行同步,以防刷新守护进程尚未将更改写入磁盘。

我的博客关于这个小实验 -

Linux 存储 I/O 中的 O_DIRECT、O_SYNC 标志、缓冲区和缓存到底是什么?

堆栈溢出链接 -

drop_caches之前“sync”,有必要吗?

相关内容