Swap Alanı
Takas Alanı
- İngilizcesi
- Swap Space
- Okunuşu
- suop speys
Kısaca
Swap alanı, işletim sisteminin RAM'in taşma alanı olarak kullandığı disk bölgesidir; fiziksel bellek azaldığında az kullanılan bellek sayfaları oraya taşınır.
Swap alanı (swap space) nedir?
Swap alanı, bir işletim sisteminin kullanabileceği belleği genişleten, diskteki ayrılmış bir bölüm veya dosyadır. RAM dolduğunda kernel yakın zamanda kullanılmamış bellek sayfalarını seçer, bunları swap'a yazar ve o RAM'i etkin işler için boşaltır. Bir program daha sonra swap'a atılmış bir sayfaya dokunursa kernel, program devam edebilmeden önce onu diskten geri okur.
Linux'ta swap bir bölüm ya da normal bir dosya olabilir ve swappiness denen bir ayar, kernel'ın önbelleğe alınmış dosya verisini atmaya kıyasla ne kadar istekli takas yapacağını denetler. Windows pagefile.sys adlı bir sayfa dosyası kullanır, macOS ise swap dosyalarını bellek sıkıştırmasıyla birleştirir. Yalnızca başka hiçbir yerde bulunmayan bellek, örneğin bir programın heap'i ve yığını, swap'a ihtiyaç duyar; program kodunu tutan sayfalar ise basitçe atılıp özgün dosyadan yeniden okunabilir. Bazı sistemler, diske başvurmadan önce sayfaları RAM'de de sıkıştırır; bu takastan daha hızlıdır.
Swap, dolabınız taşınca bir depo birimi kiralamaya benzer: nadiren kullanılan kutuları oraya taşımak evde yer açar, ancak bir şeyi getirmek bir yolculuk gerektirir. Aynı kutuları sürekli ileri geri taşırsanız bütün günü araba kullanarak geçirirsiniz. Bilgisayarda buna thrashing denir ve hızlı bir SSD bile RAM'den kat kat yavaş olduğu için sistemi sürünür hale getirir.
Swap alanı çoğu zaman sanal bellekle karıştırılır, ancak yalnızca onun bir parçasıdır; swap kapalıyken bile bir sistem sanal bellek kullanır. Swap, yeterli RAM'in yerine geçmez ve bir memory leak'i düzeltmez, yalnızca çökmeyi geciktirir. Swap olmadan belleği tükenen bir Linux sistemi bir process'i sonlandırmak için bellek yetersizliği (OOM) katilini çağırır; swap ile ise önce yavaşlar. Birçok sunucu ve container ana bilgisayarının performansı öngörülebilir tutmak için az swap ile ya da hiç swap olmadan çalışmasının nedeni budur.
Önemli noktalar
- Swap alanı, RAM dolduğunda taşma olarak kullanılan disk depolamasıdır.
- Kernel az kullanılan sayfaları swap'a taşır ve talep üzerine geri okur.
- Thrashing denen yoğun takas, sistemi son derece yavaşlatır.
- Swap, sanal belleğin bir parçasıdır, onunla aynı şey değildir.
- Windows takas alanına sayfa dosyası (page file) der.
Örnek
# Show RAM and swap usage
free -h
# List active swap areas
swapon --show
# Create and enable a 2 GB swap file
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# How eagerly the kernel swaps (0-200, default 60)
cat /proc/sys/vm/swappinessSık sorulan sorular
Ne kadar swap alanına ihtiyacım var?
Tek bir kural yoktur. Masaüstü ve dizüstü bilgisayarlar çoğu zaman birkaç gigabayt kullanır, hazırda bekletme (hibernation) istiyorsanız en az RAM kadar; birçok sunucu ise bellek sorunlarının yavaşlamaya yol açmak yerine hızla görünür olması için az miktarda kullanır ya da hiç kullanmaz.
Swap SSD'ler için kötü müdür?
Ara sıra yapılan takas, çok sayıda yazmayı kaldıracak şekilde yapılmış modern SSD'ler için sorun değildir. Sürekli yoğun takas esas olarak sistemi yavaşlattığı için sorundur ve makinenin daha fazla RAM'e ihtiyacı olduğunu gösterir.
Thrashing nedir?
Thrashing, sistemin zamanının çoğunu yararlı iş yapmak yerine sayfaları RAM ile swap arasında taşımakla geçirmesidir. Etkin programlar makinenin sahip olduğundan çok daha fazla belleğe ihtiyaç duyduğunda olur.
İlgili sayfalar
- Sanal Bellekİşletim Sistemleri, s. 26Sanal bellek, her process'e kendine ait özel bir adres alanı veren ve bunu arka planda fiziksel RAM'e ya da diske eşleyen bir işletim sistemi tekniğidir.
- Pagingİşletim Sistemleri, s. 22Paging, belleği sabit boyutlu sayfalara bölen ve sayfa tablolarıyla her process'in sanal sayfalarını fiziksel RAM'e eşleyen bir bellek yönetim düzenidir.
- Memory Leakİşletim Sistemleri, s. 20Memory leak, bir programın artık ihtiyaç duymadığı belleği tutmayı sürdürdüğü hatadır; bellek kullanımı zamanla artar, sistem yavaşlayabilir ya da çökebilir.
- Kernelİşletim Sistemleri, s. 17Kernel, işletim sisteminin CPU'yu, belleği ve donanım aygıtlarını yöneten ve programların bu kaynaklara nasıl eriştiğini denetleyen çekirdek bölümüdür.
- Dosya Sistemiİşletim Sistemleri, s. 10Dosya sistemi, işletim sisteminin bir depolama aygıtındaki veriyi dosya ve klasörlere düzenleyen ve her parçanın nerede saklandığını izleyen bölümüdür.
- Processİşletim Sistemleri, s. 23Process, bir programın çalışan örneğidir; işletim sistemi tarafından yönetilen kendi bellek alanına, kaynaklarına ve en az bir yürütme iş parçacığına sahiptir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin