Skip to main content

ZRAM или ZSWAP на тонком VPS (Ubuntu 24.04)

image.png

На маленьких 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
Если RAM То ZRAM 1GB 768M 2GB 1G 4GB 1–2G

Лёгкий тюнинг 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

Если у тебя:

    VPS / облако (особенно с медленным диском) мало RAM (≤ 2–4 GB) нагрузка burst-овая (твои кейсы с VPN / контейнерами)

     Тогда стоит отключить обычный SWAP:

    swapoff /dev/sda* 

    И нужно  убрать из /etc/fstab


    Вариант 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.