Diese Antwort erklärt die Aktionen, die der Kernel ausführt, wenn eine OOM-Situation auftritt, basierend auf dem Wert von sysctl vm.overcommit_memory
.
Wenn overcommit_memory
auf 0 oder 1 gesetzt, overcommit
ist aktiviert, und Programme können mehr Speicher zuweisen, als tatsächlich verfügbar ist.
Was passiert nun, wenn uns in dieser Situation der Speicher ausgeht? Wie entscheidet der OOM-Killer , welcher Prozess zuerst beendet wird?
linux
memory
out-of-memory
Ramesh
quelle
quelle
Antworten:
Wenn der Arbeitsspeicher von Prozessen in einem Ausmaß aufgebraucht wird, das möglicherweise die Stabilität des Systems gefährdet, kommt der OOM-Killer ins Spiel.
ANMERKUNG: Es ist die Aufgabe des OOM-Killers, die Prozesse so lange abzubrechen, bis genügend Speicher freigegeben ist, damit der Rest des Prozesses, den der Kernel auszuführen versucht, reibungslos funktioniert.
Der OOM-Killer muss die besten Prozesse zum Töten auswählen . Das Beste bezieht sich hier auf den Prozess, der beim Beenden den maximalen Speicher freigibt und der für das System am wenigsten wichtig ist.
Das Hauptziel besteht darin, die geringste Anzahl von Prozessen zu beenden, die den verursachten Schaden minimieren, und gleichzeitig die Menge des freigewordenen Speichers zu maximieren.
Um dies zu erleichtern, verwaltet der Kernel
oom_score
für jeden der Prozesse einen. Sie können dieoom_score
einzelnen Prozesse im/proc
Dateisystem unter dempid
Verzeichnis sehen.Je höher der Wert eines
oom_score
Prozesses ist, desto höher ist die Wahrscheinlichkeit, dass der OOM-Killer in einer Situation außerhalb des Arbeitsspeichers getötet wird.Wie
OOM_Score
berechnet sich das?Verweise
http://www.queryhome.com/15491/whats-happening-kernel-starting-killer-choose-which-process https://serverfault.com/a/571326
quelle