На 11.04 /proc/[pid]
содержит oom_score_adj
, но man proc
описывает старый oom_adj
. Я безуспешно гуглил любую информацию о том, как это использовать.
Что мне нужно сделать, так это то, что процессы, запущенные с помощью 'pbs' или 'gridengine', будут убиты, прежде чем что-либо еще будет убито. Как я могу это сделать?
process
memory-usage
bmargulies
источник
источник
Ответы:
На основе моих собственных вопросов и ответов по Unix & Linux по аналогичному вопросу.
Как Стюарт очень хорошо указал в своем ответе , допустимые значения являются целыми числами в диапазоне от -1000 до 1000 для
oom_score_adj
. Чем ниже значение, тем ниже вероятность того, что его убьют.Очень неудобно менять это значение снова и снова после перезапуска приложения. Информация просто теряется после завершения процесса. Upstart (демон init в Ubuntu), имеет хорошую опцию для этого, чтобы настроить демонов, чтобы убедиться, что он установлен каждый раз, когда он (повторно) запускается:
Таким образом, вы можете отредактировать
/etc/init/myservice.conf
файл конфигурации для сервисов, которые вы хотите изменить, чтобы включить строкуoom score -1000
. Я предполагаю, что службы pbs или gridengine, о которых вы говорите в своем вопросе, поддерживают Upstart, в противном случае вам понадобится другой способ изменить это навсегда.источник
Если вы можете изменить стартовый скрипт, порождая процесс, который вы хотите расставить по приоритетам для oom-killer, добавьте следующее в стартовый скрипт:
Значение наследуется для дочерних процессов.
источник
Если вы установите высокое значение (ish) для oom_adj или oom_score_adj, то они будут убиты первыми. например
oom_adj идет от -16 до 15 и, как упоминалось выше, oom_score_adj принимает от -1000 до 1000
источник
sudo sh -c "echo -1000 > /proc/[PID]/oom_score_adj"
Изучение кода всегда хорошая идея. Обычно я использую функцию поиска в kernel.org, но сейчас она отключена. Github тоже хорошо справляется. Я нашел это:
С https://github.com/mirrors/linux-2.6/commit/a63d83f427fbce97a6cea0db2e64b0eb8435cd10#include/linux/oom.h
источник
Теперь у нас есть чум .
тл; др
choom --adjust -100 myprogram
.Страница man содержит больше информации.
источник