18.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) を把握している。

手順

  1. プロセスの現在の oom_score を表示します。

    # cat /proc/12465/oom_score
    79872
  2. プロセスの oom_adj の内容を表示します。

    # cat /proc/12465/oom_adj
    13
  3. oom_adj の値を編集します。

    # echo -5 > /proc/12465/oom_adj

検証手順

  1. プロセスの現在の oom_score を表示します。

    # cat /proc/12465/oom_score
    78
  2. 表示される値が以前の値よりも小さいことを確認します。