Ubuntu/Linux İçin Takas Alanı
Takas alanı, sabit disk üzerinde işletim sistemi tarafından ayrılmış bir bölümdür. İşlenecek veriler RAM’e sığmadığı zaman bu bölüm RAM gibi kullanılır ve böylece işlemlerin devam etmesi sağlanır. Sabit disklerin veri okuma/yazma hızları RAM’lerden çok daha düşük olduğu için takas alanının kullanılması işlemleri yavaşlatır[link]. Fakat çalışan servisler bazen çok ciddi sistem kaynağı harcar hale gelir ve takas(swap) alanına ihtiyaç duyar.
Linux işletim sisteminde takas alanı oluşturmak aslında oldukça basittir. Ubuntu veya Linux un başka bir sürümünde harddisk üzerinde bir partition oluşturarak bu işi gerçekleştireceğiniz gibi basit bir dosya oluşturarakta amacımıza hızlı bir şekilde ulaşmak mümkün. Takas alanlarının en az cihazın ram ı kadar olmasına dikkat etmenizi önerebilirim. Çünkü Ubuntu gibi bir işletim sistemi kullanıyorsanız ve bilgisayarınızı uyku moduna (hibernate) alıp tamamen enerjisini kesmek istiyorsanız ramlarınız tümünün harddiske çıkarılması gerekir. Bu aşamada takas alanı devreye girer ve ramlarınızı bu dosya/partition içerisine yazar. Bu nedenle takas alanının en az ram kadar hatta ramdan daha fazla olması sistemin doğru çalışması için önemlidir.
Gelelim takas alanını nasıl oluşturacağımıza. Ben bu çalışmada hızlı olması açısından dosya oluşturmayı tercih edeceğim. Siz isterseniz gparted gibi bir yazılım kullanarak harddiskiniz üzerinde bir alan ayırabilirsiniz. Bu aşamada daha önce paylaşmış olduğumuz dd komutunu kullanacağız.
Çalışmalarımı root dizininde (/) gerçekleştireceğim. Ben yetki seviyemi konsol üzerinde root seviyesine çıkarmadım. sudo komutunu kullanmaya devam edeceğim. Siz isterseniz root seviyesine çıkarak sudo komutlarını es geçebilirsiniz.
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
Yukarıdaki komut ile root dizini içerisine swapfile isminde 1GB bir dosya oluşturdum. count sayısını arttıracak daha büyük boyutlu dosyalar oluşturabilirsiniz.
Dosya izinlerimizi ayarlayalım
sudo chmod 0600 /swapfile
sudo chown root:root /swapfile
Dosyamızı oluşturduktan sonra sıra geldi bu dosyayı swap dosyası olarak tanımlamaya. İlk önce dosyayı swap olarak işaretleyelim.
sudo mkswap /swapfile
Komutu çalıştırdıktan sonra şöyle bir çıktı göreceksiniz.
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=6a5bde7f-7040-4970-8fff-73ee1c8c9a23
Daha sonra swap dosyamızı kullanılabilir hale getirelim
sudo swapon /swapfile
Bu komutu çalıştırdıktan sonra swap dosyamız kullanılabilir hale gelecektir.
Aktif swap alanlarını şu komutla listeleyebilirsiniz.
sudo swapon -s
Swap dosyasını kapatmak için swapoff komutunu kullanmanız mümkün. Elbette bindiğiniz dalı kesmemek için swap dosyasını silmeden önce sistemden ayırmayı unutmayın.
Yapılan bu değişiklikler kalıcı değildir. İşletim sistemi yeniden başladığı anda swap otomatik olarak off duruma geçecektir. Kalıcı yapmak için ise şu dosyayı editleyip
sudo nano /etc/fstab
dosyasının sonuna swap dosyanızı şu şekilde tanımlamanız gerekir.
/swapfile none swap sw 0 0
İşlemler bu kadar. Fakat bir ince ayardan daha bahsetmem gerekiyor. Swap dosyasının sürekli olarak kullanılması sistem üzerinde yavaşlamalara neden olur. Çünkü sisteminiz harddiski ram olarak kullanmaya çalışır. Yavaş yazma/okuma işlemi sistemde gecikmelere neden olur. Bu nedenle swap alanları sadece acil durumlarda devreye girmelidir.
Bunun için önerilen ayarlar şöyledir [daha geniş bilgi]:
echo 10 | sudo tee /proc/sys/vm/swappiness
echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf
Buradaki sayısal değer swapın ne kadar sıklık ile kullanılacağı ile ilgilidir. Eğer 0 olarak işaretlerseniz sistem swap alanını sadece out-of-memory durumunda yani ram ın hiç yetmediği durumda(acil durum diyoruz buna) kullanacaktır. 100 yaparsanız sistem swap alanınızı ram olarak kullanmaya başlayacaktır. Default değer 60 olarak tanımlanmıştır. Harddiskinizin performansına göre bir değer atayabilirsiniz.
İşlem tamam 🙂
güzel bir paylaşım olmuş eline sağlık.