OOM-Killerが要求が多すぎるプロセスを直接終了できないのはなぜですか?

OOM-Killerが要求が多すぎるプロセスを直接終了できないのはなぜですか?

ここで説明してください:Linuxはメモリが不足しているかどうかを尋ねずにプロセスを終了し始めますか?OOM-Killerはovercommit_memory次の方法で設定できます。

  • 2 = 過度に使用されない。要求が多すぎると、割り当ては失敗します。
  • 0、1 =過度に使用される(経験的または常に)。殺す一部実際には、あまりにも多くのメモリにアクセスするときのいくつかの経験的方法に基づくプロセスです。

さて、私はこれを完全に誤解しているかもしれませんが、実際にあまりにも多くの割り当てられたメモリにアクセスしようとするプロセスを終了するオプション(またはデフォルトオプションではない理由)がないのはなぜですか?

ベストアンサー1

次の状況を考えてみましょう。

  • 4GBの利用可能なメモリがあります。
  • 欠陥のあるプロセスには3.999 GBが割り当てられます。
  • タスクマネージャを開き、ランアウェイプロセスを終了します。タスクマネージャは0.002GBを割り当てます。

終了するプロセスがメモリを要求した最後のプロセスである場合、タスクマネージャは終了します。

または:

  • 4GBの利用可能なメモリがあります。
  • 欠陥のあるプロセスには3.999 GBが割り当てられます。
  • タスクマネージャを開き、ランアウェイプロセスを終了します。 Xサーバーは、タスクマネージャウィンドウを処理するために0.002GBを割り当てます。

これで X サーバーがシャットダウンしました。

それは問題を引き起こさなかった。ちょうど「間違った時間に間違った場所にいたもの」でした。メモリが残っていないときは、最初に多くのメモリを割り当てるプロセスにもなりますが、もともとすべてのメモリを使用するプロセスではありません。

おすすめ記事