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フラグ、バッファ、およびキャッシュは正確に何ですか?
スタックオーバーフローリンク -