0%

Sanal Bellek ve SWAP Nedir? Windows ve Linux’ta Takas Alanı Yönetimi

Sunucu “yavaşladı” diyorsunuz, disk ışığı sürekli yanıyor, RAM dolu görünüyor ama işlemci boşta. Çoğu zaman mesele işlemci değil: fiziksel bellek tükendi, sistem de diski bellek gibi kullanmaya başladı. Windows’ta buna sanal bellek (pagefile), Linux’ta SWAP diyoruz. Bu yazıda ikisinin mantığını, Windows’ta GUI ve PowerShell ile ayarını, Linux’ta modern swapfile kurulumunu ve swappiness ince ayarını sahadan örneklerle anlatıyoruz.

Sanal bellek ve SWAP ne işe yarar?

RAM hızlıdır ama sınırlıdır. İşletim sistemi, bellek daraldığında ya da uzun süredir dokunulmayan sayfaları kenara çekmek istediğinde diskin bir bölümünü geçici bellek gibi kullanır. Windows’ta bu dosya genelde C:\pagefile.sys, Linux’ta ise ayrı bir bölüm veya /swapfile dosyasıdır.

  • Faydası: RAM tükenince sistemin anında çökmesini engeller. Linux’ta OOM (Out of Memory) killer’ın süreç öldürmesi, Windows’ta aşırı bellek baskısı ve donmalar azalır.
  • Bedeli: SSD ne kadar hızlı olursa olsun RAM kadar hızlı değildir. Sürekli takas (swapping/paging) başlarsa I/O darboğazı ve “anlık donma” hissi gelir.

Windows’ta sanal bellek (pagefile)

Windows varsayılan olarak pagefile boyutunu kendisi yönetir. Çoğu masaüstü için bu yeterlidir. Sunucularda veya belirli uygulamalarda (SQL Server, büyük yığınlar, bellek dökümü ihtiyacı) sabit boyut tercih edilir; böylece ani büyümeler disk alanını yemez, parçalanma da azalır.

Grafik arayüzden ayarlama

  1. Win + R ile sysdm.cpl yazıp Enter’a basın.
  2. Gelişmiş sekmesinde Performans → Ayarlar’a tıklayın.
  3. Yine Gelişmiş sekmesinde Sanal bellek → Değiştir.
  4. “Tüm sürücülerde disk belleği dosyası boyutunu otomatik yönet” işaretini kaldırın.
  5. Sürücüyü seçip Özel boyut ile başlangıç ve en büyük değeri MB cinsinden girin (örnek: 8192 = 8 GB). İkisini aynı yapmak sabit boyut demektir.
  6. Ayarla → Tamam; değişiklik çoğu zaman yeniden başlatma ister.

PowerShell ile sorgulama ve sabit boyut

Mevcut ayarı görmek için:

PowerShell
# Mevcut pagefile ayarı
Get-CimInstance -ClassName Win32_PageFileSetting

# Otomatik yönetimin durumu
Get-CimInstance -ClassName Win32_ComputerSystem |
    Select-Object AutomaticManagedPagefile

Otomatik yönetimi kapatıp C: için sabit 8 GB atamak:

PowerShell
# Otomatik boyutu kapat
Set-CimInstance -Query "Select * from Win32_ComputerSystem" -Property @{
    AutomaticManagedPagefile = $false
}

# C: için sabit 8 GB (8192 MB)
Set-CimInstance -ClassName Win32_PageFileSetting -Property @{
    InitialSize = 8192
    MaximumSize = 8192
}

Win32_PageFileSetting nesnesi henüz yoksa (otomatik yönetim yeni kapatıldıysa) önce oluşturmanız gerekir:

PowerShell
$page = ([WmiClass]'Win32_PageFileSetting').CreateInstance()
$page.Name = 'C:\pagefile.sys'
$page.InitialSize = 8192
$page.MaximumSize = 8192
$page.Put()

Değişikliklerin aktif olması için sunucuyu yeniden başlatın. Sonrasında Görev Yöneticisi → Performans → Bellek bölümünden “Takaslanan” / “Commit” değerlerini, veya Kaynak İzleyicisi’nden pagefile kullanımını izleyebilirsiniz.

Linux’ta SWAP: bölüm mü, dosya mı?

