Swap & Memory Management di Linux

Linux mengelola memori menggunakan kombinasi RAM (Random Access Memory) dan Swap.
Swap adalah ruang pada disk (partition atau file) yang digunakan ketika RAM tidak cukup.
Dengan swap, sistem tetap bisa berjalan walaupun memori fisik penuh, meskipun performa menurun karena disk lebih lambat dibanding RAM.


⚙️ Konsep Dasar Memory Management di Linux

  1. RAM (Physical Memory)
    Digunakan untuk menjalankan proses, cache, buffer.

  2. Swap Space
    Area pada disk yang digunakan sebagai "cadangan" RAM.

  3. Page Cache & Buffer
    Linux menggunakan sebagian RAM untuk caching agar akses lebih cepat.

  4. OOM Killer (Out of Memory Killer)
    Jika RAM + Swap habis, Linux akan menghentikan proses tertentu untuk membebaskan memori.


🛠️ Cara Kerja Swap

  • Saat RAM penuh, kernel akan memindahkan (swap out) halaman memori yang jarang dipakai ke swap.
  • Jika halaman tersebut dibutuhkan kembali, sistem akan memindahkannya lagi ke RAM (swap in).
  • Swap sangat membantu untuk stabilitas sistem, tetapi penggunaan swap yang tinggi bisa memperlambat sistem.

📏 Rekomendasi Ukuran Swap

Ukuran swap tergantung pada RAM dan kebutuhan sistem.

Rekomendasi umum (dari Red Hat & Ubuntu docs):

  • RAM ≤ 2 GB → Swap = 2 × RAM
  • RAM 2–8 GB → Swap = sama dengan RAM
  • RAM 8–64 GB → Swap = 0.5 × RAM
  • RAM > 64 GB → Swap minimal 4–8 GB untuk hibernasi & kernel dump

Contoh:

  • Server dengan RAM 4 GB → Swap 4 GB
  • Server dengan RAM 32 GB → Swap 16 GB
  • Server dengan RAM 128 GB → Swap 8 GB (fixed minimal)

⚠️ Jika ingin menggunakan hibernasi, swap harus ≥ RAM.


🔧 Setup Swap

1. Menggunakan Swap Partition

Biasanya sudah dibuat saat instalasi Linux.
Cek swap aktif:

swapon --show
free -h

2. Membuat Swap File

Jika tidak ada swap partition, buat swap file:

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Tambahkan ke /etc/fstab agar permanen:

/swapfile   none    swap    sw    0   0

🔄 Tuning Swap

1. Swappiness

Swappiness menentukan seberapa agresif kernel menggunakan swap.
Nilai 0 = hindari swap, 100 = gunakan swap lebih sering.

Cek nilai saat ini:

cat /proc/sys/vm/swappiness

Set nilai sementara (misalnya 10):

sudo sysctl vm.swappiness=10

Agar permanen, edit /etc/sysctl.conf:

vm.swappiness=10

2. VFS Cache Pressure

Mengontrol seberapa cepat kernel membersihkan cache.
Default: 100 (lebih agresif).
Biasanya diturunkan ke 50 untuk performa yang lebih baik.

sudo sysctl vm.vfs_cache_pressure=50

🚀 Best Practices

✅ Gunakan swap meskipun RAM besar, minimal 4–8 GB untuk keamanan.
✅ Gunakan SSD untuk swap agar performa lebih baik (jika memungkinkan).
✅ Sesuaikan swappiness → Server database biasanya 10, Desktop 60.
✅ Monitor penggunaan swap dengan htop, vmstat, free -h.
✅ Jangan hanya mengandalkan swap untuk workload berat, lebih baik tambah RAM.
✅ Pisahkan swap pada disk cepat untuk mengurangi bottleneck.
✅ Gunakan Zswap atau ZRAM untuk sistem dengan RAM kecil (kompresi memori).


📌 Kesimpulan

Swap adalah mekanisme penting dalam Linux memory management untuk menjaga stabilitas sistem ketika RAM penuh.
Dengan konfigurasi yang tepat (ukuran swap, swappiness, cache pressure), sistem dapat lebih optimal dalam mengelola memori, mencegah crash, dan menjaga performa.