Linux Swap Hesaplayıcı

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.

📋 Mevcut swap durumunu öğrenmek için bu komutları çalıştırın
$ 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ı)
vmstat çıktısında: 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.
Sunucu Bilgileri
MB

free -m | awk '/Mem:/ {print $2}'

SSD’de swap daha hızlı ama ömrünü kısaltır.

MB

0 ise swap yok. swapon --show ile öğrenin.

Kullanım Senaryosu

Hibernate için swap en az RAM kadar olmalı.

Hesaplama Sonuçları

Önerilen Swap Boyutu
vm.swappiness
vm.vfs_cache_pressure
Adım adım kurulum komutları

    

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ı
vm.swappiness Değeri Ne Anlama Gelir?

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.

Swap Tipi: Dosya mı, Partition mı?
📄

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.

Swap İzleme Komutları
$ 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
⚠ SSD Ömrü SSD üzerinde swap, yazma döngülerini tüketir. Swappiness değerini düşük tutarak SSD’ye gereksiz yazma yapılmasını önleyin. Yoğun swap kullanımı fark edilirse önce RAM artırımını değerlendirin.
💡 Cloud / VPS Notu AWS, GCP, DigitalOcean gibi cloud sağlayıcılarda swap genellikle varsayılan olarak kapalıdır. Küçük instance’larda (1–2 GB RAM) mutlaka swap ekleyin — ani bellek baskısında OOM killer devreye girip kritik process’leri öldürebilir.