ZRAM или ZSWAP на тонком VPS (Ubuntu 24.04)
На маленьких VPS с 768 MiB RAM и 1 vCPU разумнее включить zram в роли основного swap. Он сжимает «холодные» страницы прямо в ОЗУ, не трогая диск. zswap — альтернатива, но требует дисковый swap и чаще проигрывает на слабых инстансах.
Вариант A — ZRAM
Идея: /dev/zram0 — это сжатый swap в памяти. Для 1 vCPU берём быстрый LZ4 и размер ≈ 1.5–2× RAM.
Установка и настройка
sudo apt update
sudo apt install -y zram-tools
По умолчанию zramswap задаёт нужные средние значения
# Если нужно отредактируйте
sudo nano /etc/default/zramswap
# Отредактируйте в этом фале некоторые строки:
ALGO=lz4 # быстрый компрессор
PERCENT=150 # размер zram как % от RAM (768 MiB → ~1.15 GiB)
PRIORITY=100 # задействуется раньше других swap'ов
sudo systemctl enable --now zramswap.service
Лёгкий тюнинг VM
sudo tee /etc/sysctl.d/99-zram-tuning.conf >/dev/null <<'EOF'
vm.swappiness=100
vm.page-cluster=0
EOF
sudo sysctl --system
Проверка
swapon --show
zramctl
free -h
Как увеличить/уменьшить позже
-
Правьте
/etc/default/zramswap:
-
Гибко:
PERCENT=160(например, ~1.23 GiB на 768 MiB RAM). -
Точно в MiB: закомментируйте
PERCENTи задайтеSIZE=1024(ровно 1 GiB).
-
Примените:
sudo systemctl restart zramswap
swapon --show
Вариант B — ZSWAP
Идея: zswap — сжатый кэш перед обычным дисковым swap-файлом. Нужен реальный swap на диске.
# 1) Создать swap-файл (пример: 2 GiB)
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
echo '/swapfile none swap sw,pri=10 0 0' | sudo tee -a /etc/fstab
sudo swapon -a
# 2) Включить zswap через параметры ядра
sudo sed -i 's/^\(GRUB_CMDLINE_LINUX="\)/\1zswap.enabled=1 zswap.compressor=lz4 zswap.zpool=zsmalloc zswap.max_pool_percent=25 /' /etc/default/grub
sudo update-grub
sudo reboot
# 3) Опциональный тюнинг
sudo tee /etc/sysctl.d/99-zswap-tuning.conf >/dev/null <<'EOF'
vm.swappiness=80
vm.page-cluster=0
EOF
sudo sysctl --system
Проверить, что включилось:
cat /sys/module/zswap/parameters/enabled
grep -i zswap /var/log/dmesg || dmesg | grep -i zswap
Что выбрать
-
Берите zram, если диск медленный/сетевой и важна отзывчивость.
-
Берите zswap, если хотите иметь «последнюю линию обороны» на диске и у провайдера быстрый NVMe.
Откат
-
zram:
sudo systemctl disable --now zramswap && sudo rm /etc/sysctl.d/99-zram-tuning.conf -
zswap: уберите параметры из
/etc/default/grub, выполнитеsudo update-grub && sudo reboot; при необходимостиsudo swapoff /swapfileи удалите строку из/etc/fstab.