Найти тему
Проект OpenNet

В Fedora 32 намерены включить earlyoom для раннего реагирования на нехватку памяти

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

В более отдалённых выпусках Fedora рассматривается возможность включения обработчика нехватки памяти low-memory-monitor, который использует появившийся в ядре Linux 4.20 и улучшенный в 5.2 интерфейс /proc/pressure/memory для оценки нехватки памяти в системе, но в отличие от earlyoom сразу не завершает процессы, а отправляет через DBus уведомление о необходимости снизить потребление памяти (если после этого ситуация не нормализовалась, возможна активация OOM Killer ядра). Low-memory-monitor требует модификации приложений, поэтому он рассматривается как решение для отдалённой перспективы, которое можно будет задействовать после адаптации приложений GNOME.

Для отслеживания ситуации нехватки памяти приложениями в Glib 2.63.3 добавлен API GMemoryMonitor, позволяющий отслеживать сигналы от low-memory-monitor и принимать меры (например, приложение может освободить память, используемую для кеширования, сохранить файлы, запустить сборку мусора, попытаться сократить фрагментацию памяти или завершить простаивающие вспомогательные процессы). Поддержка GMemoryMonitor также добавлена в xdg-desktop-portal для использования в изолированных приложениях, поставляемых в формате flatpak.

Дополнение: Пакет с earlyoom также подготовлен для openSUSE и запрошен для включения в основной состав. В Arch Linux пакет earlyoom доступен в AUR.