Ist es möglich, dass das System präventiv inaktive Seiten auslagert ( vm.swappiness
), aber den OOM-KILLER aufruft, wenn das System nicht über genügend RAM verfügt (im Gegensatz zu Speichermangel) und zum Auslagern gezwungen wird?
Das ultimative Ziel ist es, zu verhindern, dass das System zum Stillstand kommt, wenn die Festplatte aufgrund schwerwiegender Seitenfehler überlastet wird, aber inaktive Seiten dennoch ausgelagert werden.
Ein weiterer Wunsch wäre es, zu konfigurieren, wie viel Swap-Speicher das System verwenden muss, bevor der Tod auslöst. Auf diese Weise kann das System nur ein wenig in den Swap eintauchen, solange es nicht zu weit geht. Oder ich könnte einen solchen Schwellenwert festlegen, um oom-killer auszulösen, bevor der gesamte Arbeitsspeicher verwendet wird, sodass immer Platz für den Dateisystem-Cache vorhanden ist (und somit mehr Festplatten-Thrashing vermieden wird).
Es scheint nicht so schwer zu sein. Es sieht so aus, als könnten Sie dem Oom-Killer einfach sagen, dass er auslösen soll, wenn das System X-RAM verwendet / frei hat. Aber deshalb frage ich; Ich weiß es nicht.
Zur Verdeutlichung möchte ich Swap nicht ausschalten oder den vm.swappiness
Parameter anpassen
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
column -t -s,
einige große CSV-Dateien weiter bearbeiten und sie beendenearlyoom
, wenn dies nicht möglich ist, bevor ich eine Unreaktivität feststelle.Das klingt nach einer zu aufwändigen Lösung. Ich würde vorschlagen (und ich mache dies auf Computern, die ich eingerichtet habe und die nicht in den Ruhezustand versetzt werden müssen), einfach eine kleine Menge Swap-Speicher (128-256 MB) zuzuweisen. Auf diese Weise kann der Kernel einige Seiten austauschen, aber der OOM-Killer wird aufgerufen, bevor die Dinge schlecht werden.
Wenn Sie dies wirklich tun möchten, müssen Sie wahrscheinlich Ihr eigenes Skript / Programm schreiben, das die Auslagerungsnutzung überwacht und den OOM-Killer mit dem Magic SysReq-Schlüssel aufruft (dies kann programmgesteuert durch Schreiben in erfolgen
/proc/sysrq-trigger
).quelle
vm.swappiness
und den erzwungenen Swap aufgrund fehlenden RAMs. Alles, was passieren muss, ist, wenn der Kernel zum Tauschen gezwungen wird, um oom-killer auszulösen. Und 10 GB lassen auch Tonnen von Speicherplatz für das erzwungene Austauschen, um die Festplatte zu zertrümmern.