Sub*_*are 7 linux cache linux-kernel
我读过很多文档说,sync在做之前先做一个是个好主意echo [1,2,3] > /proc/sys/vm/drop_caches。我无法理解为什么需要它,因为 drop_cache 是一种非破坏性操作,并且 drop_cache 不会删除脏数据。我还看到了一种行为,即echo 1 > /proc/sys/vm/drop_caches首先将脏数据提交回磁盘,然后释放缓存。这可以通过/proc/meminfo“Dirty”和“Writeback”看出。
无论如何,我在 stackoverflow 上得到了答案,我通过一个小实验证实了这一点。
“同步”只会让脏缓存清理缓存。缓存仍然保留。drop_caches 不会接触脏缓存,只会丢弃干净的缓存。所以为了释放所有内存,有必要在 drop_caches 之前先进行同步,以防刷新守护进程没有将更改写入磁盘。
我关于这个小实验的博客 -
Linux 存储 I/O 中的 O_DIRECT、O_SYNC 标志、缓冲区和缓存究竟是什么?
Stackoverflow 链接 -