Skip to main content

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

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

Как увеличить/уменьшить позже

  1. Правьте /etc/default/zramswap:

  • Гибко: PERCENT=160 (например, ~1.23 GiB на 768 MiB RAM).

  • Точно в MiB: закомментируйте PERCENT и задайте SIZE=1024 (ровно 1 GiB).

  1. Примените:

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.