Linux

在 OOM 殺手日誌中查看完整的程序命令行參數

  • September 11, 2015

是否可以在 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 程序,要找出 OOM 殺手殺死了哪個特定程序並不是很方便。

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 殺手實際殺死佔用記憶體的任務,就會顯示此資訊。

引用自:https://serverfault.com/questions/651810