Как работает OOM Killer в Linux и как его настроить

OOM (Out-Of-Memory) в Linux возникает, когда система исчерпывает память (RAM и swap). Для предотвращения зависания ядро запускает OOM Killer, который завершает процессы, освобождая ресурсы.

OOM Killer оценивает процессы по «весу» (OOM Score). Это значение зависит от:

  • Объема памяти: больше памяти — выше риск.
  • Приоритета (OOM Adjust Score): значение от -1000 (процесс защищен) до +1000 (максимальный риск).
  • Системной важности: критические процессы (например, демоны) убиваются реже

Для настройки используйте /proc/[PID]/oom_score_adj. Например:

echo -1000> /proc/1234/oom_score_adj

Мониторинг памяти: используйте htop, free.

Swap: проверьте, что он настроен (swapon -s).

Настройка ядра: параметр vm.overcommit_memory:

- 0 (по умолчанию) — баланс между памятью и swap.

- 2 — запрещает выделение памяти без ресурсов.

echo 2> /proc/sys/vm/overcommit_memory

cgroups: ограничьте память для групп процессов:

echo 1G> /sys/fs/cgroup/memory/limit_in_bytes

ulimit: задайте ограничения:

ulimit -m [лимит в KB]

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