11.04では、/proc/[pid]
が含まれていますoom_score_adj
がman proc
、古いについて説明していoom_adj
ます。これを使用する方法に関する情報をグーグルで検索できませんでした。
私が手配する必要があるのは、「pbs」または「gridengine」によって開始されたプロセスが、他の何かが殺される前に殺されることです。どうやってやるの?
11.04では、/proc/[pid]
が含まれていますoom_score_adj
がman proc
、古いについて説明していoom_adj
ます。これを使用する方法に関する情報をグーグルで検索できませんでした。
私が手配する必要があるのは、「pbs」または「gridengine」によって開始されたプロセスが、他の何かが殺される前に殺されることです。どうやってやるの?
回答:
同様の質問に関するUnix&Linux での私自身のQ&Aに基づいています。
スチュアートは彼の答えで非常によく指摘したように、有効な値は-1000〜1000の範囲の整数ですoom_score_adj
。下、値下殺されることになるだろうという可能性。
アプリケーションを再起動すると、この値を何度も変更しなければならないのは非常に不便です。プロセスが終了すると、情報は単に失われます。Upstart(Ubuntuのinitデーモン)には、デーモンが(再)起動するたびに設定されるようにデーモンを構成するための素晴らしいオプションがあります。
[...]切り取り[...]
例:
# this application is a "resource hog" oom score 1000 expect daemon respawn exec /usr/bin/leaky-app
したがって、基本的に、/etc/init/myservice.conf
変更するサービスの構成ファイルを編集して、行を含めることができますoom score -1000
。質問で話しているサービス「pbs」または「gridengine」はUpstart対応であると想定しています。それ以外の場合は、これを永続的に変更する別の方法が必要です。
oom-killerの優先順位を付けたいプロセスを生成する起動スクリプトを変更できる場合は、起動スクリプトに次を追加します。
echo 1000 > /proc/self/oom_score_adj
値は子プロセスに継承されます。
oom_adjまたはoom_score_adjのいずれかにhigh(ish)値を設定すると、それらが最初に強制終了されます。例えば
echo 15 > /proc/[pid]/oom_adj
oom_adjは-16から15になり、上記のようにoom_score_adjは-1000から1000を受け入れます
sudo sh -c "echo -1000 > /proc/[PID]/oom_score_adj"
コードを調べることは常に良い考えです。通常、kernel.orgの検索機能を使用していますが、現在は機能していません。Githubも良い仕事をしています。私はこれを見つけました:
代わりに、-1000〜+1000の範囲の新しい調整パラメータ/ proc / pid / oom_score_adjが追加されます。特定のタスクがoom killで考慮されず、他のタスクが常に考慮されるように、ヒューリスティックを分極するために使用できます。値はbadness()スコアに直接追加されるため、たとえば、-500の値は、システム上の、mempolicyにバインドされた、cpuset内の、他のタスクと比較してメモリ消費量の50%を割引することを意味します。同じメモリコントローラーを共有します。
https://github.com/mirrors/linux-2.6/commit/a63d83f427fbce97a6cea0db2e64b0eb8435cd10#include/linux/oom.hから