web-dev-qa-db-ja.com

Linuxでキャッシュをフラッシュする必要があるのはいつですか?

私は出くわしました this 。そして、 this 何かが戻ってきたのを見たことを思い出しました。ユーザーがキャッシュをフラッシュする必要があるのか​​、それともシステムのベンチマークを行う場合、またはキャッシュをフラッシュするための他の使用シナリオがあるのか​​、誰かが詳しく説明できますか?

3
shirish

ダーティセクターがメディアにフラッシュされるようにする必要がある場合は、syncを呼び出す必要があります。

一般的なケースの1つは、ddイメージをfsフラッシュスティックにusbし、conv=fdatasyncオプションを提供しない場合です(これはほとんどのレシピにありません)あちこちで公開されています):フラッシュデバイスの書き込み速度が非常に遅いため、特にスティックに以前に多くのセクターが書き込まれている場合は、すべてが書き込まれるまでに数分かかることがあります。

syncプログラムは、終了時にすべてが確実にフラッシュされるようにします。

3
Serge

ベンチマーク以外に、キャッシュをフラッシュする必要があるシナリオはありません。 Linuxキャッシュは巧妙に管理されており、使用するメモリは常にオンデマンドで利用できます。したがって、システムの速度を低下させる以外に、フラッシュしても何も達成されない可能性があります。

この問題に関する良い読み物については、 このWebページ を参照してください。

2
xhienne

Serge および xhienne は、Linuxのキャッシュ管理について、特に干渉によって何かを得るのは難しいという重要なことをすでに述べています。

ただし、ベンチマークとは別に、キャッシュを削除することでメリットが得られる特殊なケースがあります。

たとえば、大きなRAM(32 GB)のノートブックがあります。もちろん、Linuxはそれを利用しますが、これは問題ありません。しかし、システムの休止状態になると、すべての有効なメモリコンテンツは永続ストレージに書き込む必要があります。私の場合はスワップします。したがって、事前にメモリを解放すると、休止状態のプロセスが大幅に高速化されます。

だから私は

echo 3 > /proc/sys/vm/drop_caches

syncのすぐ後に、休止状態のフックの1つで。私の場合、速度の向上は最大で0.5桁です。

もちろん、休止状態からの再開についても同じことが言えます。

警告:休止状態から再開した後、キャッシュが再びいっぱいになるまで、システムの反応は著しく遅くなります。

1
Jürgen