Zeigen Sie die vollständigen Programmbefehlszeilenargumente in OOM-Killerprotokollen an

8

Ist es möglich, vollständige Programmbefehlszeilenargumente in OOM-Killler-Protokollen anzuzeigen? Was ich jetzt in / var / log / syslog sehe, ist

Memory cgroup out of memory: Kill process 29187 (beam.smp) score 998 or sacrifice child
Killed process 29302 (cpu_sup) total-vm:4300kB, anon-rss:76kB, file-rss:272kB
beam.smp invoked oom-killer: gfp_mask=0xd0, order=0, oom_score_adj=0
beam.smp cpuset=/ mems_allowed=0-3

Ich habe viele Beam.smp-Prozesse auf meinem Computer und es ist nicht sehr praktisch herauszufinden, welcher bestimmte Prozess von OOM Killer getötet wurde.

sergeyz
quelle

Antworten:

4
echo 1 > /proc/sys/vm/oom_dump_tasks

Dies scheint ungefähr das Maximum zu sein, mit dem der Kernel bei Fehlern aufgrund von Speichermangel angezeigt werden kann.

https://www.kernel.org/doc/Documentation/sysctl/vm.txt

Ermöglicht die Erstellung eines systemweiten Task-Dumps (ohne Kernel-Threads), wenn der Kernel ein OOM-Killing ausführt und Informationen wie pid, uid, tgid, VM-Größe, rss, nr_ptes, swapents, oom_score_adj score und name enthält. Dies ist hilfreich, um festzustellen, warum der OOM-Killer aufgerufen wurde, um die Schurkenaufgabe zu identifizieren, die ihn verursacht hat, und um festzustellen, warum der OOM-Killer die Aufgabe ausgewählt hat, die er zum Töten ausgeführt hat.

Wenn dies auf Null gesetzt ist, werden diese Informationen unterdrückt. Auf sehr großen Systemen mit Tausenden von Aufgaben ist es möglicherweise nicht möglich, die Speicherstatusinformationen für jede einzelne zu sichern. Solche Systeme sollten nicht gezwungen werden, unter OOM-Bedingungen eine Leistungsminderung zu erleiden, wenn die Informationen möglicherweise nicht erwünscht sind.

Wenn dies auf einen Wert ungleich Null gesetzt ist, werden diese Informationen immer dann angezeigt, wenn der OOM-Killer tatsächlich eine Speicherproblematik beendet.

HBruijn
quelle
1
echo 1 > /proc/sys/vm/oom_dump_tasks

hat mir nicht viel geholfen - es sind noch keine Kommandozeilenparameter im Protokoll.
Um die Befehlszeile des abgebrochenen Prozesses nachträglich anzuzeigen, können Sie oben die Systemaktivität aufzeichnen.
Wenn oom-killer s / th tötet, öffnen Sie einfach das Protokoll für diese Zeit, suchen Sie den Prozess anhand der PID aus / var / log / syslog und drücken Sie die Taste 'c', um die Befehlszeile des Prozesses anzuzeigen.

atti
quelle