Есть ли какой-нибудь способ предотвратить что-либо в Linux от замены чего-либо, кроме как обратиться к убийце OOM, если у него не хватает физической памяти?

Фон

У меня есть рабочая станция Linux, которая время от времени исчерпывает ОЗУ. Когда это происходит, оно становится невосстановимым. (Это верно независимо от того, включен ли обмен или нет, я видел, что это происходит в обоих направлениях.)

В этом случае я хочу, чтобы OOM killer начал убивать процессы и продолжал делать это до тех пор, пока система не восстановится или не выйдет из строя (или что-то среднее между ними предпочтительнее неопределенного зависания). Интересно, что даже при отключенном свопе этого не происходит, а система дает указания, что это своп (все работает, просто на несколько медленнее).

Моя текущая теория заключается в том, что Linux по-прежнему обменивается данными, которые, по его мнению, поддерживаются диском, например, страницы только для чтения из исполняемых файлов и файлов mmap.

Примечание: я уже потратил некоторые усилия и исчерпал множество методов для ограничения использования памяти. Я не могу сделать много, если больше этого не мешая нормальной работе. Я действительно ищу решение "убей их всех и позволь пользователю разобраться".

1 ответ1

0

Я не знаю, работает ли это на всех дистрибутивах Linux.

Сделайте процесс менее вероятным, чтобы вас убили. nnn = pid

echo -15 > /proc/nnn/oom_adj

Мы можем повысить вероятность того, что OOM killer убьёт процесс nnn, выполнив следующее.

echo 10 > /proc/nnn/oom_adj

Тем не мение.

Это не похоже на отличное решение для меня. Я хотел бы кое-что сделать с ограничением ресурсов для процессов задолго до того, как рассмотрим подобные вещи. ulimit существует именно по этой причине. Это не отменяет ваш текущий подход, если вы уже сделали это. Но это действительно отвечает на вопрос, я думаю. Это потребует от вас:

контролировать вещи и принимать меры, чтобы убить

Примите этот подход к убийству априори, если вы «знаете», что можете жить без чего-либо. Возникает вопрос - почему этот процесс работает, если вы можете жить без него?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .