← Назад к вопросам

Что произойдет, если закончилась ОЗУ при включенном SWAP в Linux

1.7 Middle🔥 71 комментариев
#Linux и администрирование

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что произойдет при исчерпании ОЗУ с включенным SWAP в Linux?

Когда оперативная память (ОЗУ) полностью заполняется, система Linux начинает использовать swap-раздел (или swap-файл) для перемещения неактивных страниц памяти из RAM на диск. Это позволяет продолжать работу, но с серьезными последствиями для производительности.

Механизм работы swap в Linux

Linux использует swapping и paging для управления памятью. Основные компоненты:

  • Swap partition/file — область на диске, резерв для памяти.
  • Swap cache — временное хранилище для страниц перед записью на диск.
  • kswapd — демон ядра, отвечающий за управление swap.

Когда свободная RAM исчерпана, ядро запускает процесс pageout:

# Пример просмотра использования swap и памяти
free -h

Вывод покажет, как заполняются Swap и Mem.

Последствия исчерпания RAM и активного использования swap

  1. Катастрофическое снижение производительности

    • Дисковые операции (I/O) на порядки медленнее RAM (миллисекунды vs наносекунды).
    • Система начинает thrashing — постоянное перемещение страниц между RAM и диском, что почти парализует работу.
  2. Системные процессы могут быть убиты (OOM Killer)

    • Если даже swap заполняется, ядро запускает Out-Of-Memory Killer.
    • OOM Killer оценивает процессы по сложной формуле (oom_score) и убивает наиболее "дорогие" для освобождения памяти.
    # Проверка oom_score для процессов (пример)
    cat /proc/[PID]/oom_score
    
  3. Возможная деградация служб и приложений

    • Критичные службы (базы данных, веб-серверы) могут стать недоступными.
    • Приложения могут аварийно завершаться из-за невозможности выделить память.

Как система реагирует на полное заполнение swap

Если и swap полностью заполняется, ситуация становится критической:

  • OOM Killer активируется агрессивно, часто убивая важные процессы.
  • Система может стать неотвечающей, так даже ядру негде выполнять операции.
  • Возможен полный крах (kernel panic) в крайних случаях.

Практическое наблюдение и диагностика

В реальности проблемы начинаются задолго до полного заполнения swap. Симптомы:

  • Высокая загрузка I/O диска (по iostat):
iostat -x 1
  • Рост использования swap (по vmstat):
vmstat 1
  • Система замедляется, время ответа увеличивается.

Стратегии предотвращения

  1. Мониторинг — использовать инструменты (prometheus, grafana) для отслеживания RAM и swap.
  2. Настройка параметров ядра — регулировка swappiness:
# Текущее значение swappiness (0-100)
cat /proc/sys/vm/swappiness
# Временное изменение
sysctl vm.swappiness=30
  • swappiness=0 — максимально избегать swap.
  • swappiness=100 — активно использовать swap.
  1. Ограничение процессов — через cgroups или ulimit для предотвращения захвата памяти одним процессом.
  2. Оптимизация приложений — кэширование, пулы соединений, профилирование памяти.

Итог

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

Что произойдет, если закончилась ОЗУ при включенном SWAP в Linux | PrepBro