Aus Ihrem Kommentar geht hervor, dass das System nur tauscht.
Linux hat einen OOM-Killer, der aufgerufen wird, wenn das System seinen Speicher überlastet hat und jetzt aufgebraucht ist.
Linux führt standardmäßig eine Speicherüberlastung durch, was im Grunde bedeutet, dass Programme mehr Speicher erhalten, als das System tatsächlich hat. Dies geschieht unter der Annahme, dass die Programme nicht den gesamten von ihnen angeforderten Speicher belegen. Wenn dem System jedoch der Arbeitsspeicher ausgeht, hat es den verschiedenen laufenden Prozessen bereits mitgeteilt, dass sie über den Arbeitsspeicher verfügen, sodass es nicht mehr einfach geleugnet werden kann. Stattdessen wird der OOM-Killer aufgerufen. Der OOM-Killer findet im Grunde genommen einen Prozess, von dem der Kernel glaubt, dass er den Zustand des Speichermangels lindert. Normalerweise ist dies nur der Prozess, der die meiste Speichermenge verwendet, aber der Algorithmus ist tatsächlich viel komplexer.
Da Sie overcommit_memory
auf 0
(automatischer Modus) eingestellt haben, führt der Kernel eine Speicherüberlastung durch. Aus Ihrem erklärten Verhalten geht hervor, dass das System nur stark austauscht.
Ab hier gibt es 2 Möglichkeiten.
Swap reduzieren
Ihrem System geht der Arbeitsspeicher aus, und der Kernel beginnt, Dinge in den Swap zu schieben. Wenn Ihr System keinen Swap mehr hat, wird der OOM-Killer aufgerufen. Da Sie jedoch noch freien Swap-Speicherplatz haben, geschieht dies nicht.
Ihre ursprüngliche Idee, einen Prozess manuell zu beenden.
Sie können einen Prozess manuell beenden, wenn Sie der Meinung sind, dass das System zu viel austauscht und etwas sterben muss. Dies kann über die Kernel-SysRq-Trigger erfolgen.
Der Kernel hat das, was er "magisches SysRq" nennt. Dies ist eine Funktion, die den Kernel anweist, eine Art Notfalloperation auszuführen. Dies können Dinge wie "Alle Volumes schreibgeschützt erneut bereitstellen", "Alle Dateisysteme synchronisieren" oder "Jetzt neu starten" sein. Eine dieser Optionen besteht auch darin, den OOM-Killer aufzurufen.
Wenn in Ihrem Kernel Magic SysRq aktiviert ist (Kerneloption CONFIG_MAGIC_SYSRQ
), können Sie dies auf zwei Arten tun.
- Alt+ SysRq+ f
Drücken Sie einfach diese 3 Tasten auf der Tastatur.
echo f > /proc/sysrq-trigger
Dies führt genau die gleiche Aufgabe wie die Tastaturmethode aus, jedoch programmgesteuert.
Sie können Swap auch vollständig deaktivieren, und genau das mache ich auf den meisten meiner Systeme und genau aus diesem Grund. Swap ist insofern von Vorteil, als der Kernel Daten, die nicht verwendet werden, präventiv austauscht, sodass mehr von Ihrem RAM für das Caching verwendet werden kann. Aber es führt zu diesem erzwungenen Austauschproblem, das Sie sehen.
Ich persönlich denke, die beste Lösung ist eine Art Kernel-Option, um OOM-Killer beim erzwungenen Austausch aufzurufen. Lassen Sie Preemptive Swap grundsätzlich funktionieren, aber wenn der Kernel gezwungen ist, etwas in Swap zu verschieben, weil Sie nicht mehr über genügend RAM verfügen, rufen Sie OOM Killer auf.
Leider ist dies nur mein persönlicher Wunsch. Das macht es nicht.