OOMD.CONF(5)

BEZEICHNUNG
oomd.conf, oomd.conf.d - Globale Konfigurationsdateien von systemd-oomd

ÜBERSICHT

    /etc/systemd/oomd.conf
    /run/systemd/oomd.conf
    /usr/local/lib/systemd/oomd.conf
    /usr/lib/systemd/oomd.conf
    /etc/systemd/oomd.conf.d/*.conf
    /run/systemd/oomd.conf.d/*.conf
    /usr/local/lib/systemd/oomd.conf.d/*.conf
    /usr/lib/systemd/oomd.conf.d/*.conf

BESCHREIBUNG

Diese Dateien konfigurieren verschiedene Parameter von systemd-oomd.service(8), dem Speichererknappheits- (OOM-)Killer im Anwendungsraum von systemd(1). Siehe systemd.syntax(7) für eine allgemeine Beschreibung der Syntax.

KONFIGURATIONSVERZEICHNISSE UND RANGFOLGE

Die Standardkonfiguration wird während der Kompilierung gesetzt. Daher wird eine Konfiguration nur benötigt, wenn von diesen Vorgaben abgewichen werden muss. Die Hauptkonfigurationsdatei wird aus einem der aufgeführten Verzeichnisse in der Prioritätsreihenfolge geladen; nur die zuerst gefundene Datei wird verwandt: /etc/systemd/, /run/systemd/, /usr/local/lib/systemd/ [1], /usr/lib/systemd/. Die Lieferantenversion der Datei enthält die Vorgaben als auskommentierte Hinweise für den Administrator. Lokal können diese Einstellungen durch die Erstellung von Ergänzungen, wie nachfolgend beschrieben, außer Kraft gesetzt werden. Zu diesem Zweck kann die Hauptkonfigurationsdatei (oder eine Kopie in /etc/, falls sie in /usr/ ausgeliefert wird) auch bearbeitet werden, allerdings wird empfohlen, Ergänzungen für die lokale Konfiguration zu verwenden, statt die Hauptkonfigurationsdatei zu verändern.

Zusätzlich zu der Hauptkonfigurationsdatei werden Ergänzungs-Konfigurationsschnipsel aus /usr/lib/systemd/*.conf.d/, /usr/local/lib/systemd/*.conf.d/ und /etc/systemd/*.conf.d/ gelesen. Diese Ergänzungen haben Vorrang vor der Hauptkonfigurationsdatei und setzen diese außer Kraft. Dateien in den Konfigurationsunterverzeichnissen *.conf.d/ werden in lexikographischer Reihenfolge nach ihrem Dateinamen sortiert, unabhängig davon, in welchem Unterverzeichnis sie sich befinden. Bei Optionen, die nur einen einzelnen Wert akzeptieren, hat der Eintrag in der Datei, die als letztes in der Sortierung folgt, Vorrang, falls mehrere Dateien die gleiche Option angeben. Bei Optionen, die eine Liste von Werten akzeptieren, werden Einträge gesammelt, wie sie in den sortierten Dateien auftauchen.

Wenn Pakete die Konfiguration anpassen müssen, können sie Ergänzungen unter /usr/ installieren. Dateien in /etc/ sind für den lokalen Administrator reserviert, der diese Logik verwenden kann, um die durch die Lieferantenpakete bereitgestellten Konfigurationsdateien außer Kraft zu setzen. Um Ergänzungen der Pakete außer Kraft zu setzen, müssen Ergänzungen verwandt werden, da die Hauptkonfigurationsdatei die niedrigste Priorität hat. Es wird empfohlen, allen Dateinamen in diesen Unterverzeichnissen eine zweistellige Zahl und einen Bindestrich voranzustellen, um die Sortierung zu vereinfachen. Dies definiert auch ein Konzept von Ergänzungsprioritäten, um es Betriebssystemlieferanten zu ermöglichen, Ergänzungen in einem bestimmten Bereich auszuliefern, der unterhalb des von Benutzern verwandten Bereichs liegt. Dies sollte das Risiko reduzieren, dass eine Paketergänzung versehentlich durch Benutzer definierte Ergänzungen außer Kraft setzt. Es wird empfohlen, den Bereich 10-40 für Ergänzungen in /usr/ und den Bereich 60-90 für Ergänzungen in /etc/ und /run/ zu verwenden um sicherzustellen, dass lokale und flüchtige Ergänzungen Priorität gegenüber Ergänzungen haben, die vom Betriebssystemlieferanten geliefert werden.

Um eine vom Lieferanten bereitgestellte Konfigurationsdatei zu deaktivieren, wird empfohlen, einen Symlink nach /dev/null in dem Konfigurationsverzeichnis in /etc/ mit dem gleichen Dateinamen wie die Konfigurationsdatei des Lieferanten abzulegen.

VORBEENDIGUNGSEREIGNIS

systemd-oomd unterstützt die Benachrichtigung externer Komponenten vor dem Beenden einer Control-Gruppe. Dies erfolgt durch Senden einer Benachrichtigung über Varlink an alle im Verzeichnis /run/systemd/oomd.prekill.hook/ gefundenen Sockets. Jeder Socket sollte die Schnittstelle io.systemd.oom.Prekill implementieren. Die Benachrichtigung enthält den Control-Gruppenpfad, um dem Hook die Bestimmung zu erlauben, welche Control-Gruppe beendet wird. Dies ermöglicht es externen Komponenten, alle notwendigen Bereinigungen oder Protokollierungen durchzuführen, bevor die Control-Gruppe beendet wird. Der Hook ist nicht als Möglichkeit gedacht, die Beendigung zu vermeiden, sondern als Benachrichtigungsmechanismus. Beachten Sie, dass dies eine privilegierte Aktion ist, obwohl sie eine Zeitüberschreitung enthält, synchron ist und die Beendigung verzögert, verwenden Sie sie daher vorsichtig. Normalerweise ist der in Ressourcen-Druck-Handhabung[2] beschriebene Prozess zur Verarbeitung von Speicherdruck zu bevorzugen, der nicht privilegiert und asynchron ist und der das Beenden nicht verzögert.

OOM RULESETS

systemd-oomd supports custom rulesets that define conditions and actions for OOM handling on a per-unit basis. Ruleset files use the .oomrule extension and are loaded from /etc/systemd/oomd/rules.d/, /run/systemd/oomd/rules.d/, /usr/local/lib/systemd/oomd/rules.d/, and /usr/lib/systemd/oomd/rules.d/. Units opt into rulesets via the OOMRules= setting in systemd.resource-control(5), which takes a space-separated list of ruleset names (the file name without the .oomrule extension).

Each ruleset file contains a "[Rule]" section with the following options. At least one of MemoryPressureAbove= or SwapUsageMax= must be configured; rulesets with no conditions are ignored. If both are set, the conditions are combined with AND, i.e. the action is only triggered when both thresholds are exceeded simultaneously.

MemoryPressureAbove=
    Sets the memory pressure threshold above which the rule's action will be triggered. The memory pressure represents the fraction of time in a 10 second window in which all tasks in the control group were delayed (PSI "full avg10"). Takes a value specified in percent (when suffixed with "%"), permille ("‰") or permyriad ("‱"), between 0% and 100%, inclusive. If unset, this condition is not evaluated. A value of "100%" can never be exceeded and is therefore rejected with a warning; a value of "0%" makes the condition true on any observed pressure, which is usually not useful.

    Hinzugefügt in Version 261.

SwapUsageMax=
    Sets the system-wide swap usage threshold above which the rule's action will be triggered. Takes a value specified in percent (when suffixed with "%"), permille ("‰") or permyriad ("‱"), between 0% and 100%, inclusive. If unset, this condition is not evaluated. A value of "100%" can never be exceeded and is therefore rejected with a warning; a value of "0%" fires as soon as any swap is in use, which is usually not useful.

    Hinzugefügt in Version 261.

Action=
    Specifies the action to take when the rule's conditions are met. Takes one of "kill-all", "kill-by-pgscan", or "kill-by-swap". This setting is mandatory; rulesets without Action= are ignored.

        • "kill-all" sends SIGKILL to every process in the unit's cgroup hierarchy, including any descendant cgroups.

        • "kill-by-pgscan" selects and kills the descendant cgroup with the highest recent page scan (reclaim) rate.

        • "kill-by-swap" selects and kills the descendant cgroup with the highest swap usage.

    Hinzugefügt in Version 261.

LastingSec=
    Sets the duration the conditions must be continuously met before the action is taken. Takes a time span value, see systemd.time(7) for details on the permitted syntax. Defaults to 0, i.e. the action is taken immediately when the conditions are met.

    Hinzugefügt in Version 261.

[OOM]-ABSCHNITT-OPTIONEN

Die folgenden Optionen sind im Abschnit »[OOM]« verfügbar:

SwapUsedLimit=
    Setzt die Begrenzung für die Verwendung des Speichers und Auslagerungsspeichers des Systems, bevor systemd-oomd in Aktion tritt. Falls der Anteil an Speicherbenutzung und der Anteil an Auslagerungsbenutzung des Systems größer als der hier definierte Wert ist, wird systemd-oomd auf geeignete Nachkommens-Steuergruppe agieren, bei denen die Verwendung von Auslagerungsspeicher mehr als 5% des gesamten Auslagerungsspeichers beträgt, beginnend mit derjenigen, die die höchste Benutzung des Auslagerungsspeichers hat. Welche Steuergruppen überwacht und welche Aktionen vorgenommen werden, hängt davon ab, was die Unit für ManagedOOMSwap= konfiguriert hat. Akzeptiert einen Wert, der als Prozent (wenn ihm »%« angehängt wird), als Promille (»‰«) oder als Prozehntausendstel (»◈«) zwischen (einschließlich) 0% und 100% angegeben werden kann. Standardmäßig 90%.

    Hinzugefügt in Version 247.

DefaultMemoryPressureLimit=
    Setzt die Begrenzung für den Speicherdruck auf die Steuergruppe der Unit, bevor systemd-oomd in Aktion tritt. Eine Unit kann diesen Wert mit ManagedOOMMemoryPressureLimit= außer Kraft setzen. Der Speicherdruck für diese Eigenschaft stellt den Bruchteil der Zeit in einem 10-Sekunden-Zeitfenster dar, um den alle Prozesse in der Steuergruppe verzögert wurden. Für jede überwachte Steuergruppe wird systemd-oomd auf geeignete Nachkommen-Steuergruppen agieren, falls der Speicherdruck für diese Steuergruppe die gesetzte Begrenzung für mehr als die durch DefaultMemoryPressureDurationSec= gesetzte Dauer überschreitet. Dabei beginnt es mit denen, die über die meisten zurückgewinnbaren Aktivitäten verfügen bis hin zu denen mit den geringsten zurückgewinnbaren Aktivitäten. Welche Steuergruppen überwacht und welche Aktionen vorgenommen werden, hängt davon ab, was die Unit für ManagedOOMMemoryPressure= konfiguriert hat. Akzeptiert einen Anteil, der wie beim vorher beschriebenen SwapUsedLimit= angegeben wird. Standardmäßig 60%.

    Hinzugefügt in Version 247.

DefaultMemoryPressureDurationSec=
    Setzt die Zeitdauer, die eine Steuergruppe der Unit die Speicherdruckbeschränkung überschritten haben muss, bevor systemd-oomd Aktionen ergreift. Eine Unit kann diesen Wert mit ManagedOOMMemoryPressureDurationSec= außer Kraft setzen. Speicherdruckbeschränkungen werden durch DefaultMemoryPressureLimit= und ManagedOOMMemoryPressureLimit= festgelegt. Muss auf 0 oder mindestens eine 1 Sekunde gesetzt werden. Standardmäßig 30 Sekunden, wenn nicht gesetzt oder 0.

    Hinzugefügt in Version 248.

PrekillHookTimeoutSec=
    Setzt die Zeitdauer, die systemd-oomd darauf warten wird, dass die Vorbeendigungs-Hooks abgeschlossen sind, bevor es mit der Beendigung der Control-Gruppe fortfährt. Vorbeendigungs-Hooks funktionieren durch Anlegen von Varlink-Sockets in dem Verzeichnis /run/systemd/oomd.prekill.hook/. Jedes Socket sollte die Benachrichtigungsschnittstelle implementieren. systemd-oomd sendet an jedes erkannte Socket bevor Beendigung einer Control-Gruppe eine Benachrichtigung. Die Zeitüberschreitung ist als globaler Wert und nicht pro Hook gedacht. Falls alle Hooks vorher zurückkehren, wird die Beendigung so früh wie möglich durchgeführt. Die Zeitüberschreitung muss mindestens 1s sein. Standardmäßig 0, was bedeutet, dass systemd-oomd nicht warten und keine Benachrichtigung gesandt wird.

    Hinzugefügt in Version 260.

SIEHE AUCH

systemd(1), systemd.resource-control(5), systemd-oomd.service(8), oomctl(1)

ANMERKUNGEN

1.  💣💥🧨💥💥💣 Bitte beachten Sie, dass diese Konfigurationsdateien zu allen Zeiten verfügbar sein müssen. Falls /usr/local/ eine separate Partition ist, könnte diese während des frühen Systemstarts nicht verfügbar sein und darf dann nicht für Konfiguration verwandt werden.

2.  Ressourcen-Druck-Handhabung
    https://systemd.io/PRESSURE

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) 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 (debian-l10n-german@lists.debian.org).