メモリが不足すると、システムがハングします。

メモリが不足すると、システムがハングします。

私はeeePC 900aを持っています。ディスクには8GBのフラッシュがありますが、RAMは1GBしかありません。インストールされたLinuxディストリビューションはArchLinuxです。

システムのメモリが足りない場合極度に応答なし:TTY1に切り替えたり、マウスポインタを動かすなどの操作を実行するのに数秒/分かかります。時にはシステムが停止しているようです。 3年前にそのままにしておきましたが、今まで何も変わりませんでした。

ディスクがすでに小さすぎてスワップスペースに多くの書き込みをすると、フラッシュカードの寿命が大幅に短縮されるため、このeeePCにスワップパーティション/ファイルを作成しないようにしたいと思います。また、ファイル/パーティションを交換すると、問題が確実に解決されるのではなく、問題が変わるだけだと思います。

メモリ不足時にカーネルが任意のアプリケーションを終了するようになっていませんか?なぜ失敗するのですか(または長い時間がかかります)?

私は数ヶ月/数年前にこれについてもっと調べてみましたが、実際に効果があるものが見つかりませんでした...

答え1

OOM-killer(Out of Memory Killer)はキーボードの組み合わせで直接呼び出すことができます。

SysRq-F

SysRq キーは通常、キーボードの PrtSc キーと組み合わせられます。

OOM-killerは一部のプロセスを終了し、システムが再応答します。

上記のコメントでこの機能の提案をしてくれたRamanに感謝します。

PS:これは私に多くの助けになりました。 Chromeやメモリを大量に使用するソフトウェアで問題が発生した場合は、これが問題に関する最も有用なアドバイスであるという意見に同意します。ただし、OOM-killerはいくつかの非常に重要なプロセスを終了する可能性があるため、慎重に使用する必要があります。

答え2

最近、私は私の問題に対する解決策を見つけました。

Linux OOM Killerが正しく機能していないため、ユーザースペースのOOM Killerの使用を開始しました。。 Cで書かれており、かなり構成可能で、私にとっては魅力的です。

私はまた、次のようないくつかの選択肢について聞きました。Facebook OOMD、サーバー上で実行するように開発されましたが、まだ試していません。

答え3

自然な状態は、アプリケーションデータがRAMにあり、ファイルがディスクにあることです。
パフォーマンスの観点から見ると、理想的な状況は、頻繁に使用されるデータがRAMにあり、現在不要なデータがディスクにあることです。
一般的なシステムでは、カーネルは理想的な状態を達成するために2つのタスクを実行します。

  • しばらく未使用のアプリケーションデータをディスクに移動できるのがスワッピング(Swapping)です。
  • 最近使用されたファイルのデータはRAMに保存されます。これはディスクキャッシュ(ディスクから読み取ったデータ用)とディスクバッファ(ディスクに書き込むデータ用)です。

一般的なシステムでは、RAMのかなりの部分がキャッシュとバッファのみに使用されます(通常の数値は50%)。 RAMは限られたリソースであるため、一部のアプリケーションデータをスワップに置き換える必要があります(スワップはRAMを使用するより良い方法がある場合にのみ必要です)。

このような状況は、スワップのないシステムでは、アプリケーションデータがRAMのほとんどすべての部分を使用してキャッシュ用のスペースがほとんどない場合に発生します。これにより、システムの速度が遅くなる可能性があります。カーネルは実際に必要になるまでアプリケーションのシャットダウンを開始しません。アプリケーションが使用可能なメモリの99%しか使用していない限り、システムは引き続き実行されますが、常にファイルデータをディスクからロードして再ロードする必要があるため、非常に遅くなります。この時点で、スワップを使用するシステムが同じアプリケーションを実行する方が高速です。

この問題の詳細については、次を参照してください。このlkml議論そしてこのブログ投稿

ディスクキャッシュ用に最小RAMの量を予約するようにカーネルに指示する直接的な方法がわかりません。あなたはできますRAMの小部分をスワップ空間に設定、たぶんでも圧縮。持つこの分野の成功報告、あなたの特定の状況を保証するものではありませんが。

答え4

これは2007年以来知られているバグです。メモリ使用量が高すぎると、システムは停止します。

この場合、Windowsはユーザーに1つ以上のアプリケーションを閉じるように警告するダイアログボックスを表示します。

関連情報