OOM Killer(Out of Memory Killer)は,システムが実メモリーと仮想メモリー空間(スワップ領域)を使い切り,必要なメモリー領域を新たに確保できない場合に,プロセスを強制終了させて空きメモリーを確保する,Linuxカーネルの仕組みです。OOM Killerは,空きメモリーが確保できないことによりシステム自体が停止するという最悪の事態を避けるために用意されています。

 OOM Killerは,空きメモリーを十分確保でき,システム上損失のなるべく少ないプロセスを選んで,強制終了します。また,強制終了するプロセスの数がなるべく少なくなるようにしています。実際に,どのプロセスを強制終了するかは,カーネル内部のbadness()関数が決めます。

 ただし,OOM Killerにより,システム上大切なプロセスが強制終了させられることもあります。システム・トラブルの原因に成り得ることから,大切なプロセスに対しては/proc/〈プロセスID〉/oom_adjファイルに「-17」を書き込んで,OOM Killerの対象から除外しておきます。具体的には,次のように実行します。
# echo -17 > /proc/〈プロセスID〉/oom_adj