Ich versuche mein Entwicklungssystem auf maximale Zuverlässigkeit zu optimieren. Ich habe Swap deaktiviert, weil es für die GUI-Nutzung meistens dazu führt, dass der Computer nicht mehr reagiert und nicht mehr verwendet werden kann. Wenn aggressive Anwendungen das Gedächtnis auffressen, scheinen einige Mechanismen dafür zu sorgen, dass die Geschwindigkeitskosten optimal genutzt werden. Es gibt keine Festplattenwechseloperation, aber das System reagiert ebenfalls nicht mehr. Deshalb möchte ich den OOM-Killer einschalten lassen, bevor das System besondere Anstrengungen unternimmt, um Speicherplatz zu gewinnen. Ist es möglich, den OOM-Killer für Aktionen zu konfigurieren, wenn beispielsweise weniger als 100 MB physischer Speicher frei sind?
linux-kernel
memory-management
Dronus
quelle
quelle
Antworten:
Ich hatte auch Probleme damit. Ich möchte nur, dass mein System auf alle Fälle reagiert, und ich ziehe es vor, Prozesse zu verlieren, anstatt ein paar Minuten zu warten. Es scheint keine Möglichkeit zu geben, dies mit dem Kerneloom-Killer zu erreichen.
Im Benutzerbereich können wir jedoch tun, was wir wollen. Also habe ich den Early OOM Daemon ( https://github.com/rfjakob/earlyoom ) geschrieben, der den größten Prozess (per RSS) beendet, sobald der verfügbare RAM unter 10% sinkt .
Ohne Earlyoom war es einfach, meinen Computer (8 GB RAM) durch mehrmaliges Starten von http://www.unrealengine.com/html5/ zu sperren . Jetzt werden die schuldigen Browser-Registerkarten gelöscht, bevor die Dinge außer Kontrolle geraten.
quelle
earlyoom
jetzt, es tut gut in einem ersten Triggertest. Ich frage mich nur, warum dies nicht durch Kernel-Konfiguration oder System-Tools implementiert werden kann.Die Standardrichtlinie des Kernels besteht darin, dass Anwendungen weiterhin virtuellen Speicher zuweisen können, solange physischer Speicher frei ist. Der physische Speicher wird erst dann tatsächlich verwendet, wenn die Anwendungen den zugewiesenen virtuellen Speicher berühren. Eine Anwendung kann also viel mehr Speicher zuweisen als das System, um ihn später zu berühren. Dies führt dazu, dass dem Kernel der Speicher ausgeht und der Vorgang ausgelöst wird of memory (OOM) Killer. Bevor der Hogging-Prozess jedoch beendet wird, wurde der Festplatten-Cache geleert, wodurch das System eine Zeitlang nur langsam reagiert, bis sich der Cache wieder füllt.
Sie können die Standardrichtlinie so ändern, dass keine Speicherüberlastung zulässig ist, indem Sie den Wert 2 auf eingeben
/proc/sys/vm/overcommit_memory
. Der Standardwert/proc/sys/vm/overcommit_ratio
ist 50, sodass der Kernel es Anwendungen nicht erlaubt, mehr als 50% von RAM + Swap zuzuweisen. Wenn Sie keinen Swap haben, erlaubt der Kernel Anwendungen nicht, mehr als 50% Ihres RAMs zuzuweisen, während die anderen 50% für den Cache frei bleiben. Das kann ein bisschen zu viel sein. Sie können diesen Wert also auf etwa 85% erhöhen, damit Anwendungen bis zu 85% Ihres Arbeitsspeichers zuweisen können und 15% für den Cache übrig bleiben.quelle
I disabled swap, because for GUI usage it mostly renders the machine unresponsive in such a way not useable anymore.
. Er erwähnte die grafische Benutzeroberfläche, während Sie davon ausgehen, dass er einen Befehl ausführt. Der Kauf von mehr Arbeitsspeicher ist die erste Lösung, der Verbrauch von weniger Arbeitsspeicher die zweite. Wenn Sie Ihr System instabil machen, indem Sie mit den stabilen Standardeinstellungen spielen, ist dies die letzte Lösung. Die Frage muss nicht wörtlich beantwortet werden, daher sehe ich nicht, was Ihr Problem ist, dass Sie uns beide in den Kommentaren belästigen müssen. Rant hilft nicht .../proc/meminfo
‘ sCommitted_AS
Staaten. Bei einigen laufenden Anwendungen übersteigt dieser Wert leicht den physischen Speicher, so dass es schwierig ist, eine realisierbare Grenze festzulegen.Für mich macht das Setzen von vm.admin_reserve_kbytes = 262144 genau dies. OOM Killer greift ein, bevor das System nicht mehr reagiert.
quelle
Die anderen Antworten haben gute automatische Lösungen, aber ich finde es kann hilfreich sein, den
SysRq
Schlüssel auch zu aktivieren, wenn die Dinge außer Kontrolle geraten. Mit demSysRq
Schlüssel würden Sie den Kernel manuell übermitteln, und Sie können Dinge wie einen sicheren Neustart (mitSysRQ + REISUB
) ausführen, selbst wenn der Userspace vollständig eingefroren ist.Damit der Kernel Anforderungen abhören kann,
kernel.sysrq = 1
müssen Sie nur die Funktionen festlegen oder aktivieren, die Sie wahrscheinlich mit einer Bitmaske verwenden ( hier dokumentiert ). Zum Beispielkernel.sysrq = 244
werden alle für den oben genannten sicheren Neustart erforderlichen Combos sowie der manuelle Aufruf des OOM-Killers mit aktiviertSysRq + F
.quelle
Zuverlässigkeit wird nicht durch wenig Arbeitsspeicher und einen OOM-Killer erreicht.
Es ist falsch, eine Party in einem Schrank zu organisieren und "meinen Schrank ausräumen" auf Ihre kleine Wiedergabeliste zu setzen.
Dies hat unbeabsichtigte Nebeneffekte zur Folge, da Sie keine Kontrolle darüber haben, was getötet wird.
Maximale Zuverlässigkeit beinhaltet das Testen Ihres Systems und das Verbessern Ihres Systems basierend auf diesen Tests.
Das bloße Ändern zufälliger Dinge bringt Sie nicht weiter ...
Aufgrund der niedrigen Speicherbedingungen, wird die Swap - Deaktivierung nicht das Verhalten verbessern , tut es das Gegenteil .
Um die Zuverlässigkeit in dieser Situation zu erhöhen, fügen Sie mehr Speicher hinzu, sodass Ihr System schneller reagiert und keine zufälligen Prozesse ohne die Absicht des Benutzers beendet werden. Sie sollten nicht auf wenig Arbeitsspeicher und einen solchen Mechanismus zurückgreifen, insbesondere nicht in einer Entwicklungsumgebung ...
Niedrige Speicherbedingungen führen in der Tat dazu, dass Sie nicht mehr reagieren, egal ob Sie einen Swap haben oder nicht.
Besondere Anstrengungen, die mehr schaden als nützen, wie ich oben erklärt habe. Stattdessen könnten Sie Prozesse beenden, die Sie selbst nicht benötigen, aber ich schätze, Sie können das nicht tun, damit der OOM die Prozesse beendet, die Sie benötigen.
Könnte sein, aber Sie erzielen eine höhere Kapitalrendite, wenn Sie nur zusätzlichen Speicher kaufen, der heutzutage nicht wirklich viel kostet. Bedenken Sie, dass Sie sich auf lange Sicht in den Fuß schlagen werden, wenn Sie weiterhin unter Bedingungen mit geringem Arbeitsspeicher arbeiten. OOM ist wie ein Gerichtsvollzieher, es hilft dir nicht, es hilft dem Betriebssystem ...
quelle
kill
blind getippten Code auszugeben.