LINUX.ORG.RU

Oom-killer


2

1

Всего сообщений: 7

low-memory-monitor: анонс нового юзерспейсного обработчика нехватки памяти

Группа Open Source

Bastien Nocera анонсировал новый обработчик нехватки памяти для рабочего стола Gnome. Написан на C. Лицензирован под GPL3. Для работы демона необходимо ядро 5.2 или новее. Демон проверяет дефицит памяти через /proc/pressure/memory и при превышении порога отправляет через dbus предложение процессам о необходимости умерить аппетиты. Также демон может пытаться сохранить отзывчивость системы через запись в /proc/sysrq-trigger.

Страница проекта

Обсуждение на r/linux

Анонс в блоге автора

>>> Подробности

 low-memory-monitor, , , ,

hakavlad
()

Выпуск earlyoom 1.3, процесса для раннего реагирования на нехватку памяти

Группа Open Source

После семи месяцев разработки опубликован выпуск фонового процесса earlyoom 1.3, который периодически проверяет объем доступной памяти (MemAvailable, SwapFree) и пытается на ранней стадии отреагировать на возникновения нехватки памяти.

Если объём доступной памяти меньше заданного значения, то earlyoom принудительно (через отправку SIGTERM или SIGKILL) завершит работу процесса, наиболее активно потребляющего память (имеющего самое большое значение /proc/*/oom_score), не доводя состояние системы до очистки системных буферов и мешающего работе своппинга (обработчик OOM (Out Of Memory) в ядре срабатывает когда состояние нехватки памяти уже достигло критичных значений и обычно к этому моменту система уже не реагирует на действия пользователя).

Earlyoom поддерживает отправку уведомлений о принудительно завершённых процессах на рабочий стол (с помощью notify-send), а также предоставляет возможность определения правил, в которых при помощи регулярных выражений можно задать имена процессов, завершение которых предпочтительно (опция "--prefer") или остановки которых стоит избегать (опция "--avoid").

Основные изменения в новом выпуске:

  • Реализовано ожидание завершения процесса после отправки ему сигнала. Это устраняет проблему, заключающуюся в том, что earlyoom иногда убивает более одного процесса, когда одного будет достаточно;
  • Добавлен вспомогательный скрипт (notify_all_users.py) для уведомления всех залогиненых пользователей о завершении процессов через уведомления notify-send;
  • Исправлено некорректное отображение некоторых имен процессов, содержащих UTF-8 символы;
  • Принят кодекс поведения (Contributor Covenant Code of Conduct).

>>> Подробности

 , ,

hakavlad
()

Первый релиз юзерспейсного OOM-киллера - oomd 0.1.0

Группа Open Source

Разработка Facebook нацелена на более оперативное и выборочное завершение работы процессов, потребляющих слишком много памяти, на стадии до срабатывания OOM-обработчика ядра Linux. Код oomd написан на языке C++ и поставляется под лицензией GPLv2. Oomd уже используется в инфраструктуре Facebook и хорошо зарекомендовал себя при промышленных нагрузках (в частности, проект позволил почти полностью избавиться от возникновения на серверах длительных livelock-блокировок). Подробнее о работе oomd: https://facebookmicrosites.github.io/oomd/

>>> Подробности

 , ,

hakavlad
()

Выпуск Nohang v0.1 - демона, предотвращающего OOM в пространстве пользователя

Выпуск Nohang v0.1 - демона, предотвращающего OOM в пространстве пользователя
Группа Open Source

Nohang - это демон для GNU/Linux, обрабатывающий ситуации нехватки памяти и предотвращающий OOM. Код открыт под лицензией MIT. Написан на Python, потребляет около 10 MiB VmRSS и настраивается с помощью редактирования конфига, расположенного по адресу /etc/nohang/nohang.conf. По сравнению с аналогичным проектом earlyoom, nohang обладает некоторыми дополнительными возможностями.

Основные особенности:

  • настраиваемая интенсивность мониторинга: если на сервере не предполагаются резкие перепады потребления памяти, то можно снизить нагрузку на процессор, снизив интенсивность мониторинга;
  • при нехватке памяти nohang сначала отправляет SIGTERM процессу с наибольшим oom_score. При дальнейшем падении уровня доступной памяти и отсутствии реакции на SIGTERM процесс с наибольшим oom_score получает SIGKIL. Уровни доступной памяти, при достижении которых должны происходить корректирующие действия, могут задаваться в процентах и в MiB;
  • возможность GUI уведомлений о результатах завершения процессов (реализовано с помощью notify-send);
  • возможность GUI уведомлений о низком уровне доступной памяти: настраиваемость уровня памяти, при котором отправляются уведомления, и минимальная периодичность уведомлений (по умолчанию уведомления отключены; уровни памяти для отправки: одновременное снижение уровней SwapFree и MemAvailable до 20%; минимальный период между отправками уведомлений - 20 секунд). В уведомлениях отображается уровень доступной памяти, а также Pid и Name процесса с наибольшим badness;
  • поддержка zram - mem_used_total в качестве триггера (может быть актуально для систем с большим disksize и низкой степенью сжатия сохраняемых в zram данных);
  • предохранение от убийства невинных жертв: задержки после отправки сигналов (по умолчанию 0.5 секунд для SIGTERM и 3 секунды для SIGKILL) предотвращают возможное массовое убийство процессов, так как память при завершении процессов может освобождаться не сразу; возможность игнорировать процессы, имеющие badness ниже заданного;
  • возможность модификации badness процессов перед выбором жертвы через сопоставление имён процессов с заданным в конфиге регулярным выражением;
  • возможна настройка запуска произвольной команды (например, sendmail или systemctl restart) вместо отправки сигнала SIGTERM жертве, если имя процесса-жертвы совпадает с заданным в конфиге именем.

>>> Подробности

 , ,

hakavlad
()

Выпуск earlyoom 1.2

Группа Open Source

После трёх месяцев разработки опубликован выпуск фонового процесса earlyoom 1.2, который периодически проверяет объем доступной памяти (MemAvailable, SwapFree) и пытается на ранней стадии отреагировать на возникновения нехватки памяти.

( читать дальше... )

>>> Подробности

 , ,

hakavlad
()

Выпуск earlyoom 1.1

Группа Open Source

Спустя пять месяцев после предыдущего релиза вышел earlyoom 1.1. Earlyoom - демон, периодически (10 раз в секунду) проверяющий объем доступной памяти (MemAvailable, SwapFree) и, если доступной памяти окажется меньше заданного объема, то процессу с максимальным oom_score будет отправлен сигнал SIGKILL для предотвращения Out of memory. Earlyoom поддерживает отправку десктопных уведомлений об убитых процессах (с помощью notify-send), а также возможность задать с помощью regex имена процессов, убийство которых предпочтительно (опция --prefer) или убийства которых стоит избегать (опция --avoid).

Основные изменения:

  • Исправлена возможная инъекция shell-кода через всплывающие уведомления.
  • Время сна после неудачи убийства процесса снижено с 10 до 1 секунды.
  • Всплывающие уведомления теперь отправляются после убийства процесса, а не перед.
  • Поддержка --help в дополнение к -h.
  • Исправлена проблема неверного отображения имен процессов во всплывающих уведомлениях.
  • Исправлено возможное деление на ноль при использовании опции -S.

>>> Подробности

 , ,

hakavlad
()

OOM Killer

Группа Документация

Рассказ про поведение OOM Killer - механизма ядра, решающего проблемы, связанные с исчерпанием доступной памяти.

>>> Подробности

 ,

catap
()