スワップが始まったときにコンピューターがフリーズするのを防ぐにはどうすればよいですか?

スワップが始まったときにコンピューターがフリーズするのを防ぐにはどうすればよいですか?

私は Java プログラマーとして働いているため、大量のメモリを消費する複数のプログラムを同時に実行しなければならないことがよくあります。

メモリがいっぱいになり、Linux がスワッピングを開始すると、コンピューターはほぼ完全にフリーズします。ハードディスクへの書き込みが大量に行われ、すべての反応が非常に遅く、まったく反応しないこともよくあります。X でマウスを動かしてもまったく反応しないことがあり、数秒の遅延が発生することもあります。クリックには通常数分の遅延が発生します。TTY に変更できる場合もあります (長い遅延あり)。そこでは通常、遅延なく入力できますが、ログインしようとすると、ユーザー名を入力してからパスワード プロンプトが表示されるまでに数分かかり、通常はログインがタイムアウトしたことを示すエラー メッセージが表示されます。そのため、通常、唯一の可能性はコンピューターを再起動することです。

ハードディスクへの他の集中的な書き込みも、コンピュータの速度を大幅に低下させることに気付きました。自分のコンピュータでファイルをコピーするときには、システムがほとんど使用できなくなるため、rsync を使用して帯域幅を制限することがありました。

どうしてそうなるのでしょうか? 現時点では、スワッピングを完全にオフにすることがより有効であるように思われます。そうすると一部のプロセスがクラッシュする可能性があり、それは残念ですが、現時点での代替手段は、コンピューターをオフにしてすべてのプロセスをクラッシュさせることです。

私はカーネル 3.6.2-gentoo を搭載した Gentoo Linux を使用しており、HDD 上に 10 GB のスワップ パーティションがあります。

答え1

スワッピングは、UNIX/Linux システムにとっては非常に悪いものです。これまで見てきたように、特にディスク システムの場合、スワッピングをサポートするには、大量のリソースが必要になります。結局のところ、システムはメモリをディスクとの間でやり取りしているため、メモリを使用する他のプログラムを実行できます。

システムで実行中のすべてのプログラムを分析して削除した後でもスワップが続く場合は、マシンにメモリを追加するのが最善のアプローチです。

関連情報