Ist es möglich, dass das System inaktive Seiten präventiv auslagert (vm.swappiness
), aber den oom-killer aufrufen, wenn dem System der Arbeitsspeicher ausgeht (im Gegensatz zum Arbeitsspeicher) und zum Austauschen gezwungen wird?
Das ultimative Ziel besteht darin, zu verhindern, dass das System zum Erliegen kommt, wenn es anfängt, die Festplatte wegen schwerwiegender Seitenfehler zu zertrümmern, aber dennoch inaktive Seiten ausgelagert werden können.
Ein weiterer Wunsch wäre, zu konfigurieren, wie viel Auslagerungsspeicher das System verwenden muss, bevor der Oom-Killer 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 RAM verwendet wird, sodass immer Platz für den Dateisystem-Cache vorhanden ist (und somit mehr Festplatten-Thrashing vermieden wird).
Es scheint nicht so, als wäre dies so schwer zu tun. Es scheint, 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 Klarstellung:Ich möchte Swap nicht deaktivieren oder die vm.swappiness
anpassen Parameter
Akzeptierte Antwort:
Ich hatte auch mit diesem Problem zu kämpfen. Ich möchte nur, dass mein System auf jeden Fall reaktionsfähig bleibt, und ich ziehe es vor, Prozesse zu verlieren, anstatt ein paar Minuten zu warten. Es scheint keine Möglichkeit zu geben, dies mit dem Kernel-Oom-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 % fällt.
Ohne Earlyoom war es einfach, meinen Rechner (8 GB RAM) zu sperren, indem ich http://www.unrealengine.com/html5/ ein paar Mal gestartet habe. Jetzt werden die schuldigen Browser-Tabs gelöscht, bevor die Dinge außer Kontrolle geraten.