在OOM Killer日志中查看完整的程序命令行参数


8

是否可以在OOM Killler日志中查看完整的程序命令行参数?我现在在/ var / log / syslog中看到的是

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

我的机器上有很多beam.smp进程,要找出被OOM杀手杀死的特定进程不是很方便。

Answers:


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

这似乎可以使您的内核在出现内存不足错误时显示的最大值。

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

当内核执行OOM杀死操作时,可以生成系统范围的任务转储(不包括内核线程),并包括pid,uid,tgid,vm大小,rss,nr_ptes,swapents,oom_score_adj分数和名称等信息。这有助于确定为什么调用了OOM杀手,确定导致它的恶意任务,以及确定为什么OOM杀手选择了它要杀死的任务。

如果将其设置为零,则将禁止显示此信息。在具有数千个任务的大型系统上,为每个任务转储内存状态信息可能是不可行的。当可能不需要这些信息时,不应强迫此类系统在OOM条件下造成性能损失。

如果将其设置为非零,则无论何时OOM杀手实际杀死占用内存的任务,都会显示此信息。


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

并没有太大帮助-日志中仍然没有命令行参数。
要回顾查看被杀死进程的命令行,您可以使用atop记录系统活动。
如果oom-killer杀死了s / th,只需打开该时间段的日志,然后从/ var / log / syslog中按PID查找您的进程,然后按“ c”键查看该进程的命令行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.