Linux での不要なスワッピング

Linux での不要なスワッピング

時々、コンピューターが不必要にスワップを開始するようです (メモリ使用率は約 25%)。その理由がわかりません。

Perl スクリプトを実行しているときに最も頻繁に発生するようですが、これらは負荷の高いスクリプトではなく、Perl が特定の量のメモリしか認識できないという記述は見つかりませんでした。スワップの使用は、スクリプトの終了後、Firefox、Banshee などを閉じた後でも継続します。X を再起動すると問題が解決する場合もありますが、完全な再起動が必要な場合もあります。

これは私にとって大きな問題です。なぜなら、何らかのものがスワップを開始すると、他のすべてもスワップを開始するように見えるからです。プログラムを閉じる、またはビューを切り替えるなどの基本的な操作にかかる時間はどんどん長くなります。チェックしないままにしておくと、このスワップの使用によって、最終的にはコンピューターが無期限にスラッシング状態になり、キー入力にさえ反応しなくなります。

私は Ubuntu 9.04、2.6.28-15 カーネルを実行しており、4GB の RAM を搭載しており、通常は約 25% の使用率です。

また、「swappiness」を下げることも試みましたが、うまくいきませんでした。

答え1

私の提案は、swappiness を 0 に設定することです。

swappiness を「低い数値」に設定すると、スワップの使用頻度が減る可能性がありますが、0 に設定すると、カーネルは別のコード パスを強制的に実行し、すべてのメモリ割り当てで、スワップ領域を使用する前に、まず使用可能なすべてのメモリとキャッシュを使い切るように強制されます。

次のコマンドを発行すると、swappiness をゼロに設定できます。

エコー 0 > /proc/sys/vm/swappiness

関連情報