3

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

4

2 回答 2

8

写入drop_caches只释放干净的缓存。

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

于 2013-07-07T15:54:15.323 回答
3

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

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

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

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

于 2013-07-08T06:03:54.367 回答