echo 1000 >/proc/<pid>/oom_score_adj
ターゲットプログラムはすでに実行中であるため、直接設定を信頼できません。この場合、ターゲットプログラムが以前にOOMを発生させた可能性があります。echo 1000 >/proc/<pid>/oom_score_adj
答え1
oom_score_adj
フォークから継承されるため、親プロセスで希望の値を設定して、新しい子プロセスの初期値を設定できます。
したがって、シェルスクリプトでターゲットを起動すると、
echo 1000 > /proc/$$/oom_score_adj
シェルの値を1000に変更し、シェルから分岐した後続のすべてのプロセスは、oom_score_adj
1000に設定された値で始まります。
答え2
M. Kittの回答に示すように、親プロセスに設定するのではなく、独自の設定を適用するチェーンローディングツールを使用してサブプロセスでプログラムを実行し、分岐後にサブプロセスに設定できます。その後、単にターゲットプログラムをチェーンロードします。
私は2016年にLinuxオペレーティングシステムとFreeBSD / TrueOSのメカニズムを理解する一連のnoshツールのためにこれらのユーティリティを作成しました。
oom-kill-protect - 1000ターゲットプログラムの一部のパラメータ
--
これは、誰かが負のOOMスコアを使用するように調整することを決定した場合に発生します。 ☺
追加読書
- ジョナサンデボインポラード(2016)。
oom-kill-protect
。 Nosh ツールセット。ソフトウェア。 - ジョナサン・デ・ボイン・ポラード(2016-01-31)。OOM Killer保護付きsyslogd(8)。 FreeBSDハッカー。