Подробный гайд по настройке zswap в Linux

Подробный гайд по настройке zswap в Linux: выбираем алгоритмы сжатия (zstd, lz4) и пулы памяти (zsmalloc, z3fold) для максимального ускорения системы и экономии RAM.

2026.07.15                  


Подробный гайд по настройке zswap в LinuxПодробный гайд по настройке zswap в Linux Настройка zswap — это отличный способ значительно повысить отзывчивость системы и снизить износ накопителя, особенно если у вас небольшой объём оперативной памяти или используется медленный swap (например, на HDD или eMMC). Zswap работает как сжатый кэш в оперативной памяти, перехватывая страницы, которые должны быть выгружены в swap.

Ниже представлен подробный гайд по выбору и настройке алгоритмов сжатия и пулов памяти.


Шаг 1. Понимание компонентов zswap

Чтобы настроить zswap, нужно выбрать две главные составляющие:

  1. Алгоритм сжатия (zswap.compressor): Отвечает за то, как данные будут сжиматься. Влияет на соотношение скорость/степень сжатия.
  2. Пул памяти (zswap.zpool): Отвечает за то, где и как будут храниться сжатые данные в RAM. Влияет на фрагментацию и эффективность использования памяти.

Шаг 2. Выбор алгоритма сжатия (zswap.compressor)

Перед настройкой убедитесь, что модули криптографического сжатия загружены в ядро (иначе zswap не сможет использовать алгоритм и откатится на дефолтный).


1. zstd (Рекомендуется для большинства случаев)

  • Особенности: Обеспечивает наилучшую степень сжатия при приемлемой скорости.
  • Плюсы: Позволяет сохранить в RAM больше страниц. Идеален для десктопов, серверов и систем с ограниченной RAM.
  • Минусы: Требует чуть больше ресурсов CPU на сжатие/распаковку по сравнению с lz4.
  • Модуль ядра: zstd (или zstd_compress).

2. lz4 (Для максимальной скорости)

  • Особенности: Экстремально быстрое сжатие и распаковка, но степень сжатия ниже.
  • Плюсы: Минимальная задержка (latency). Отлично подходит, если CPU слабый, а диск очень медленный, или для задач, где важна каждая миллисекунда отклика (например, высоконагруженные базы данных в RAM).
  • Минусы: Сжатые данные занимают больше места в RAM.
  • Модуль ядра: lz4 (или lz4_compress).

3. lzo / lzo-rle (Классический баланс)

  • Особенности: lzo — старый стандарт, lzo-rle (Run Length Encoding) — его улучшенная версия, лучше справляется с повторяющимися данными.
  • Плюсы: Быстрый, проверенный временем, низкие требования к CPU.
  • Минусы: По степени сжатия уступает zstd, по скорости lz4 часто оказывается быстрее.
  • Модуль ядра: lzo, lzo_rle.

Шаг 3. Выбор пула памяти (zswap.zpool)

1. zsmalloc (Золотой стандарт)

Особенности:

Аллокатор, специально разработанный для zswap и zram. Он хранит объекты разного размера, минимизируя фрагментацию памяти.

Плюсы:

Наибольшая эффективность использования RAM, минимальные накладные расходы.

Рекомендация:

Используйте его в 95% случаев. Это дефолтный и самый оптимальный выбор.


2. z3fold (Специфические сценарии)

Особенности:

Может упаковывать до трех сжатых страниц в один физический блок (отсюда "3").

Плюсы:

Может показать slightly лучшую эффективность, если ваш рабочий профиль (workload) генерирует страницы, которые сжимаются ровно до 1/2 или 1/3 физического размера.

Минусы:

Более сложная логика, иногда может приводить к чуть большей фрагментации или накладным расходам на управление по сравнению с zsmalloc.

(Примечание: существует еще zbud, но он устарел и менее эффективен, чем zsmalloc, поэтому для современных систем его использовать не рекомендуется).


Шаг 4. Применение настроек

