Можно ли просмотреть полные аргументы командной строки программы в журналах убийц 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 killer.
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 фактически завершает задачу, занимающую память.
echo 1 > /proc/sys/vm/oom_dump_tasks
не сильно мне помогло - в журнале по-прежнему нет параметров командной строки.
для ретроспективного просмотра командной строки убитого процесса вы можете использовать наверху для записи активности системы.
если oom-killer убивает s / th, просто откройте журнал на это время, найдите процесс по PID из / var / log / syslog и нажмите клавишу «c», чтобы просмотреть командную строку процесса.