Как работает OOM Killer в Linux и как его настроить
OOM (Out-Of-Memory) в Linux возникает, когда система исчерпывает память (RAM и swap). Для предотвращения зависания ядро запускает OOM Killer, который завершает процессы, освобождая ресурсы.
Как выбирается жертва?
OOM Killer оценивает процессы по «весу» (OOM Score). Это значение зависит от:
- Объема памяти: больше памяти — выше риск.
- Приоритета (OOM Adjust Score): значение от -1000 (процесс защищен) до +1000 (максимальный риск).
- Системной важности: критические процессы (например, демоны) убиваются реже
Настройка OOM Killer
Для настройки используйте /proc/[PID]/oom_score_adj. Например:
echo -1000> /proc/1234/oom_score_adj
Как избежать OOM?
Мониторинг памяти: используйте 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 защищает систему от сбоев, но важно его настроить, чтобы предотвратить завершение критически важных процессов. Используйте мониторинг, настройку ядра и ограничения ресурсов, чтобы минимизировать риски.