Ubuntu — процесс убивается ядром из-за потребления ресурсов. Можно ли разрешить ему выполняться долго (или частями)?

Не знаю, как правильно сформулировать вопрос, но кажется, что задача тривиальна и должна была быть решена много раз.

Сформулирую в общем:

Есть процесс, который при выполнении требует определенное количество ресурсов (например, локально - все работает, на слабом VPS - в определенный момент пишет killed и команда dmesg выводит Out of memory in UB...).

Задача стоит так, что этот процесс запускается относительно редко и допускается, чтоб он выполнялся произвольное время.
Понимаю, что легко вылечить более мощным железом, но всё же.

Как я понимаю, здесь не так важно, какой дистрибутив линукса, какое приложение вызывает процесс и т.д.. Если не прав - уточню полностью.
  • Вопрос задан
  • 2938 просмотров
Решения вопроса 1
lesovsky
@lesovsky
System engineer and PostgreSQL DBA
OOM Killer приходит когда ядру нехватает памяти, видимо ваш процесс слишком много потребляет памяти))).
Тут есть два варианта:
1. установите -1000 в /proc/$pid/oom_score_adj (при таком раскладе OOM прийдет но грохнет кого-то другого с меньшим значением oom_score_adj).
2. увеличьте своп. Таким образом объем виртуальной памяти увеличится, и при выполнении вашей задачи вы скорей всего начнете свопиться, но зато OOM не наступит. (И тратиться на железо не придется)

Ну и мониторьте этот ваш процесс, почему же он потребляет столько памяти? может тупо течет?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
Свопа добавьте. OOM приходить перестанет.

oom_score_adj не поможет, скорее всего, потому что у вас этот процесс пытается потребить вообще всю память, которая есть.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы