Linuxファイルキャッシュのサイズを制限できますか?

Linuxファイルキャッシュのサイズを制限できますか?

私はXubuntu 14.04 64ビット、Linuxバージョン3.8.0-25、8GB RAMを実行しています。

私は一度に多数のデータファイル(〜23k)、合計約45Gのデータをロードするスクリプト(MATLABにその価値がある)を持っています。私が経験している問題は、各ファイルがロードされた後もファイルキャッシュに残っていることです。 Linuxは、他のメモリコンテンツよりもこれらのファイルをメモリにキャッシュすることを好むようです。これにより、他のすべてのアイテムが強制的にスワップされ、システムがクロール速度を遅くします。毎秒複数のファイルを読み取っているので、これはかなり速く進みます。各ファイルを一度だけ読み取るため、ファイルの使用が完了した後にファイルをキャッシュに保存する必要はありません。

私はある程度動作するスワップをオフにしようとしましたが、悪い解決策のようです(他のプログラムがあまりにも多くのメモリを使い始めたときにもう一度失敗しました)。ファイルキャッシュにLinuxで使用するRAMの量を制限する方法はありますか?

ベストアンサー1

答えではありませんが、コメントが長すぎます。

Linuxのメモリ管理は、非常にスマートな人々によって長寿命で慎重に調整されており、通常、メモリに保存するアイテムと削除するアイテムを選択するときに正しい決定を下すのに優れた役割を果たします。

残念ながら、あなたのワークロードはその決定とあまり互換性がないようです。 :-(しかし、あなたのレポートにはかなり驚きましたが、実際にはキャッシュから何かを削除するのではなく、ダーティメモリを強制的に置き換えることを好むことがよくあります. Bを削除するのは難しい選択肢かもしれませんが、キャッシュからコンテンツCを削除することとダーティメモリDをスワップに書き込むことの決定はコストがはるかに低いため、コンテンツCを削除することをお勧めします。

将来的には、特定のキャッシュメモリが不要になったことをLinuxに知らせる方法がありますが、それはシステムコールですが、madvise()MATLABMADV_DONTNEEDスクリプトでそのシステムコールを呼び出すのが難しいようです。

とにかく、ファイルキャッシュのサイズを減らすことが実際に望む作業ではないと思います。 MATLAB自体、GUI環境などのシステムソフトウェア用のスクリプト、実行可能ファイルとライブラリ、ランタイムファイルとプラグインなどもファイルキャッシュにあるため、ファイルキャッシュから強制的に削除することを忘れないでください(ファイルキャッシュを好む)、またはヒープメモリやその他のファイルベース以外のマッピングを容易にします。これにより、交換と同様にシステムが遅くなります。

おすすめ記事