5.3.12. /proc/<PID>/


OOM (Out of Memory) は、スワップ領域を含む利用可能なメモリーがすべて割り当てられているコンピューティング状態を指します。この状況が発生すると、システムがパニックになり、期待どおりに機能しなくなります。/proc/sys/vm/panic_on_oom には OOM の動作を制御するスイッチがあります。1 に設定すると、カーネルは OOM でパニックになります。0 の設定は、OOM で oom_killer という名前の関数を呼び出すようカーネルに指示します。通常、oom_killer は不正なプロセスを強制終了でき、システムは存続します。
これを変更する最も簡単な方法は、新しい値を /proc/sys/vm/panic_on_oom にエコーすることです。
~]# cat /proc/sys/vm/panic_on_oom
1
~]# echo 0 > /proc/sys/vm/panic_on_oom
~]# cat /proc/sys/vm/panic_on_oom
0
また、oom_killer スコアを調整することで、プロセスが強制終了される優先順位を設定することもできます。/proc/<PID>/ に は、oom_adjoom_score の 2 つのツールがラベル付けされています。oom_adj の有効なスコアは、-16 から +15 の範囲にあります。現在の oom_killer スコアを表示するには、プロセスの oom_score を表示します。oom_killer はスコアが最も高いプロセスを最初に強制終了します。
この例では、PID が 12465 のプロセスの oom_score を調整して、oom_killer がこれを強制終了する可能性が低くなります。
~]# cat /proc/12465/oom_score
79872
~]# echo -5 > /proc/12465/oom_adj
~]# cat /proc/12465/oom_score
78
また、-17 には特殊な値があり、そのプロセスの oom_killer を無効にします。以下の例では、oom_score は 0 の値を返します。これは、このプロセスが強制終了されないことを示しています。
~]# cat /proc/12465/oom_score
78
~]# echo -17 > /proc/12465/oom_adj
~]# cat /proc/12465/oom_score
0
badness () と呼ばれる関数は、各プロセスの実際のスコアを決定するために使用されます。これには、確認した各プロセスに 'points' を追加します。プロセススコアは以下の方法で行われます。
  1. 各プロセスのスコアは、メモリーサイズになります。
  2. (カーネルスレッドを含まない)プロセスの子のメモリーサイズもスコアに追加されます。
  3. プロセススコアは 'niced' プロセスのスコアを増やし、長時間実行されるプロセスの場合に減少します。
  4. CAP_SYS_ADMIN および CAP_SYS_RAWIO 機能を持つプロセスのスコアは減少します。
  5. 最後のスコアは、oom_adj ファイルに保存されている値でビットシフトされます。
したがって、oom_score 値が最も高いプロセスは、おそらく特権のない、最近起動したプロセスであり、その子とともに大量のメモリーを使用し、'niced' があり、生の I/O を処理しません。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.