"Enter"a basıp içeriğe geçin

Linux’ta SWAP (Takas) Alanı Kullanımı

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

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.