是否有可能在OOM杀手日志中查看完整的程序命令行参数? 我现在在/ 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进程,findOOM杀手所杀的特定进程并不是很方便。
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杀手被调用,以确定造成它的stream氓任务,并确定为什么OOM杀手select了杀死它的任务。
如果这个设置为零,这个信息被抑制。 在具有数千个任务的非常大的系统上,转储每个内存状态信息可能是不可行的。 当信息可能不被期望时,这样的系统不应被迫在OOM条件下招致性能损失。
如果设置为非零,那么只要OOM杀手实际上杀死一个内存占用任务,就会显示这个信息。
echo 1 > /proc/sys/vm/oom_dump_tasks
没有太多帮助 – 日志中仍然没有命令行参数。
回顾性地查看死亡过程的命令行,您可以使用atop来logging系统活动。
如果杀手杀死了s / th,那么只要在日志上打开这个时间,就可以通过/ var / log / syslog中的PID进行处理,然后点击'c'键查看进程的命令行。