Bir zamanlar donanım kaynakları sınırlı olan Linux sistemlerinde swap alanı, adeta bir hayat kurtarıcıydı. Ancak artık birçok kullanıcı 16, 32 hatta 128 GB RAM’e sahip sistemlerle çalışıyor. Peki bu durumda swap hâlâ gerekli mi? Cevap kısa ve net: Evet, ama doğru şekilde yapılandırıldığında.
Bu yazıda swap’in ne olduğunu nasıl çalıştığını hangi durumlarda avantaj veya dezavantaj sağladığını ve swap kullanımına alternatif çözümleri detaylı olarak ele alacağız.
Swap Nedir?
Swap Linux çekirdeğinin RAM yetersiz kaldığında disk üzerinde sanal bellek olarak kullandığı bir alandır.
RAM üzerindeki kullanılmayan ya da düşük öncelikli veriler swap alanına taşınarak aktif işlemlerin daha fazla fiziksel belleğe erişmesi sağlanır.
Swap alanı iki şekilde tanımlanabilir:
- Swap bölümü (partition): Disk üzerinde ayrı bir bölüm olarak kurulum sırasında tanımlanır.
- Swap dosyası (file): Var olan bir dosya sisteminde oluşturulabilir, daha esnektir ve kolayca yeniden boyutlandırılabilir.
Swap RAM gibi hızlı değildir. Hatta HDD gibi klasik disklerde binlerce kat yavaştır. SSD’lerde durum daha iyidir ama yine de RAM’in hızına yaklaşamaz.
Swappiness: Swap’in Ne Kadar Kullanılacağına Kim Karar Veriyor?
swappiness
adlı çekirdek parametresi sistemin swap alanını ne kadar agresif kullandığını belirler.
Bu değer 0 ile 100 arasında değişir:
Swappiness Değeri | Davranış |
---|---|
0 | RAM dolmadıkça swap kullanılmaz. |
10–30 | Hafif swap kullanımı (önerilir). |
60 (varsayılan) | Orta düzeyde swap kullanımı. |
100 | RAM boş olsa bile swap’e veri atılabilir. |
Geçici olarak test etmek için:
sudo sysctl vm.swappiness=10
Kalıcı hale getirmek için:
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
Swap Neden Hâlâ Gerekli?
1. RAM Taşmalarına Karşı Güvence
RAM tamamen dolduğunda swap devreye girerek işlemlerin devam etmesini sağlar. Swap olmadan sistem kilitlenebilir veya süreçler zorla sonlandırılır.
2. Arka Plan Süreçleri İçin RAM’de Yer Açma
Uzun süre işlem yapmayan süreçlerin belleği swap’e taşınabilir. Bu aktif uygulamalar için RAM’i boşaltır.
3. Hibernate (Askıya Alma) Desteği
Sistemi askıya alırken RAM içeriği swap’e yazılır. Swap olmadan hibernate
özelliği çalışmaz.
4. Sanallaştırma ve Konteynerler için Esneklik
Swap, kaynak kısıtlaması olan ortamlarda (örneğin Docker, KVM) daha fazla esneklik sağlar.
Swap Neden Kullanılmamalı?
1. Swap Yavaştır
Disk RAM kadar hızlı değildir.
Özellikle HDD kullanılıyorsa swap ciddi yavaşlamalara neden olabilir.
2. Gerçek Zamanlı Sistemlerde Gecikme Yaratır
Canlı ses işleme, düşük gecikmeli video uygulamaları veya yüksek frekanslı finans işlemleri gibi iş yüklerinde swap kullanımı performans düşüşüne yol açabilir.
3. SSD Ömrünü Kısaltabilir
Swap, diske sürekli yazma anlamına gelir.
SSD’ler sınırlı yazma ömrüne sahip olduğundan swap bu ömrü tüketebilir.
4. Yanlış Yapılandırıldığında Performansı Düşürür
Aşırı büyük swap alanı sistemin RAM yerine swap’i tercih etmesine neden olabilir.
Bu da “RAM boş ama sistem yavaş” gibi sorunlara yol açar.
5. Bellek Sızıntılarını Gizleyebilir
Swap varlığı yazılım hatalarını maskeleyebilir.
Memory leak içeren uygulamalar swap sayesinde çalışmaya devam eder ama sistem performansı zamanla düşer.
Swap Ne Zaman Kullanılmalı, Ne Zaman Kaçınılmalı?
Sistem Durumu | Tavsiye |
---|---|
8–16 GB RAM | 2–4 GB swap önerilir. Swappiness: 10–20. |
32+ GB RAM | 2–4 GB swap dosyası, düşük swappiness yeterli. |
Ses/video işleme, HFT sistemleri | Swap devre dışı bırakılabilir. |
Eski HDD ve düşük RAM | Swap zorunludur ama yavaşlama göze alınmalıdır. |
SSD kullanıcıları | Swap alanı sınırlandırılmalı, yazma döngüsü azaltılmalı. |
Swap Dosyası Nasıl Oluşturulur?
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Durumu kontrol etmek için:
free -h
swapon --show
Alternatifler: Swap Yerine Ne Kullanabiliriz?
🔹 ZRAM
- RAM üzerinde sıkıştırılmış swap alanı oluşturur.
- Özellikle düşük RAM’li sistemlerde verimlidir.
- CPU yükü artabilir ama I/O yükü azalır.
🔹 zswap
- RAM içindeki sayfaları diske yazmadan önce sıkıştırır.
- Swap kullanımı azaltılır, sistem tepkisi iyileşir.
🔹 earlyoom / systemd-oomd
- Bellek bitmeden önce en çok bellek kullanan uygulamaları sonlandırır.
- Swap kullanılmadan sistem çökmeye karşı korunur.
🔹 cgroups ve bellek sınırlamaları
- Docker ve LXC gibi ortamlarda süreçlerin swap kullanımını sınırlar.
Swap Kullanımı İzleme Araçları
free -h
: RAM ve swap kullanımını gösterir.vmstat 1
: Swap in/out oranlarını canlı takip eder.htop
: Swap kullanan işlemleri renkli arayüzle listeler.iotop
: Swap nedeniyle oluşan disk I/O yükünü izler.
Önerilen En İyi Uygulamalar
- Her sistemde küçük de olsa swap bulunmalı.
- Swappiness değeri düşürülmeli (10–20).
- Swap dosyası tercih edilmeli, gerektiğinde boyutu kolayca değiştirilmeli.
- SSD üzerinde swap varsa, dikkatli kullanım ve izleme yapılmalı.
- Gerçek zamanlı sistemlerde swap devre dışı bırakılmalı veya ZRAM gibi alternatifler denenmeli.