Введение
Когда в операционной системе Linux исчерпывается свободная оперативная память, подсистема ядра Out of Memory (OOM) Killer активирует алгоритм отбора и принудительного завершения процессов-кандидатов. В этом руководстве подробно рассмотрена работа с системной утилитой choom, позволяющей гибко управлять весовыми коэффициентами OOM. На практических примерах разберем проверку текущих оценок, динамическую корректировку приоритетов для уже запущенных задач, а также запуск критически важных сервисов с гарантированной защитой от аварийной остановки.
1. Назначение choom и подготовка необходимого окружения
Для полноценной работы с процессами и выполнения практических тестов убедимся в присутствии ключевых системных пакетов util-linux и procps.

Утилита choom выступает специализированным интерфейсом для чтения и модификации системного атрибута oom_score_adj. Именно этот параметр анализируется механизмом OOM Killer при калькуляции штрафных очков процесса перед принятием решения о его ликвидации.
Краткий перечень доступных опций и формат вызова можно запросить с помощью ключа --help.
⚙️ [Ключевые параметры]
-p, --pid : идентификатор целевого процесса (PID) для проверки или изменения веса.-n, --adjust : числовое смещение для шкалы OOM Killer (диапазон значений от -1000 до 1000).-h, --help : вывод краткой справки по синтаксису.-V, --version : отображение текущей версии утилиты.

2. Анализ текущего значения OOM Score у работающего процесса
Чтобы поэкспериментировать с метриками OOM на изолированном примере, развернем фоновый процесс, который останется активным в течение десяти минут, выполнив команду sleep 600 &.

Определим идентификатор только что созданного процесса и передадим его в переменную окружения TARGET_PID. Затем обратимся к choom -p, чтобы извлечь действующее значение смещения oom_score_adj.
Для стандартных пользовательских задач, не подвергавшихся специальной настройке, ядро по умолчанию выставляет базовый уровень 0.

Для валидации показаний утилиты сопоставим их с сырыми данными ядра, хранящимися в виртуальной файловой системе /proc.
Прочитав файл oom_score_adj напрямую, мы получаем то же самое нулевое значение (0), что подтверждает полную синхронизацию данных между системным интерфейсом и ядром.

3. Модификация коэффициента уязвимости процесса через choom
Для искусственного повышения вероятности завершения выбранного процесса передадим смещение со значением 500 через ключ -n. Поскольку изменение системных политик требует повышенных привилегий, команда запускается с sudo.
Задание положительного смещения в oom_score_adj существенно повышает приоритет процесса в очереди на выбывание при возникновении критического дефицита RAM.

Удостоверимся, что новые настройки вступили в силу без задержек, повторно запросив статус процесса через команду choom -p.
В выводе терминала фиксируется изменение: исходный показатель 0 сменился на заданный 500, что свидетельствует о мгновенном применении директивы ядром.

4. Запуск защищенных процессов и завершение тестовой сессии
Если перед администратором стоит задача запустить критически важный сервис так, чтобы ядро ни при каких обстоятельствах не останавливало его при нехватке памяти, значение смещения устанавливается на -1000. Запустим фоновую команду с предварительной изоляцией от механизма OOM.
Установка минимально допустимой отметки -1000 полностью исключает процесс из кандидатов на завершение подсистемой OOM Killer даже при катастрофическом исчерпании ОЗУ.

Зафиксируем PID новоиспеченного процесса в переменной TARGET_PID и проверим сконфигурированный статус с помощью choom -p.
Консоль подтверждает присвоение значения -1000, доказывая, что защитные параметры закрепились за процессом непосредственно в момент старта.

По завершении всех тестов освободим ресурсы рабочей станции и остановим фоновую службу, запущенную на ранних этапах практикума, выполнив директиву pkill -f 'sleep 600' || true.
Удаление ненужных демонстрационных процессов позволяет вернуть сервер в исходное чистое состояние без утечек дескрипторов и памяти.

Мы подробно разобрали практические приемы применения choom для инспекции OOM-метрик и резервирования вычислительных ресурсов под ключевые службы.
Грамотная калибровка приоритетов oom_score_adj для фоновых демонов и критических служб гарантирует стабильность и предсказуемость Linux-инфраструктуры под пиковыми нагрузками.