Linux’ta swap alanı fiziksel belleğin yetersiz kaldığı durumlarda işletim sistemi tarafından kullanılır. İşletim sistemi, kritik sistem proseslerinin belleğin dolması yüzünden crash olmasını önlemek amacıyla bellekteki idle prosesleri swap alanına taşıyarak çalışmakta olan prosesler için RAM’de yer açar. Bu prosesler tekrardan running duruma geçtiğinde RAM’e taşıyarak çalışan proseslerin bellek tükenmesi yüzünden crash olması önlenir.
SWAP Alanının Yönetimi
SWAP alanının yönetimi sistem yöneticisinin temel yönetim görevlerinden biridir. Doğru planlama ve uygun kullanımı ile birçok fayda sağlar. Thrashing olarak bilinen aşırı kullanımın takip edilmesi gerekir. Bu durumda daha fazla swap alanı eklemek yerine fiziksel bellek eklenmesi daha uygundur. SWAP, düşük fiziksel bellek alanını artırmak için bir çözüm değildir. Bellek alanı azaldığında bir emniyet kemeri görevi görür ama fiziksel belleğin yerini almaz.
SWAP Alanı Oluşturma
SWAP alanı diskin bir bölümünde oluşturulabileceği gibi, dosya sisteminde bir dosya olarak da oluşturulabilir. SWAP alanı disk üzerinde bulunduğundan buraya alınan bellek sayfalarına erişim fiziksel belleğe nazaran daha yavaştır ve zamanla performansın azalmasına neden olur. Linux Kernel bu performans kaybını kompanze etmek için RAM bellekte SWAP alanına aldığı bellek sayfalarının bir haritasını tutar ve bu alana erişirken tüm caching, metadata ve dosya sistemi unsurlarını baypas ederek diske doğrudan blok bazlı IO erişimi sağlar.
Sistemde SWAP alanı oluşturmak için öncelikle dd
komutu ile kök (/) altında .swapfile adıyla 1GB’lık bir dosya oluşturuyoruz. Dosya adı ve konumu keyfidir. Ben bu adı ve konumu tercih ettim. İsimlendirme kurallarına uygun herhangi bir dosya adı ile fiziksel diskte yeterli alana ve erişim izinlerine sahip herhangi bir konumda da bu dosya oluşturulabilir.
dd if=/dev/zero of=/.swapfile bs=1024 count=1048576
Ardından mkswap
ile bu dosyayı swap alanı olarak kullanıma hazırlıyoruz
mkswap /.swapfile
Daha sonra swapon komutu ile sisteme bu dosyayı swap alanı olarak kullanabileceğini bildiriyoruz
swapon /.swapfile
Bu swap bildiriminde makine reboot edildikten sonra swap alanı kullanım dışı olur. Swapon komutu ile tekrar kullanıma açmak gerekir. Bu alanı kalıcı SWAP alanı olarak tanımlamak için ise /etc/fstab
dosyasına ilgili tanımlamayı eklememiz gerekir.
nano /etc/fstab
/.swapfile none swap sw 0 0
Bu tanımlamadan sonra artık yeni swap alanı kalıcı hale gelir.
SWAP ve Bellek Durumunu Kontrol Etme
free -h
Swap alanını kontrol etmek için kullanılabilecek diğer araçlar top, htop, glances
ve vmstat
araçlarıdır.
SWAP Alanlarını Listeleme
swapon --summary
cat /proc/swaps
Bellek Detaylarını Görme
cat /proc/meminfo
SWAP Alanının Kullanımını Özelleştirme
Linux Kernel 2.6 ile birlikte swappiness kernel parametresi eklendi. Bu parametre ile birlikte sistem yöneticileri SWAPın kullanımını ayarlayabilmektedir. Bu parametre için default değer 60 olup, 0 ile 100 arasında bir değer almaktadır. Eğer bu değer çok yüksek değerlere ayarlanırsa daha fazla bellek sayfasının swap alanına taşınmasına neden olur. Eğer çok küçük ayarlanırsa bu sefer de idle durumda olan proseslerin bile SWAP alanı yerine RAM bellekte tutulmasına neden olur. Birçok durumda default değer yeterli olurken, yeterli RAM alanı olan masaüstü ve interaktif sistemler için düşük değerler uygun olabilir. Batch işlemler yapan daha az interaktif sistemler için ise bu değerin artırılması gerekebilir. Bu değeri geçici olarak (reboota kadar) değiştirmek için
echo "50" | tee /proc/sys/vm/swappiness
Bu değeri kalıcı olarak değiştirmek için /etc/sysctl.conf
dosyası içindeki "vm.swappiness"
girdisine (yoksa ekleyerek) durumunuza uygun değeri atayabilirsiniz.
nano /etc/sysctl.conf
vm.swappiness=50
Güncellenen değerin işler hale gelmesi için
sysctl -p
komutu verilmelidir.
SWAP alanının kullanımdan kaldırılması
Bazı durumlarda SWAP alanının kullanım dışı bırakılması gerekebilir. Belli bir SWAP alanının kullanım dışı bırakılması için
swapoff /.swapfile
Tüm SWAP alanlarının kullanım dışı bırakılması için
swapoff -a
Eğer /etc/fstab
dosyasına swap alanı ile ilgili girdi eklenmişse buradan da tanımlama satırının kaldırılması gerekir.
Ardından swap alanı olarak kullanılan /.swapfile
dosyası silinebilir.
İlk Yorumu Siz Yapın