drop_cachesの前に「同期」が必要ですか?

drop_cachesの前に「同期」が必要ですか?

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」で見ることができます。

答え1

とにかくstackoverflowから答えを得て、いくつかの実験を通して確認しました。

「同期」はダーティキャッシュのみをクリーンアップします。キャッシュが残っています。 drop_cachesはダーティキャッシュに触れることなくクリーンなキャッシュのみを削除します。したがって、すべてのメモリを解放するには、フラッシュデーモンがまだ変更をディスクに書き込んでいない場合は、drop_cachesの前に同期する必要があります。

この小さな実験のための私のブログ -

LinuxストレージI / OのO_DIRECT、O_SYNCフラグ、バッファ、およびキャッシュは正確に何ですか?

スタックオーバーフローリンク -

drop_cachesの前に「同期」が必要ですか?

関連情報