RAM miktarı, kullanım senaryosu ve disk tipine göre optimum swap boyutunu ve vm.swappiness değerini hesaplar. Swap oluşturma komutlarını adım adım verir.
$ free -h # RAM ve swap kullanımı
$ swapon --show # Aktif swap alanları
$ cat /proc/sys/vm/swappiness # Mevcut swappiness değeri
$ vmstat 1 5 # Swap aktivitesini izle (si/so sütunları)
si (swap in) ve so (swap out) değerleri sürekli yüksekse sunucu swap’ta boğuluyor — RAM artırmanız gerekiyor. Swap asla RAM’in yerini tutmaz, sadece güvenlik ağıdır.
free -m | awk '/Mem:/ {print $2}'
SSD’de swap daha hızlı ama ömrünü kısaltır.
0 ise swap yok. swapon --show ile öğrenin.
Hibernate için swap en az RAM kadar olmalı.
Linux Swap Nedir? Ne İşe Yarar?
Swap, RAM dolduğunda kullanılmayan bellek sayfalarının diske yazılmasını sağlayan alandır. Sunucunun çökmesini önleyen bir güvenlik ağıdır. Ancak disk, RAM’den çok daha yavaştır — swap yoğun kullanılıyorsa bu, RAM yetersizliğinin işaretidir.
Önerilen Swap Boyutu — Genel Kurallar
RAM ≤ 2 GB → Swap = RAM × 2 (en az 2 GB) RAM 2–8 GB → Swap = RAM × 1 (RAM kadar) RAM 8–64 GB → Swap = RAM × 0.5 (en az 4 GB) RAM > 64 GB → Swap = 4–8 GB (sembolik güvenlik ağı) Hibernate → Swap ≥ RAM (RAM'in tamamını diske yazması gerekir) Veritabanı → Swap mümkün olduğunca küçük tutulmalı
Kernel’in RAM dolmadan önce ne kadar agresif swap kullanacağını belirler. 0 = swap’ı mümkün olduğunca kullanma, 100 = agresif biçimde swap’a yaz. Sunucular için düşük değer tercih edilir.
swappiness = 10 — Sunucu Önerisi
Web sunucuları ve veritabanları için önerilir. RAM mümkün olduğunca bellekte tutulur, sadece zorunlu olduğunda swap’a yazılır. MySQL özellikle düşük swappiness sever.
swappiness = 60 — Masaüstü Varsayılanı
Linux masaüstü sistemlerinde varsayılan değerdir. İnteraktif uygulamalar için uygundur ama sunucularda performansı düşürür.
swappiness = 1 — Veritabanı Önerisi
MySQL ve PostgreSQL gibi veritabanları için idealdir. Swap’ı neredeyse hiç kullanmaz, tüm belleği veritabanı önbelleği için serbest bırakır. 0 yerine 1 önerilir — 0 bazı kernel versiyonlarında OOM killer’ı tetikleyebilir.
vfs_cache_pressure = 50
Kernel’in dosya sistemi önbelleğini ne kadar agresif geri alacağını belirler. Varsayılan 100’dür. 50 değeri, inode ve dentry önbelleklerini daha uzun süre bellekte tutar — okuma ağırlıklı iş yüklerinde performansı artırır.
Swapfile — Önerilen
Mevcut dosya sisteminde bir dosya oluşturulur. Boyutu sonradan değiştirilebilir, partition yeniden düzenlemeye gerek yoktur. Modern Linux kernel’leri ile performans farkı yok denecek kadar azdır. Bulut sunucularda standart yöntemdir.
Swap Partition
Ayrı bir disk bölümü olarak ayrılır. Kurulum sırasında tanımlanması gerekir, sonradan boyut değiştirmek zordur. Eski sistemlerde hafif performans avantajı sağlardı, modern sistemlerde swapfile ile fark kalmamıştır.
$ vmstat 1 # si=swap in, so=swap out — sıfır olmalı idealde
$ iostat -x 1 # Disk I/O — swap kullanımı diski zorlarsa burada görünür
$ sar -W 1 5 # Swap istatistikleri (sysstat paketi gerekli)
$ cat /proc/meminfo | grep -i swap # Detaylı swap bilgisi