15.2. Out of Memory 状態のときに強制終了するプロセスの優先順位付け
oom_killer()
関数で終了するプロセスに優先順位を付けることができます。これにより、優先順位の高いプロセスが OOM 状態の間も実行され続けることが保証されます。各プロセスには /proc/PID
ディレクトリーがあります。各ディレクトリーには、以下のファイルが含まれます。
-
oom_adj
:oom_adj
の有効なスコアは、-16 から +15 の範囲にあります。この値は、他の要因の中でも特に、プロセスの実行時間も考慮に入れるアルゴリズムを使用して、プロセスのパフォーマンスフットプリントを計算するために使用されます。 -
oom_score
:oom_adj
の値を使用して計算されたアルゴリズムの結果が含まれます。
メモリー不足の状態では、oom_killer()
関数は oom_score
が最も高いプロセスを終了します。
プロセスの oom_adj
ファイルを編集して、終了するプロセスに優先順位を付けることができます。
前提条件
- 優先するプロセスのプロセス ID (PID) を把握している。
手順
プロセスの現在の
oom_score
を表示します。# cat /proc/12465/oom_score 79872
プロセスの
oom_adj
の内容を表示します。# cat /proc/12465/oom_adj 13
oom_adj
の値を編集します。# echo -5 > /proc/12465/oom_adj
検証手順
プロセスの現在の
oom_score
を表示します。# cat /proc/12465/oom_score 78
- 表示される値が以前の値よりも小さいことを確認します。