Eski alışkanlık disk bölümlenirken ayrı bir swap partition açmaktı. Bulut VPS’lerde ve modern dağıtımlarda esnek olan swapfile tercih ediliyor: sistem çalışırken oluşturulur, boyutu saniyeler içinde büyütülür veya silinir; disk yeniden boyutlandırmaya gerek kalmaz.

Swap partitionSwapfile
KurulumDisk bölümlenirken ayrılırÇalışan sistemde dosya olarak oluşturulur
Boyut değiştirmekZor; çoğu zaman yeniden boyutlandırmaKolay; dosyayı yeniden oluşturup etkinleştirirsiniz
Tipik yerEski kurulumlar, özel depolama düzenleriVPS, Ubuntu/Debian varsayılanları, hızlı müdahale

1. Swap dosyasını oluşturun

4 GB’lık bir /swapfile örneği:

Linux Shell
# 4 GB boş dosya (çoğu dosya sisteminde en hızlı yol)
sudo fallocate -l 4G /swapfile

# fallocate sorun çıkarırsa (bazı Btrfs/XFS senaryoları):
# sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress

2. İzinleri sıkılaştırın

Yalnızca root okuyup yazabilmeli:

Linux Shell
sudo chmod 600 /swapfile

3. Biçimlendirip etkinleştirin

Linux Shell
sudo mkswap /swapfile
sudo swapon /swapfile

4. Kalıcı hale getirin (/etc/fstab)

Yeniden açılışta otomatik gelsin diye /etc/fstab’a ekleyin:

Linux Shell
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

5. Doğrulayın

Linux Shell
sudo swapon --show
free -h

swapon --show satırında /swapfile ve 4G civarı bir boyut görmelisiniz. free -h çıktısındaki Swap satırı da aynı kapasiteyi gösterir.

Linux swappiness: ne zaman takasa düşsün?

vm.swappiness, çekirdeğin RAM dolmadan SWAP’a ne kadar hevesli olduğunu belirler; 0–100 arasıdır. Yüksek değer = daha erken takas; düşük değer = mümkün olduğunca RAM’de tut.

DeğerDavranış (kabaca)Ne zaman?
60 (varsayılan)RAM henüz dolmadan pasif sayfaları SWAP’a itmeye başlarMasaüstü için kabul edilebilir; sunucuda gereksiz disk I/O üretebilir
10Takası ciddi bellek baskısına saklarÇoğu uygulama / web / veritabanı sunucusu için iyi başlangıç
1Neredeyse yalnızca OOM (Out of Memory) eşiğine yakın takasBol RAM’li, gecikmeye hassas iş yükleri (dikkatli kullanın)
Linux Shell
# Anlık (yeniden açılışa kadar)
sudo sysctl vm.swappiness=10

# Kalıcı
echo "vm.swappiness=10" | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl --system

tee -a yerine yukarıda dosyayı doğrudan yazıyoruz; böylece aynı satır conf dosyasında birikmez. Mevcut değeri görmek için: cat /proc/sys/vm/swappiness.

Sahadan kısa kontrol listesi

  • Windows: Görev Yöneticisi’nde bellek “Committed” değeri fiziksel RAM’i sürekli aşıyorsa pagefile yoğun kullanılıyor demektir; uygulamayı veya RAM’i gözden geçirin.
  • Linux: free -h + vmstat 1 ile si/so (swap in/out) kolonlarına bakın. Sürekli yüksek si/so = disk üzerinde koşuyorsunuz.
  • VPS: 1–2 GB RAM’li makinede en az 1–2 GB swapfile açmak OOM (Out of Memory) riskini yumuşatır; yine de “RAM yetmezliği”nin yerini tutmaz.
  • SSD ömrü: Aşırı takas yazma yükü üretir. Kalıcı çözüm yine doğru boyutlandırılmış RAM’dir.

Kısa özet

  • Pagefile / SWAP: RAM bittiğinde sistemi ayakta tutan emniyet sibobu; performansın asıl kaynağı değil.
  • Windows: Çoğu yerde otomatik yönetim yeterli; sunucuda sabit boyut (GUI veya PowerShell) daha öngörülebilir.
  • Linux: Swapfile esnek ve VPS dostu; fallocatechmod 600mkswapswaponfstab.
  • Swappiness 10: Sunucularda gereksiz erken takası kesmek için iyi bir başlangıç değeri.