Linux OOM-Killer deaktiviert Probleme

Linux OOM-Killer deaktiviert Probleme

Ich habe eine Linux-Maschine ohne Swap, die vm.overcommit_memory=2und vm.overcommit_ratio=100eingestellt hat. Diese Einstellungen scheinen jedoch keine Wirkung zu haben. Einige neu gestartete Prozesse, die versuchen, viel Speicher zu verbrauchen, werden immer noch OOM-gekillt, anstatt die Speicherzuweisung zu verweigern. Liegt das daran, dass Prozesse, die zuvor gestartet wurden sysctl -w vm.overcommit_memory=2 vm.overcommit_ratio=100(z. B. „bevor“ /etc/sysctl.confwährend des Bootens angewendet wird), möglicherweise immer noch auf ihren überlasteten Speicher zugreifen und dadurch den OOM-Killer auslösen können?Ist es möglich, (1) die Speicherüberbelegung mithilfe von Kernel-Parametern zu deaktivieren oder (2) den Kernel zur Laufzeit zu zwingen, den gesamten überbelegten Speicher allen Prozessen zuzuordnen?

EDIT: Nach dem Durchsuchen des relevanten Documentation/und eines Teils des Linux-Quellcodes (git c6fa8e6de3)(1)scheint unwahrscheinlich.

Antwort1

Sie versuchen etwas, das einfach nicht möglich ist. Wenn Sie das System bis zur Erschöpfung laufen lassen, besteht immer die Möglichkeit, dass ein Prozess aufgrund von Speichererschöpfung beendet wird. Es gibt viele Szenarien, die nicht vermieden werden können, aber das am einfachsten zu verstehende ist ein Seitenfehler, der dadurch verursacht wird, dass ein Prozess eine Seite zu seinem Stapel hinzufügt.

Sie benötigen Swap oder einen RAM-Puffer, wenn Sie OOM-Killing vermeiden möchten.

verwandte Informationen