統計を取るために Python スクリプトを実行していますが、実際に使用されているメモリは 10% 程度と低く、他のプロセスでメモリがこれ以上消費されることはありません。しかし、 を使用するとfree -m
、メモリが 95% 近く使用されていることがわかります。問題は、スクリプトで大量のファイル読み取りを行う必要があるため、Linux メモリ キャッシュのメカニズムが問題を引き起こしているのではないかということです。echo 1 >> /proc/sys/vm/drop_caches
動作はしますが、手動のようです。メモリ コストを削減し、ファイルの読み取りに悪影響を与えないようにするにはどうすればよいでしょうか。
答え1
Linux カーネルは効率化のためにファイルを自動的にメモリにキャッシュします。これは悪いことではありません。実行中、free -m
キャッシュで使用されているメモリの量が右側に表示されます。アプリケーションがメモリを必要とする場合、カーネルはキャッシュの一部を解放します。自分で管理しようとしないでください。
答え2
ここに実際の問題があるとは思いません。
合計メモリ使用量を気にするのはなぜですか? 何か問題がありますか?
Linux はメモリをできるだけ効率的に使用しようとします。空きメモリが大量にあり、大量のファイルを読み込んでいる場合、空きメモリを使用してそれらのファイルをキャッシュします。アクティブなメモリが大量にあれば、キャッシュに使用するメモリは大幅に少なくなります。これが Linux の本来の動作です。メモリをまったく使用したくない場合は、コンピュータからチップを取り外してください。
まれに、大量のキャッシュが悪影響を及ぼす場合があります。メモリ割り当てのバーストの直前に、常に読み取りのバーストが発生する場合があります。特定のケースでは、メリットがまったくなく、最後の 0.1% のパフォーマンス コストを削減する必要がある場合もあります。寿命が限られた RAM を使用する組み込みシステムを使用している場合もあります。そのようなケースがある場合は、その内容を教えてください。