Вариант А: Временная настройка (для тестирования)

Вы можете изменить параметры "на лету" без перезагрузки.

Важно: сначала загрузите нужный крипто-модуль!

# Загружаем модуль сжатия (пример для zstd)
sudo modprobe zstd

# Применяем алгоритм сжатия
echo zstd | sudo tee /sys/module/zswap/parameters/compressor

# Применяем пул памяти
echo zsmalloc | sudo tee /sys/module/zswap/parameters/zpool

# Включаем zswap (если был выключен)
echo 1 | sudo tee /sys/module/zswap/parameters/enabled

Вариант Б: Постоянная настройка (через параметры ядра)

Чтобы настройки применялись при каждой загрузке, нужно добавить их в загрузчик (обычно GRUB).

1. Откройте конфигурационный файл GRUB:

   sudo nano /etc/default/grub

2. Найдите строку GRUB_CMDLINE_LINUX_DEFAULT и добавьте параметры.

Пример оптимальной конфигурации (zstd + zsmalloc):

   GRUB_CMDLINE_LINUX_DEFAULT="quiet splash zswap.enabled=1 zswap.compressor=zstd zswap.zpool=zsmalloc zswap.max_pool_percent=20"

(Параметр max_pool_percent=20 ограничивает кэш zswap 20% от общего объема RAM. Вы можете изменить это значение, например, на 15 или 25).


3. Обновите конфигурацию GRUB:

Для Debian/Ubuntu/Mint:

     sudo update-grub

Для Fedora/RHEL/Arch/CentOS:

     sudo grub2-mkconfig -o /boot/grub2/grub.cfg
     # или для EFI:
     sudo grub2-mkconfig -o /boot/efi/EFI/<distro>/grub.cfg

4. Перезагрузите систему.


Шаг 5. Проверка и мониторинг

После перезагрузки убедитесь, что параметры применились:

cat /sys/module/zswap/parameters/compressor
cat /sys/module/zswap/parameters/zpool
cat /sys/module/zswap/parameters/enabled

Чтобы посмотреть статистику работы zswap (сколько страниц сохранено, какой размер пула и т.д.), нужно прочитать файлы из debugfs:

# Монтируем debugfs, если не смонтирован
sudo mount -t debugfs none /sys/kernel/debug

# Смотрим статистику
cat /sys/kernel/debug/zswap/stored_page_size
cat /sys/kernel/debug/zswap/pool_total_size
cat /sys/kernel/debug/zswap/written_back_pages
* pool_total_size — реальный объем RAM, занятый пулом zswap.
* stored_page_size — объем несжатых данных, хранящихся в пуле.
* Отношение pool_total_size к stored_page_size покажет вам реальную степень сжатия.

Резюме и рекомендации для вас, Денис Сергеевич:

. Универсальный выбор (Десктоп, ноутбук, обычный сервер):

zswap.compressor=zstd + zswap.zpool=zsmalloc. Это даст максимальную экономию RAM при отличной скорости.

2. Выбор для энтузиастов скорости (Старый CPU, но быстрый SSD/NVMe, или специфичные low-latency задачи):

zswap.compressor=lz4 + zswap.zpool=zsmalloc.

3. Не забывайте про zswap.max_pool_percent:

Если у вас 32 ГБ RAM, 20% (6 ГБ) для кэша — это много. Если у вас 8 ГБ RAM, 20% (1.6 ГБ) — в самый раз. Настраивайте этот параметр в зависимости от объема вашей памяти.

Если после настройки система будет вести себя нестабильно (что крайне редко, но бывает на специфичных ядрах), вы всегда можете откатиться, убрав параметры из GRUB или временно отключив zswap (echo 0 > /sys/module/zswap/parameters/enabled).


Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.


Статью подготовил: Денис Аверко @Nymexis г. Омск

Комментарии

Загрузка...
Если комментарии не загружаются, можете попробовать отключить блокировщик рекламы для этого сайта