12

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

Как мне вернуть ООМ-убийцу к его старым, кровожадным способам?

2 ответа2

4

Я бы уменьшил количество пространства подкачки, которое у вас есть. Типичные установки в наши дни пытаются выделить столько свопа, сколько имеется физической памяти (а иногда и вдвое больше). Проблема в том, что когда что-то идет не так, система впадает в смертельную спираль попыток "перетасовать" вещи из памяти на диск и обратно, и она начинает делать так много, что не успевает ответить для ввода пользователя.

В старые добрые времена все процессы были выгружены на диск (и обратно), поэтому были необходимы большие перестановки.

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

0

Вот что сработало для меня:

echo 1 > /proc/sys/vm/oom_kill_allocating_task

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

a = []; while (true) { a.push(1); }

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

echo "vm.oom_kill_allocating_task=1" >> /etc/sysctl.conf

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