追加読書

追加読書

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_adj1000に設定された値で始まります。

答え2

M. Kittの回答に示すように、親プロセスに設定するのではなく、独自の設定を適用するチェーンローディングツールを使用してサブプロセスでプログラムを実行し、分岐後にサブプロセスに設定できます。その後、単にターゲットプログラムをチェーンロードします。

私は2016年にLinuxオペレーティングシステムとFreeBSD / TrueOSのメカニズムを理解する一連のnoshツールのためにこれらのユーティリティを作成しました。

oom-kill-protect - 1000ターゲットプログラムの一部のパラメータ

--これは、誰かが負のOOMスコアを使用するように調整することを決定した場合に発生します。 ☺

追加読書

関連情報