ブログ

TIPS: 特定のプロセスをOOM Killerの対象から外す

at_yuma.arakawa
2017年8月31日 15時52分

LinuxカーネルにはOOM(Out Of Memory) Killerという仕組みがあり、 メモリ(RAM)が枯渇しシステムが動作不能となる恐れがある場合、 メモリリソースを多く使用しているプロセスを強制的に停止させ、メモリを確保します。

運用上重要なプロセスである場合や負荷試験時など、 OOM Killerの対象として欲しくないプロセスがある場合には、 設定を行うことで、OOM Killerの対象から外すことができます。

設定方法は以下の通りです。

[armadillo]# echo -1000 > /proc/<プロセスID>/oom_score_adj

なお、"oom_score_adj"はOOM Killerが停止させるプロセスを選択する際の評価値(スコア)の補正値です。 "oom_score_adj"の値の範囲は-1000~1000で、低いほど停止されにくくなります(-1000でOOM Killerの対象から外れます)。

※ Linuxカーネルバージョンが2.6.26の場合、設定するファイルは "/proc/<プロセスID>/oom_adj" です。

  この場合、設定値の範囲は-17~15で、-17を書き込むとOOM Killerの対象から外れます。