Как использовать Zswap и Zram в Linux

Как использовать Zswap и Zram в Linux


В этой статье разбираем продвинутые техники управления swap в Linux с упором на механизмы сжатого swap: zswap и zram.

Эти технологии сжимают данные, которые попадают в swap, уменьшая количество операций ввода-вывода. В результате система может работать отзывчивее (особенно если у вас немного оперативной памяти или используется медленное хранилище).

Механизмы сжатого swap: краткий обзор

Что такое Zswap?

Zswap - это возможность ядра, которая реализует сжатый write-back кэш для swap-страниц. Когда он включён, страницы, которые обычно выгружались бы на диск, сначала сжимаются и сохраняются в оперативной памяти. Это снижает количество операций ввода-вывода и в ряде случаев даёт прирост производительности.

Что такое Zram?

Zram (раньше назывался compcache) создаёт сжатое блочное устройство прямо в RAM. Его можно использовать как swap-раздел или как обычный RAM-диск. За счёт сжатия данных система может держать больше страниц в памяти - фактически увеличивая доступный объём ОЗУ.

Зачем вообще использовать Zswap или Zram?

  • Меньше дискового I/O

Сжатие swap-данных снижает количество обращений к диску. На системах с медленным хранилищем это может ощутимо ускорить работу.

  • Лучшая отзывчивость

Из-за меньшей задержки при работе со swap приложения могут работать быстрее и «плавнее».

  • Меньше износа SSD

Чем меньше записей на SSD, тем дольше он прослужит.

  • Более эффективное использование памяти

Сжатый swap позволяет уместить больше данных в RAM. Для систем с небольшим объёмом оперативной памяти это особенно полезно.

Настройка Zswap

Проверяем, поддерживает ли ядро Zswap

Чтобы убедиться, что ваше ядро собрано с поддержкой zswap, выполните:

grep -i zswap /boot/config-$(uname -r)

В выводе должна быть строка:

CONFIG_ZSWAP=y

Включаем Zswap при загрузке

Чтобы активировать zswap на этапе загрузки, добавьте параметр ядра zswap.enabled=1.

Если используете GRUB2, откройте /etc/default/grub и отредактируйте строку GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash zswap.enabled=1"

После этого обновите конфигурацию GRUB:

sudo update-grub

Дополнительные параметры Zswap (по желанию)

При необходимости можно настроить дополнительные параметры:

  • zswap.max_pool_percent - максимальный процент RAM, который может использовать zswap.
  • zswap.compressor - алгоритм сжатия (например, lz4, zstd).
  • zswap.zpool - аллокатор памяти (например, zbud, z3fold).

Чтобы задать их, добавьте параметры в строку команд ядра:

zswap.enabled=1 zswap.max_pool_percent=20 zswap.compressor=lz4 zswap.zpool=z3fold

Перезагрузка и проверка

Перезагрузите систему:

sudo reboot

После загрузки проверьте, что zswap инициализировался:

sudo dmesg | grep -i zswap

В выводе должна появиться строка, указывающая на успешную инициализацию zswap.

Настройка Zram

Установка zram-tools

В системах на базе Debian установите пакет zram-tools:

sudo apt install zram-tools

Настройка Zram

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

sudo nano /etc/default/zramswap

Там можно изменить основные параметры:

  • ALGO - алгоритм сжатия (например, lz4, zstd)
  • PERCENTAGE - процент RAM, который будет выделен под zram
  • PRIORITY - приоритет swap

Пример конфигурации:

ALGO=lz4
PERCENTAGE=50
PRIORITY=100

Запуск Zram swap

Чтобы включить и запустить zram:

sudo systemctl enable zramswap.service
sudo systemctl start zramswap.service

Проверяем, что Zram работает

Посмотреть активные swap-устройства можно так:

sudo swapon --show

В списке должен появиться /dev/zram0.

Комбинирование Zswap и Zram

Zswap и zram могут работать по отдельности, но их одновременное использование требует аккуратной настройки. Включать оба механизма для swap обычно не рекомендуется: конфигурация усложняется, а поведение системы может стать менее предсказуемым с точки зрения производительности.

Если всё же решите использовать их вместе, настройте zswap так, чтобы он сначала пытался сжимать страницы в RAM, и только затем задействовался zram или дисковый swap.

Пара эксплуатационных моментов

Что выбрать: Zswap или Zram

  • Zswap лучше подходит для систем с медленным хранилищем или когда важно снизить количество операций записи на диск.
  • Zram - хороший вариант для машин с небольшим объёмом RAM или вообще без выделенного swap-устройства.

Алгоритмы сжатия

Разные алгоритмы дают разный баланс между скоростью и степенью сжатия:

  • lz4 - самый быстрый, но с более низким коэффициентом сжатия
  • zstd - компромисс между скоростью и эффективностью
  • lzma или gzip - более высокий коэффициент сжатия, но заметно медленнее

Выбор зависит от требований к производительности конкретной системы.

Мониторинг использования сжатого swap

Для zswap:

sudo cat /sys/kernel/debug/zswap/sta

Для zram:

sudo zramctl

Параметр swappiness

Настройка vm.swappiness влияет на то, насколько активно система использует swap.

В случае со сжатым swap более высокое значение swappiness может быть оправданным.

Возможные минусы

  • Рост нагрузки на CPU

Сжатие и распаковка данных требуют процессорного времени. На системах с ограниченными ресурсами CPU это может повлиять на общую производительность.

  • Сложность настройки

Появляются дополнительные параметры, которые нужно аккуратно подбирать и мониторить. Без тюнинга эффект может отличаться от ожидаемого.

  • Малый эффект на системах с большим объёмом RAM

Если оперативной памяти и так достаточно, выигрыш от сжатого swap может быть минимальным или вовсе незаметным.


Report Page