メモリ不足時に大事なプロセスが OOM Killer に殺されないようにする

ALL
スポンサーリンク

Linuxでシステムがメモリ不足(OOM(Out of Memory))に陥った場合、1つ以上のプロセスを殺して空きメモリを確保する機能があります。
OOM Killer と呼ばれる機能です。

この OOM Killer は、各プロセスの oom_score 値が高いものを、殺すプロセスとして選択します。
各プロセスの oom_score 値は、/proc/[pid]/oom_score で確認できます。
次のコマンドを実行すると、まとめて確認できます。

grep "" /proc/*/oom_score

oom_score値は、oom_adj値によって調整され、oom_adj値は -17 ~ +15 の範囲の値をとります。
-17 は特別な意味を持ち、そのプロセスは OOM Killer の対象から外れます。
つまり、大事なプロセスが殺されないようにするには、そのプロセスの oom_adj値に -17 を指定すればいいことになります。

次のようにして設定します。
[pid] には、そのプロセスのプロセスIDを指定します。

echo "-17" > /proc/[pid]/oom_adj

以上、大事なプロセスが OOM Killer に殺されないようにするための設定でした。

参考

Man page of PROC
mysqlのoom_killerの優先度を下げる | hacknote
テキストファイルの内容をファイル名付きで表示する – Qiita

コメント