Работает ли OOM Killer в Linux, если нет swap-раздела?

«Работает ли OOM Killer в Linux, если нет swap-раздела?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Почему он работает без swap? OOM Killer реагирует на давление в памяти RAM, а не на заполнение swap. Отсутствие swap лишь ускоряет исчерпание физической памяти, что может привести к более раннему срабатыванию OOM Killer.

Практический пример диагностики:

# Проверить, не срабатывал ли OOM Killer (просмотр логов ядра)
sudo dmesg -T | grep -i "killed process"

# Посмотреть текущие настройки управления памятью, влияющие на OOM
cat /proc/sys/vm/overcommit_memory  # Стратегия overcommit
cat /proc/sys/vm/panic_on_oom       # Вызывать ли панику при OOM (0 - нет, 1 - да)

# Проверить оценку "плохости" (oom_score) для текущих процессов
cat /proc/$(pidof your_process)/oom_score

Для DevOps: В продакшн-среде без swap важно тщательно настраивать лимиты памяти для контейнеров (Docker -m, Kubernetes resources.limits.memory) и мониторить использование RAM, чтобы OOM Killer не завершал критичные сервисы.