Lewati ke isi

Server & Infrastruktur

Swap atau zram di VPS RAM Kecil, Mana Lebih Baik?

Bedanya swap di disk dan zram di RAM untuk VPS 1 sampai 2 GB: cara kerja, untung rugi, cara memasang zram di Ubuntu, dan kapan memakai keduanya.

Terbit 6 menit baca

Jawaban singkat

zram membuat swap terkompresi di dalam RAM sehingga jauh lebih cepat dari swap di disk, dengan harga sedikit CPU. Untuk VPS RAM kecil, zram cocok sebagai lapisan pertama, swap file di disk sebagai cadangan. Keduanya tidak menggantikan RAM yang memang kurang.

Daftar isi
  1. Swap di disk dan zram, apa bedanya?
  2. Swap di disk (swap file atau partisi)
  3. zram
  4. Kapan memilih zram, kapan swap disk?
  5. Cara memasang zram di Ubuntu dan Debian
  6. Swappiness setelah memakai zram
  7. Cara memantau hasilnya
  8. Pertanyaan yang sering diajukan

Swap adalah ruang cadangan yang dipakai kernel Linux ketika RAM penuh: halaman memori yang jarang dipakai dipindah keluar dari RAM. Swap biasa menyimpannya di disk. zram menyimpannya di perangkat blok virtual di dalam RAM itu sendiri, dalam bentuk terkompresi. Kedengarannya aneh, menyimpan isi RAM di RAM, tapi karena dikompresi, data yang sama memakan ruang lebih kecil.

Di VPS 1 atau 2 GB, pilihan ini terasa dampaknya. Salah atur bisa membuat server melambat parah setiap kali memori mepet, atau sebaliknya, proses penting dimatikan OOM killer padahal masih ada jalan keluar. Kalau kamu belum yakin perlu swap sama sekali, baca dulu perlukah swap di VPS kecil.

Swap di disk dan zram, apa bedanya?

Swap di disk (swap file atau partisi)

Halaman memori ditulis ke file atau partisi di disk. Kapasitasnya bisa besar karena memakai ruang disk, tapi aksesnya jauh lebih lambat dari RAM, bahkan di NVMe. Saat server sering menukar halaman ke dan dari disk, semua terasa tersendat. Selain itu, setiap penulisan swap ikut memakai jatah I/O disk VPS.

zram

Kernel membuat perangkat /dev/zram0 di RAM, lalu perangkat itu dipakai sebagai swap. Halaman yang dipindah ke sana dikompresi dengan algoritma seperti lz4 atau zstd. Membaca kembali hanya butuh dekompresi di CPU, jadi jauh lebih cepat dari membaca disk.

Ukuran yang kamu tetapkan untuk zram adalah kapasitas data sebelum dikompresi. Ruang RAM yang benar-benar terpakai tergantung seberapa baik data bisa dikompresi. Data teks dan struktur aplikasi biasanya terkompresi dengan baik, data yang sudah terkompresi (gambar, arsip) tidak. Rasio nyatanya bisa kamu lihat sendiri dengan zramctl.

AspekSwap di diskzram
Lokasi dataFile atau partisi di diskRAM, terkompresi
Kecepatan aksesLambat, tergantung diskCepat, butuh sedikit CPU
KapasitasSebesar ruang disk yang disisihkanTerbatas oleh RAM yang ada
Beban ke diskMenambah I/OTidak menyentuh disk
Isi setelah rebootHilang (tidak dipakai lagi)Hilang
Kebutuhan CPUHampir tidak adaUntuk kompresi dan dekompresi

Kapan memilih zram, kapan swap disk?

Pilih zram bila RAM kecil, CPU masih longgar, dan beban memorinya naik turun, misalnya website kecil dengan database di server yang sama. zram memberi ruang bernapas tambahan tanpa jeda panjang khas swap disk.

Pilih swap disk bila kamu butuh cadangan yang lebih besar dari yang bisa ditampung zram, atau bila CPU VPS sudah sering penuh sehingga kompresi justru menambah beban.

Dalam praktik, pilihan yang sering paling masuk akal adalah keduanya: zram dengan prioritas tinggi sebagai lapisan pertama, ditambah swap file kecil di disk dengan prioritas rendah sebagai cadangan terakhir. Kernel selalu memakai swap berprioritas lebih tinggi terlebih dulu.

