GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So beenden Sie den größten Prozess in einem nicht reagierenden Linux-System

Wenn ich viele Tabs in meinem Browser öffne, reagiert mein System einige Minuten lang nicht. Ich konnte den Mauszeiger nicht bewegen, einen Prozess beenden oder geöffnete Tabs schließen. Damals blieb mir nichts anderes übrig, als das System zwangsweise zurückzusetzen. Natürlich verwende ich OneTab und Der Große Hosenträger Erweiterungen, aber die haben auch nicht viel geholfen. Mir ging oft die Erinnerung aus. Auf der Suche nach einer Lösung, um dies zu beheben, bin ich auf Early OOM gestoßen . Für diejenigen, die sich fragen, es wird den größten Prozess in einem nicht reagierenden System beenden, wenn es absolut keine andere Wahl hat. Early OOM überprüft die Menge an verfügbarem Speicher und freiem Swap 10 Mal pro Sekunde. Wenn beide unter 10 % liegen, wird der größte Prozess beendet.

Warum Early OOM? Warum nicht den eingebauten OOM-Killer?

Bevor ich weiter darauf eingehe, lassen Sie mich kurz den OOM-Killer, auch bekannt als O, erklären aber O f M Gedächtnismörder. OOM Killer ist ein Prozess, den der Kernel verwendet, wenn das System nur noch wenig Arbeitsspeicher hat. Die Hauptaufgabe des OOM-Killers besteht darin, mit dem Beenden von Prozessen fortzufahren, bis genügend Speicher für das reibungslose Funktionieren des restlichen Prozesses freigegeben ist, den der Kernel auszuführen versucht. OOM Killer wählt die besten Prozesse aus, die für das System am wenigsten wichtig sind, gibt maximalen Speicher frei und beendet sie. Wir können den oom_score jedes Prozesses in /proc anzeigen Verzeichnis unter pid Abschnitt.

Beispiel:

$ cat /proc/10299/oom_score
1

Je höher der Wert von oom_score eines Prozesses ist, desto höher ist seine Wahrscheinlichkeit, vom OOM Killer getötet zu werden, wenn dem System der Arbeitsspeicher ausgeht.

Der Entwickler von Early OOM behauptet, dass es einen großen Vorteil gegenüber dem OOM-Killer im Kernel hat. Wie ich bereits erwähnt habe, beendet der Linux-Oom-Killer den Prozess mit der höchsten Punktzahl, sodass der Chrome-Browser immer das erste Opfer des Oom-Killers sein wird. Um dies zu vermeiden, verwendet Early OOM /proc/*/status statt echo f> /proc/sysrq-trigger . Er behauptet auch, dass das manuelle Auslösen des Oom-Killers im neuesten Linux-Kernel möglicherweise überhaupt nicht funktioniert.

Installieren von Early OOM

Frühes OOM ist in AUR verfügbar, sodass Sie es mit jedem AUR-Hilfsprogramm in Arch Linux und seinen Derivaten installieren können.

Mit Yay :

$ yay -S earlyoom

Aktivieren und starten Sie den frühen OOM-Daemon:

$ sudo systemctl enable earlyoom
$ sudo systemctl start earlyoom

Kompilieren und installieren Sie es bei anderen Linux-Distributionen wie unten gezeigt manuell.

$ git clone https://github.com/rfjakob/earlyoom.git
$ cd earlyoom
$ make
$ sudo make install

Beenden Sie den größten Prozess in einem nicht reagierenden Linux-System mit frühem OOM

Führen Sie den folgenden Befehl aus, um Early OOM zu starten:

$ earlyoom

Wenn Sie es aus dem Quellcode kompiliert haben, führen Sie den folgenden Befehl aus, um Early OOM zu starten:

$ ./earlyoom

Die Beispielausgabe wäre:

earlyoom 0.12
mem total: 3863 MiB, min: 386 MiB (10 %)
swap total: 2047 MiB, min: 204 MiB (10 %)
mem avail: 1770 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1772 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1772 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1771 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %)
mem avail: 1784 MiB (46 %), swap free: 2047 MiB (99 %)
[...]

Wie Sie in der obigen Ausgabe sehen, zeigt Early OOM an, wie viel Speicher und Swap Sie haben, was das Minimum ist, wie viel Speicher verfügbar ist und wie viel Swap frei ist. Denken Sie daran, dass es weiter ausgeführt wird, bis Sie es manuell durch Drücken von STRG+C stoppen.

Wenn sowohl Speicher als auch Swap unter 10 % fallen, beendet Early OOM automatisch die größten Prozesse, bis das System über genügend Speicher für einen reibungslosen Betrieb verfügt. Sie können den Mindestprozentwert auch nach Ihren Anforderungen konfigurieren.

Führen Sie Folgendes aus, um das verfügbare Arbeitsspeicherminimum auf PERCENT des Gesamtspeichers festzulegen:

$ earlyoom -m <PERCENT_HERE>

Führen Sie Folgendes aus, um das verfügbare Swap-Minimum auf PERCENT des Gesamtbetrags festzulegen:

$ earlyoom -s <PERCENT_HERE>

Weitere Einzelheiten finden Sie im Hilfebereich.

$ earlyoom -h
earlyoom 0.12
Usage: earlyoom [OPTION]...

 -m PERCENT set available memory minimum to PERCENT of total (default 10 %)
 -s PERCENT set free swap minimum to PERCENT of total (default 10 %)
 -M SIZE set available memory minimum to SIZE KiB
 -S SIZE set free swap minimum to SIZE KiB
 -k use kernel oom killer instead of own user-space implementation
 -i user-space oom killer should ignore positive oom_score_adj values
 -d enable debugging messages
 -v print version information and exit
 -r INTERVAL memory report interval in seconds (default 1), set to 0 to
 disable completely
 -p set niceness of earlyoom to -20 and oom_score_adj to -1000
 -h this help text

Jetzt brauchen Sie sich keine Gedanken mehr über Prozesse mit dem höchsten Speicherverbrauch zu machen.


Linux
  1. So beenden Sie einen Zombie-Prozess unter Linux

  2. So überprüfen Sie die Betriebssystem- und Linux-Version

  3. So finden und töten Sie den Zombie-Prozess in Linux

  4. So ändern Sie die Identität eines Linux-Systems

  5. Wie man einen Prozess unter Linux anhält/fortsetzt

So beenden Sie den laufenden Linux-Prozess auf einem bestimmten Port

So ändern Sie die Standard-Shell im Linux-System

Wie man einen Prozess unter Linux beendet

So verwenden Sie den fd-Befehl auf einem Linux-System

So beenden oder beenden Sie einen Linux-Prozess:Der ultimative Leitfaden

So senden Sie Prozesse unter Linux an den Hintergrund