Am 11.04 /proc/[pid]
enthält oom_score_adj
, aber man proc
beschreibt die alte oom_adj
. Ich habe erfolglos nach Informationen gegoogelt, wie man das benutzt.
Ich muss dafür sorgen, dass Prozesse, die mit 'pbs' oder 'gridengine' gestartet wurden, beendet werden, bevor etwas anderes beendet wird. Wie kann ich das machen?
process
memory-usage
margulies
quelle
quelle
Antworten:
Basierend auf meinen eigenen Fragen und Antworten zu Unix und Linux zu einer ähnlichen Frage.
Wie Stuart in seiner Antwort sehr gut hervorhob , sind gültige Werte Ganzzahlen im Bereich von -1000 bis 1000 für
oom_score_adj
. Je niedriger der Wert, desto geringer ist die Wahrscheinlichkeit, dass er getötet wird.Es ist sehr unpraktisch, diesen Wert nach dem Neustart der Anwendung immer wieder ändern zu müssen. Die Informationen gehen einfach verloren, nachdem der Prozess beendet wurde. Upstart (der Init-Daemon in Ubuntu) hat eine nette Option, um Daemons zu konfigurieren, um sicherzustellen, dass sie gesetzt sind, wann immer sie (neu) gestartet wurden:
Im Grunde genommen können Sie die
/etc/init/myservice.conf
Konfigurationsdatei für die Dienste, die Sie ändern möchten, so bearbeiten , dass sie eine Zeile enthältoom score -1000
. Ich gehe davon aus, dass die Services 'pbs' oder 'gridengine', von denen Sie in Ihrer Frage sprechen, Upstart-fähig sind. Andernfalls benötigen Sie einen anderen Weg, um dies dauerhaft zu ändern.quelle
Wenn Sie das Startskript ändern können, das den Prozess erzeugt, den Sie für oom-killer priorisieren möchten, fügen Sie dem Startskript Folgendes hinzu:
Der Wert wird für untergeordnete Prozesse vererbt.
quelle
Wenn Sie einen hohen (ish) Wert für oom_adj oder oom_score_adj festlegen, werden diese zuerst getötet. z.B
oom_adj reicht von -16 bis 15 und wie oben erwähnt akzeptiert oom_score_adj -1000 bis 1000
quelle
sudo sh -c "echo -1000 > /proc/[PID]/oom_score_adj"
Ein Blick in den Code ist immer eine gute Idee. Normalerweise benutze ich die Suchfunktion von kernel.org, aber es ist momentan nicht verfügbar. Github macht auch einen guten Job. Ich habe das gefunden:
Von https://github.com/mirrors/linux-2.6/commit/a63d83f427fbce97a6cea0db2e64b0eb8435cd10#include/linux/oom.h
quelle
Wir haben jetzt choom .
tl; dr:
choom --adjust -100 myprogram
.Die Manpage enthält weitere Informationen.
quelle