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

Das System hängt, wenn der Speicher knapp wird

OOM-Killer (Out-of-Memory-Killer) kann direkt per Tastenkombination aufgerufen werden:

SysRq-F

Die SysRq-Taste wird normalerweise mit der PrtSc-Taste auf Tastaturen kombiniert.

OOM-Killer beendet einige Prozesse und das System reagiert wieder.

Danke Raman für den Rat zu dieser Funktion in den Kommentaren oben.

PS:Das hat mir sehr geholfen. Ich stimme der Meinung zu, dass dies der nützlichste Ratschlag zu diesem Problem ist, wenn es durch Chrome oder eine andere speicherhungrige Software verursacht wird. Aber Sie müssen bedenken, dass OOM-Killer einige wirklich wichtige Prozesse töten könnte, verwenden Sie es vorsichtig.


Der natürliche Zustand der Dinge ist, dass sich Anwendungsdaten im RAM und Dateien auf der Festplatte befinden.
Der Idealzustand in Bezug auf die Leistung ist, dass sich häufig verwendete Daten im RAM befinden und Daten, die im Moment nicht benötigt werden, auf der Festplatte liegen.
Auf einem normalen System tut der Kernel zwei Dinge, um zu versuchen, dieses Ideal zu erreichen:

  • Anwendungsdaten, die eine Weile nicht verwendet wurden, können auf die Festplatte verschoben werden:Dies ist Auslagerung.
  • Daten aus Dateien, die kürzlich verwendet wurden, werden im RAM aufbewahrt:Dies ist der Festplatten-Cache (für Daten, die von der Festplatte gelesen werden) und Festplattenpuffer (für Daten, die auf die Festplatte geschrieben werden sollen).

Auf einem typischen System wird ein erheblicher Teil des RAM für den Cache und die Puffer verwendet (50 % ist eine typische Zahl). Da RAM eine endliche Ressource ist, kann es erforderlich sein, einige Anwendungsdaten zum Austauschen zu verschieben (Austauschen ist nur erforderlich, wenn es eine bessere Möglichkeit gibt, den RAM zu nutzen).

Auf einem System ohne Swap gibt es einen Punkt, an dem die Anwendungsdaten fast den gesamten Arbeitsspeicher verwenden, sodass kaum noch Platz für den Cache bleibt. Dann ist das System wahrscheinlich langsam. Der Kernel wird nicht mit dem Töten von Anwendungen beginnen, bis er es wirklich tun muss. Solange Anwendungen nur 99 % des verfügbaren Speichers ausfüllen, läuft das System weiter, aber sehr langsam, da Dateien und Daten ständig von der Festplatte geladen und neu geladen werden müssen. Wenn dieselben Anwendungen ausgeführt werden, wäre das System an diesem Punkt mit Swap schneller.

Weitere Informationen zu diesem Thema finden Sie in dieser lkml-Diskussion und in diesem Blogbeitrag.

Ich kenne keinen direkten Weg, den Kernel anzuweisen, eine Mindestmenge an RAM für den Festplatten-Cache zu reservieren. Sie könnten einen kleinen Teil Ihres Arbeitsspeichers als Auslagerungsspeicher einrichten, vielleicht sogar komprimiert. Es gibt Erfolgsberichte an dieser Front, obwohl ich in Ihrem speziellen Fall keine Garantien übernehme.


Kürzlich habe ich eine Lösung für mein Problem gefunden.

Da der Linux-OOM-Killer seine Arbeit nicht richtig verrichten kann, habe ich angefangen, einen Userspace-OOM-Killer zu verwenden:earlyoom. Es ist in C geschrieben, ziemlich konfigurierbar und funktioniert wie ein Zauber für mich.

Ich habe auch von einigen Alternativen gehört, wie Facebooks OOMD, die entwickelt wurden, um auf ihren Servern zu laufen, aber ich habe diese nicht ausprobiert


Linux
  1. Python-Programm frisst RAM

  2. Wie erkenne ich die Spezifikation des RAM-Speicherchips auf einem Linux-Computer

  3. Warum zeigt mein System nur 3,2 GiB RAM an, wenn ich definitiv 4,0 GiB habe

  4. Wie kann ich den Arbeitsspeicher auf einem ARM-basierten System auf Datenbeschädigung testen?

  5. Linux:Tauschen Sie in größeren Stücken aus

Verwalten von Swap im modernen Linux-System

Wie kann verhindert werden, dass das System beim Thrashing (out of Ram) nicht mehr reagiert?

Finden Sie die RAM-Größe in Linux

Linux:Finden Sie heraus, welcher Prozess den gesamten Arbeitsspeicher verwendet

Chrome frisst den gesamten RAM und friert das System ein

Wird mein System fsck, wenn ich neu starte?