Давайте разберёмся, как заставить нашу оперативку трудиться за двоих с помощью zram. Если коротко, zram создаёт внутри вашей ОЗУ виртуальное сжатое устройство подкачки. Вместо того чтобы сбрасывать неактивные страницы памяти на медленный диск (SSD или HDD), система сжимает их и оставляет в оперативной памяти. Получается двойная выгода: и доступ к данным быстрее, и реально освобождается больше места.
Раньше для настройки ставили пакет zram-tools, но времена меняются. В современных Debian (примерно с версии 11/Bullseye) есть более элегантный и родной для системы способ — systemd-zram-generator. Мы рассмотрим оба, но начнём с рекомендованного.
Способ 1: Современный и системный (через systemd-zram-generator)
Этот метод интегрирован в systemd, а значит, zram будет создаваться автоматически при загрузке, без лишних служб.
1. Установка (она же проверка наличия)
Генератор уже, скорее всего, стоит в вашей системе. Но на всякий случай можно убедиться и поставить пакет systemd-zram-generator:
sudo apt update
sudo apt install systemd-zram-generator2. Настройка — один файл, два параметра
Всё управляется файлом /etc/systemd/zram-generator.conf. Создаём или редактируем его:
sudo nano /etc/systemd/zram-generator.confВот пример конфигурации, которую можно назвать разумной и безопасной:
[zram0]
compression-algorithm = zstd
zram-size = ram / 23. Перезагрузка и проверка После сохранения файла просто перезагрузите компьютер или обработайте конфигурацию и перезапустите systemd-юниты:
sudo systemctl daemon-reloadПри следующей загрузке zram создастся автоматически. Проверить его работу можно командой:zramctlИли посмотреть общий список активных своп-устройств:swapon -sВы увидите устройство /dev/zram0 с приоритетом выше, чем у дискового свопа (обычно 100). Это значит, что система будет использовать его в первую очередь.Способ 2: Классический (через zram-tools)
Если вам по какой-то причине ближе старый способ, он тоже рабочий.
1. Установка пакета:
sudo apt update
sudo apt install zram-tools2. Редактируем конфиг (тут важный момент!) Откроем файл настроек. Для этого подойдёт любой текстовый редактор, кроме, пожалуй, Libreoffice Writer.
sudo nano /etc/default/zramswapСамое главное — не ставить размер в 100% ОЗУ, как часто советуют. Это как налить чашку до самых краёв: одно неловкое движение, и потоп. Если сжатие будет неэффективным, система может исчерпать память. Лучше начать с 50% или даже меньше.Также важное предупреждение: если вы используете гибернацию (suspend-to-disk), то вам обязательно нужен обычный дисковый своп. zram для гибернации не подходит.
Пример безопасной настройки:
# Выбираем алгоритм. Подробнее о них ниже.
ALGO=zstd
# Ставим разумный лимит. Не жадничаем!
PERCENT=50
# Приоритет оставляем высоким (выше дискового)
PRIORITY=1003. Применяем настройки:
sudo systemctl restart zramswap.serviceПроверим статус:systemctl status zramswap.service🔧 Технические нюансы: разбираемся с деталями
Какой алгоритм сжатия выбрать?
Не нужно искать файлы в /sys/ — просто выберите из списка ниже. Узнать, какие алгоритмы поддерживает ваше ядро, можно так:
cat /sys/module/zram/parameters/comp_algorithmА чтобы было проще выбрать, вот краткая шпаргалка:| Алгоритм | Скорость | Качество сжатия | Для каких задач |
|---|---|---|---|
| lz4 | Очень высокая | Хорошее | Идеально для старых или слабых процессоров, скорость в приоритете. |
| zstd | Высокая | Отличное | Лучший выбор для современных систем (от Intel Core i3/i5 и новее). Даёт больше свободной памяти. |
| lzo | Высокая | Среднее | Часто используется по умолчанию, но постепенно вытесняется lz4 и zstd. |
Почему не 100%? И при чём тут гибернация?
- Размер: zram — не волшебный. Некоторые данные (например, уже сжатые архивы или видео) почти не сжимаются. Если выделить под zram всю память и засунуть туда такие данные, система может "захлебнуться". Начальная рекомендация: 25-50% от объёма ОЗУ.
- Гибернация: Этот режим сна сохраняет содержимое памяти на диск. Поэтому, если вам нужна гибернация, не отключайте дисковый своп-файл или раздел. zram в этом процессе не участвует.
Как проверить, что всё работает? После настройки выполните:
zramctlВывод будет примерно таким:NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 zstd 2G 0B 0B 0B 4 [SWAP]Также полезно командой free -h посмотреть, как используется память и своп.Итог: краткий чек-лист
- Для Debian 11/Bullseye и новее используйте
systemd-zram-generator(Способ 1). Это современно и правильно. - Не выделяйте под zram 100% оперативной памяти. Начните с
ram / 2(50%) вzram-generator.confилиPERCENT=50вzram-tools. - Выбирайте алгоритм сжатия по возможностям процессора:
zstdдля новых CPU,lz4для старых или если нужна максимальная отзывчивость. - Помните про гибернацию: если она вам нужна, оставьте на диске обычный своп-файл или раздел.
- Всегда проверяйте результат командами
zramctlиswapon -s.