名前

choom - OOM キラーのスコアを表示し調整する

choom -p PID

choom -p PID -n number

choom -n number [--] command [argument ...]

説明

choom コマンドは、 OOM (Out-Of-Memory) キラーのスコア設定を表示し調整する。

オプション

-p, --pid pid

プロセス ID を指定する。

-n, --adjust value

調整スコア (adjust score) 値を指定する。

-h, --help

ヘルプを表示して終了する。

-V, --version

バージョンを表示して終了する。

注意

Linux カーネルは、 メモリ不足状況にある、 どのプロセスを kill すべきかを選ぶために、 不良ヒューリスティック (badness heuristic) を用いている。

不良ヒューリスティックでは、 候補となるタスクに対して、 0 (絶対に kill されない) から 1000 (必ず kill される) という範囲の数値を割り当てて、 どのプロセスを対象とするかを決定する。 The units are roughly a proportion along that range of allowed memory the process may allocate from based on an estimation of its current memory and swap use. For example, if a task is using all allowed memory, its badness score will be 1000. If it is using half of its allowed memory, its score will be 500.

不良スコア (badness score) には、 さらに考慮すべきポイントがある。 その時点でのメモリとスワップの使用量は、 root プロセスに対しては、 3% 差し引いて考えないといけない、 という点である。

「許容される」メモリ総量は、 oom キラーが呼び出された状況に依存する。 配置タスクの cpuset に割り当てられたメモリを使い果たしたことによる場合、 許容されるメモリは、 cpuset に割り当てられた mems のセットを表す。 mempolicy のノードが使い果たされたことによる場合、 許容されるメモリは、 mempolicy ノードのセットを表す。 メモリ制限 (またはスワップ制限) に達したことによる場合、 許容されるメモリは、その設定された制限値を表す。 システム全体がメモリ不足となっていた場合、許容されるメモリは、 割り当て可能な全リソースを表す。

不良スコアを使って、 kill するタスクを決定する前には、 不良スコアに調整スコア (adjust score) が加えられる。 値の範囲は -1000 から +1000 である。 これを用いると、 ユーザー空間における oom キラーの動作を、 常に所定タスクを維持するように動作するか、 あるいは完全に無効化するように動作するか、 切り分けることができる。 最低値である -1000 は、タスクに対して oom キラーを完全に無効化することを意味する。 なぜならこれは、 不良スコアを常に 0 として返すからである。

調整スコアをたとえば +500 に設定すると、 残りのタスクに対して、 システム、 cpuset、 mempolicy、メモリーコントローラーの各リソースを、 最低でもメモリの 50% 以上を使って共有可能にすることと、 ほぼ同じ動きになる。 一方、 その値を -500 にすると、 タスクに許容されるメモリ容量を 50% 減らして、 タスクに対するスコアとして扱われないようにすることと同じである。

作者

関連項目

proc(5)

バグ報告

バグ報告は、 以下にある issue トラッカーを利用すること。 <https://github.com/util-linux/util-linux/issues>.

入手方法

choom コマンドは util-linux パッケージの一部であり、 以下からダウンロードできる。 Linux Kernel Archive <https://www.kernel.org/pub/linux/utils/util-linux/>.