table of contents
proc_pid_oom_score_adj(5) | File Formats Manual | proc_pid_oom_score_adj(5) |
BEZEICHNUNG¶
/proc/pid/oom_score_adj - OOM-Killer-Bewertungsanpasssung
BESCHREIBUNG¶
- /proc/PID/oom_score_adj (seit Linux 2.6.36)
- Diese Datei kann zur Anpassung der Schlechtigkeitsheuristik verwandt werden, die eingesetzt wird, um in Speicherknappheitssituationen den zu beendenden Prozess auszuwählen.
- Die Schlechtigkeits-Heuristik weist jedem möglichen Prozess einen Wert von 0 (niemals töten) bis 1000 (immer töten) zu, um zu bestimmen, welcher Prozess infrage kommt. Der Wert beschreibt im Wesentlichen den kontinuierlichen Anteil des erlaubten Speichers, aus dem sich der Prozess Speicher zuweisen darf. Als Grundlage dient dazu der aktuelle verwendete Speicher und Auslagerungsspeicher. Wenn ein Prozess beispielsweise sämtlichen erlaubten Speicher nutzt, ist dessen Schlechtigkeitsbewertung bei 1000. Nutzt er die Hälfte des erlaubten Speichers, beträgt die Bewertung 500.
- Es gibt einen weiteren Faktor in der Schlechtigkeitsbewertung: Root-Prozessen wird 3% zusätzlicher Speicher gegenüber anderen Prozessen gegeben.
- Die Menge des »erlaubten« Speichers hängt von dem Kontext ab, in dem der OOM-Killer aufgerufen wurde. Falls der Kontext ist, dass der oder die Prozessoren ausgelastet sind, entspricht der erlaubte Speicher dem Speicher, der diesem Cpuset zugewiesen ist (siehe cpuset(7)). Falls der oder die Mempolicy-Knoten erschöpft ist/sind, repräsentiert der erlaubte Speicher die Mempolicy-Knoten. Falls eine Arbeitsspeicher- (oder Auslagerungsspeicher-) Grenze erreicht wurde, entspricht der erlaubte Speicher dieser Grenze. Sollte das gesamte System keinen Speicher mehr übrig haben, steht der erlaubte Speicher für alle verfügbaren Ressoucen.
- Die Wert aus oom_score_adj wird zur Schlechtigkeitsbewertung hinzugefügt, bevor dieser zur Ermittlung des zu tötenden Prozesses verwendet wird. Zulässige Werte liegen zwischen -1000 (OOM_SCORE_ADJ_MIN) und +1000 (OOM_SCORE_ADJ_MAX), einschließlich dieser. Dies ermöglicht auf Anwendungsebene die Einstellungen für das OOM-Killern zu steuern; dies reicht von der permanentes Bevorzugen eines bestimmten Prozesses oder deren vollständige Deaktivierung des OOM-Killers für ihn. Der niedrigste mögliche Wert von -1000 ist gleichbedeutend mit der vollständigen Deaktivierung des OOM-Killers für diesen Prozess, da dieser stets eine Schlechtigkeitsbewertung von 0 meldet.
- Infolgedessen ist es für die Anwendungsebene sehr einfach, die Speichermenge zu definieren, die für jeden Prozess in Betracht gezogen wird. Die Festlegung eines Wertes von +500 für oom_score_adj ist beispielsweise etwa gleichbedeutend damit, dass die übrigen Prozesse, die das gleiche System, Cpuset, Mempolicy oder Speicher-Controller-Ressourcen mit verwenden, mindestens 50% mehr Speicher verwenden. Andererseits wäre ein Wert von -500 etwa gleichbedeutend damit, den erlaubten Speicher eines Prozesses bei der Bewertung des erlaubten Speichers des Prozesses um 50% zu reduzieren.
- Zur Rückwärtskompatibilität mit früheren Kerneln kann /proc/PID/oom_adj immer noch zur Feineinstellung der Schlechtigkeitsbewertung verwendet werden. Dieser Wert skaliert linear mit oom_score_adj.
- Schreiben in /proc/PID/oom_score_adj oder /proc/PID/oom_adj führt zur Änderung des anderen mit dem skalierten Wert.
- Das Programm choom(1) stellt eine Befehlszeilenschnittstelle für die Anpassung des Wertes oom_score_adj eines laufenden Prozesses oder frisch ausgeführten Befehls bereit.
GESCHICHTE¶
- /proc/PID/oom_adj (seit Linux 2.6.11)
- Diese Datei kann verwendet werden, um die Bewertung anzupassen, anhand dessen Prozesse bei Speicherknappheit (out-of-memory, OOM) abgebrochen werden. Der Kernel verwendet diesen Wert für eine Bit-Verschiebeoperation des oom_score-Werts des Prozesses: Gültig sind Werte im Bereich von -16 bis +15, sowie der besondere Wert -17, der einen Abbruch des Prozesses wegen Speicherknappheit deaktiviert. Ein positiver Wert erhöht die Wahrscheinlichkeit, dass der Prozess vom OOM-Killer getötet wird, ein negativer Wert senkt die Wahrscheinlichkeit.
- Der Standardwert für diese Datei ist 0. Ein neuer Prozess erbt die Einstellung oom_adj von seinem Elternprozess. Ein Prozess muss privilegiert sein (CAP_SYS_RESOURCE), um diese Datei zu aktualisieren. Allerdings kann ein Prozess seine eigene Einstellung oom_adj erhöhen (seit Linux 2.6.20).
- seit Linux 2.6.36 wird die Verwendung dieser Datei gegenüber /proc/PID/oom_score_adj missbilligt; in Linux 3.7 wurde sie schließlich entfernt.
SIEHE AUCH¶
ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer <Martin.E.Schauer@gmx.de>, Dr. Tobias Quathamer <toddy@debian.org>, Chris Leick <c.leick@vollbio.de>, Erik Pfannenstein <debianignatz@gmx.de> und Helge Kreutzmann <debian@helgefjell.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer.
2. Mai 2024 | Linux man-pages (unveröffentlicht) |