Как получить дополнительную информацию о процессах, когда в Linux заканчивается память?

Недавно у меня возникла проблема с тем, что oom-killer через некоторое время начал убивать процессы. Я мог видеть, что память была израсходована, но к тому времени, когда я добрался до сервера, было уже неясно, что ее потребляло. Есть ли хорошее неочевидное место, чтобы получить больше информации о oom-killer? Например. подробная информация о процессах на момент активации, подробная информация об убитых процессах и причинах выбора?

Я ищу конкретное место, где можно найти эту информацию, конкретный инструмент для ее сбора или некоторую конфигурацию для улучшения отчетов oom-killer. Я не ищу общую информацию о oom-killer. / var / messages по умолчанию будет содержать только подробный отчет о свободной / выделенной памяти, но не о конкретных процессах, которым она была выделена.


person Jevgeni Kabanov    schedule 23.09.2008    source источник


Ответы (3)


Вы можете проверить файл журнала сообщений, чтобы увидеть, какой процесс был остановлен, и некоторую связанную информацию. Что касается причин:

... идеальный кандидат на ликвидацию - это недавно запущенный непривилегированный процесс, который вместе со своими дочерними процессами использует много памяти, был хорош и не выполняет необработанного ввода-вывода. Что-то вроде параллельной сборки ядра nohup'd (что неплохой выбор, поскольку все результаты сохраняются на диск и очень мало работы теряется при завершении make).

Из здесь.

Вы можете определить некоторые процессы, чтобы они были невосприимчивы к убийце, отрегулировать параметр подкачки, если он у вас слишком низкий (что делает триггер-убийцу счастливым) и проверить перечисленные вещи здесь

person Vinko Vrsalovic    schedule 23.09.2008

Обычно вы должны получить сообщение в / var / log / messages с довольно большим количеством деталей, относящихся к процессу, который был убит oom-killer.

person BigMikeD    schedule 23.09.2008
comment
Не совсем, я почему-то вижу только информацию о памяти. - person Jevgeni Kabanov; 23.09.2008

Это не точный ответ на ваш вопрос, но malloc(3) справочная страница Linux содержит некоторую информацию о том, как отключить чрезмерное выделение памяти.

echo 2 > /proc/sys/vm/overcommit_memory
person Thorsten79    schedule 23.09.2008