Подробный гайд: Как тип диска влияет на производительность swap

Влияние типа диска на производительность swap: сравнение HDD, SSD, NVMe, настройки swappiness, zswap, оптимизация Linux.

2026.04.24                  


Подробный гайд: Как тип диска влияет на производительность swapПодробный гайд: Как тип диска влияет на производительность swap

Сравнение типов накопителей для swap

Тип диска Скорость чтения/записи Задержка (latency) IOPS (случайный доступ) Влияние на swap
HDD (SATA) 80–160 МБ/с 5–15 мс 50–200 Критически медленно, частые «подвисания»
SATA SSD 500–560 МБ/с 0.1–0.2 мс 50 000–100 000 Заметно лучше HDD, но возможен износ
NVMe SSD (PCIe 3.0) 2 000–3 500 МБ/с 0.02–0.05 мс 300 000–500 000 Отлично, но ядро может стать узким местом
NVMe SSD (PCIe 4.0/5.0) 5 000–7 000+ МБ/с <0.02 мс 700 000–1 500 000 Максимальная производительность, но требует тонкой настройки

Даже самый быстрый NVMe-диск в 10–100 раз медленнее оперативной памяти (которая работает на скоростях 20–50 ГБ/с с задержками <0.01 мс).


Как тип диска влияет на ключевые параметры swap

1. Скорость подкачки (swapping speed)

  • HDD: Механические задержки поиска головки делают подкачку крайне медленной. При активной подкачке система может «зависнуть» на секунды.
  • SSD: Отсутствие движущихся частей снижает задержки в 50–100 раз. Подкачка становится практически незаметной при умеренной нагрузке.
  • NVMe: Протокол NVMe и шина PCIe минимизируют накладные расходы. Однако при интенсивной подкачке ядро Linux может стать узким местом — подсистема swap не всегда масштабируется под такие скорости.

2. Износ накопителя (endurance)

  • HDD: Не имеет ограничений на количество записей. Идеален для сценариев с частой подкачкой, но проигрывает в скорости.
  • SSD/NVMe: Используют флеш-память с ограниченным числом циклов записи/стирания (P/E cycles). Частая подкачка увеличивает write amplification — внутренние операции перераспределения данных, которые ускоряют износ.

Решение:

  • Используйте zswap (сжатие в памяти перед записью на диск) или настройте swappiness, чтобы уменьшить объём записей.

3. Тепловыделение и стабильность

Интенсивная запись на SSD/NVMe может вызывать нагрев, что в долгосрочной перспективе снижает надёжность накопителя. Убедитесь в наличии адекватного охлаждения, особенно в серверных конфигурациях.


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

Выбор типа swap-устройства

# Проверка активных swap-устройств
swapon --show

# Просмотр приоритетов (можно задать при добавлении)
cat /proc/swaps
Для десктопов с одним диском:
  • Используйте swap-файл на том же накопителе — гибкость важнее микроскопической разницы в скорости.
Для серверов с несколькими дисками:
  • Разместите swap на самом быстром накопителе (NVMe), а данные — на других. Можно задать приоритет: sudo swapon /dev/nvme0n1p2 -p 100 # Высокий приоритет для NVMe sudo swapon /dev/sda3 -p 10 # Низкий приоритет для HDD

Оптимизация параметров ядра

Настройка swappiness (0–100)

# Проверка текущего значения
cat /proc/sys/vm/swappiness

# Уменьшить агрессивность подкачки (рекомендуется для SSD/NVMe)
sudo sysctl vm.swappiness=10

# Сохранить настройку
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
  • 10–20: Минимизировать подкачку (базы данных, высоконагруженные серверы)
  • 60: Значение по умолчанию (баланс)
  • 80–100: Активно использовать swap (только для систем с очень ограниченной RAM)

Включение zswap (сжатие перед записью)

# Проверка поддержки
grep CONFIG_ZSWAP /boot/config-$(uname -r)

# Включение (если собрано в ядро)
sudo sysctl vm.zswap_enabled=1
echo "vm.zswap_enabled=1" | sudo tee -a /etc/sysctl.conf

zswap может сократить объём записей на диск на 50–80%, что особенно важно для продления срока службы SSD.

Оптимизация для многопоточных нагрузок (NVMe)

Для систем с мощными NVMe-дисками и многопоточными приложениями рассмотрите:

  • Обновление до ядра 5.10+ (улучшена масштабируемость swap cache)
  • Настройку vm.page-cluster=0 для уменьшения задержек при чтении из swap
  • Использование THP (Transparent Huge Pages) с осторожностью — может как ускорить, так и замедлить работу в зависимости от нагрузки

Рекомендуемый размер swap в зависимости от диска и RAM

RAM HDD-система SSD/NVMe-система С гибернацией
≤2 ГБ 2× RAM 1.5× RAM ≥ RAM + 1 ГБ
2–8 ГБ = RAM 0.5–1× RAM ≥ RAM
8–32 ГБ 4–8 ГБ 4–8 ГБ ≥ RAM
>32 ГБ 8–16 ГБ 8–16 ГБ ≥ RAM (или отключить гибернацию)

Для современных систем с ≥16 ГБ RAM и SSD/NVMe часто достаточно 4–8 ГБ swap как «страховки» на случай пиковых нагрузок.


Когда swap можно отключить

Рассмотрите отключение swap, если:

  • Система имеет избыток RAM (>64 ГБ) и предсказуемую нагрузку
  • Работают приложения, чувствительные к задержкам (real-time базы данных, HFT-торговля)
  • Используется авто-масштабирование в облаке (лучше добавить инстанс, чем тормозить)
# Временное отключение
sudo swapoff -a

# Постоянное отключение: закомментируйте строки swap в /etc/fstab

Без swap при нехватке памяти ядро активирует OOM-killer, который принудительно завершит процессы. Это может привести к потере данных.


Мониторинг и диагностика

# Общая статистика памяти
free -h

# Активность swap в реальном времени
vmstat 1

# Какие процессы используют swap
for file in /proc/*/status ; do 
    awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file
done | sort -k 2 -n -r | head -10

# Статистика записей на диск (оценка износа)
iostat -x 1
smartctl -a /dev/nvme0n1 | grep "Media_Wearout_Indicator"

Тревожные признаки:

  • Постоянная активность swap при свободной RAM → проверьте swappiness и утечки памяти
  • Высокий %util на диске при низкой нагрузке → возможно, swap стал узким местом
  • Падение производительности после обновления ядра → проверьте изменения в подсистеме памяти

Итоговая таблица выбора

Сценарий Рекомендуемый диск для swap Доп. настройки
Бюджетный ПК / старый сервер HDD (если нет SSD) swappiness=20, увеличить размер swap
Домашний ПК / ноутбук SATA SSD swappiness=10, включить zswap
Рабочая станция / Dev-сервер NVMe swappiness=10, zswap=1, ядро 5.10+
Высоконагруженный продакшн Выделенный NVMe (отдельный от данных) Приоритет swap, мониторинг износа, zswap
In-memory БД / Real-time Без swap или минимальный на быстром диске swappiness=1, мониторинг OOM

Главный принцип:

  • Swap — это страховка, а не замена оперативной памяти. Даже на NVMe подкачка замедляет систему. Оптимальная стратегия: достаточно RAM + умеренный swap + правильные настройки ядра.