Kalau kamu memilih kombinasi ini, swap file cadangan bisa dibuat seperti biasa lalu diberi prioritas rendah di /etc/fstab:

sudo fallocate -l 1G /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

Setelah itu swapon --show akan menampilkan dua baris dengan kolom PRIO berbeda. zram dengan prioritas lebih tinggi terisi lebih dulu, swap file baru tersentuh bila zram sudah penuh.

Cara memasang zram di Ubuntu dan Debian

Cek dulu kondisi swap sekarang:

swapon --show
free -h

Cara paling mudah di Ubuntu dan Debian adalah paket zram-tools:

sudo apt install zram-tools

Pengaturan ada di /etc/default/zramswap. Contoh isinya:

ALGO=zstd
PERCENT=50
PRIORITY=100

PERCENT menentukan ukuran zram sebagai persentase RAM total, ALGO memilih algoritma kompresi (zstd lebih rapat, lz4 lebih cepat), dan PRIORITY dibuat lebih tinggi dari swap disk. Terapkan dengan:

sudo systemctl restart zramswap
swapon --show
zramctl

zramctl menampilkan kolom DATA (ukuran data asli) dan COMPR (ukuran setelah dikompresi). Dari dua angka itu kamu tahu rasio kompresi yang sebenarnya di servermu.

Di Fedora, zram sudah menjadi bawaan lewat zram-generator. Di AlmaLinux dan Rocky Linux, paket dan cara pasangnya bisa berbeda, jadi cek repositori distribusimu.

Swappiness setelah memakai zram

Parameter vm.swappiness mengatur seberapa cenderung kernel memindahkan halaman ke swap. Dokumentasi kernel menyebut rentangnya 0 sampai 200. Nilai di atas 100 masuk akal ketika swap jauh lebih cepat dari disk, seperti zram, karena kernel boleh lebih rajin memindahkan halaman yang jarang dipakai.

Untuk swap disk saja, nilai rendah seperti 10 sampai 30 lebih umum dipakai di server. Untuk kombinasi zram plus swap disk, sebagian distribusi memakai nilai lebih tinggi. Ubah bertahap dan amati:

sudo sysctl vm.swappiness=100

Bila hasilnya baik, simpan permanen di /etc/sysctl.d/99-swappiness.conf.

Cara memantau hasilnya

Setelah zram aktif, pantau beberapa hari:

  • free -h dan swapon --show untuk melihat seberapa banyak swap dipakai.
  • vmstat 1 kolom si dan so. Angka yang terus tinggi berarti server sibuk menukar halaman.
  • Log kernel (journalctl -k | grep -i oom) untuk memastikan OOM killer tidak lagi muncul. Penyebab proses mati karena OOM dijelaskan di artikel OOM killer.

Pemakaian RAM yang tinggi sendiri belum tentu masalah, karena Linux memakai RAM kosong untuk cache. Yang perlu diwaspadai adalah swap yang terus aktif keluar masuk.

Pertanyaan yang sering diajukan

Apakah zram aman untuk database seperti MySQL?

Aman dari sisi data, karena zram hanya menampung halaman memori sementara, sama seperti swap biasa. Tetapi database yang sering kena swap tetap akan lambat. Atur buffer database agar muat di RAM.

Berapa ukuran zram yang wajar?

Banyak panduan memakai sekitar setengah dari RAM sebagai titik awal. Pantau rasio kompresi dengan zramctl, lalu sesuaikan.

Apakah zram memakan CPU banyak?

Kompresi dan dekompresi memang memakai CPU, tapi algoritma seperti lz4 dan zstd dirancang cepat. Di VPS yang CPU-nya sudah selalu penuh, pertimbangkan ulang atau pilih algoritma yang lebih ringan.

Bagaimana dengan zswap?

zswap adalah fitur kernel lain yang menaruh cache terkompresi di depan swap disk. Ia butuh swap disk sebagai tujuan akhir. zram berdiri sendiri. Pilih salah satu agar perilakunya mudah dipahami.

Sumber & referensi

Baca juga