Takip et

Swap Alanı Nedir ve Neden Sistem Performansı İçin Kritik Öneme Sahiptir?

Ubuntu’ya Swap Alanı Nasıl Eklenir: Kapsamlı Bir Rehber

Ubuntu işletim sisteminizde beklenmedik performans düşüşleri mi yaşıyorsunuz? Özellikle bellek yetersizliği nedeniyle uygulamalarınız yavaşlıyor, donuyor veya aniden kapanıyor mu? Bu kapsamlı rehber, Ubuntu sisteminize swap alanı eklemenin ne anlama geldiğini, neden hayati önem taşıdığını ve bu kritik adımı adım adım nasıl gerçekleştireceğinizi ayrıntılı bir şekilde açıklayarak sistem performansınızı gözle görülür şekilde artırmanıza yardımcı olacak.

Swap Alanı Nedir ve Neden Sistem Performansı İçin Kritik Öneme Sahiptir?

Bilgisayarınızın hızlı ve verimli çalışabilmesi için ana bellek (RAM) hayati bir bileşendir. Ancak bazen, özellikle aynı anda çok sayıda uygulama çalıştırdığınızda veya bellek yoğun görevler üstlendiğinizde, RAM kapasitesi yetersiz kalabilir. İşte tam bu noktada “swap alanı” devreye girer. Swap alanı, sabit diskinizin (HDD veya SSD) bir bölümünün veya özel bir dosyasının, sistemin ana belleği (RAM) dolduğunda geçici olarak ek bellek olarak kullanılması prensibine dayanır. Bu, işletim sisteminizin “sanal bellek” (virtual memory) mekanizmasının önemli bir parçasıdır.

Sisteminizdeki RAM tamamen dolduğunda, işletim sistemi, o an aktif olarak kullanılmayan verileri veya program parçalarını RAM’den alıp swap alanına taşır. Bu işleme “sayfalama” (paging) veya “takas etme” (swapping) denir. Böylece, RAM’de yer açılır ve yeni uygulamalar veya veriler için alan sağlanmış olur. İhtiyaç duyulduğunda, swap alanına taşınan veriler tekrar RAM’e geri yüklenir. Bu mekanizma, sistemin bellek yetersizliği nedeniyle tamamen çökmesini engeller, çoklu görev yeteneğini artırır ve daha fazla uygulamanın aynı anda çalışabilmesine olanak tanır. Özellikle düşük RAM’e sahip eski sistemlerde veya yoğun kaynak tüketen uygulamalar (örneğin, video düzenleme yazılımları, sanal makineler, büyük veri analizi araçları) çalıştırırken swap alanı, sistemin kararlılığını ve kullanılabilirliğini sağlamak adına vazgeçilmez bir role sahiptir. Swap alanı olmadan, RAM yetersiz kaldığında sistem “Out Of Memory” (OOM) hataları vermeye başlar ve uygulamaları rastgele sonlandırabilir, bu da kullanıcı deneyimini ciddi şekilde olumsuz etkiler. Bir sunucu ortamında ise, swap alanı, özellikle ani yük artışlarında veya bellek sızıntısı olan uygulamalar nedeniyle sistemin çökmesini önleyerek hizmet kesintilerini minimuma indirir. Örneğin, bir web sunucusunda yoğun trafik anında, PHP-FPM veya veritabanı süreçleri beklenenden fazla bellek tüketebilir. Swap alanı, bu tür durumlarda geçici bir tampon görevi görerek sunucunun çalışmaya devam etmesini sağlar, bu da iş sürekliliği açısından kritik bir avantajdır. Ancak, swap alanının sabit disk üzerinde yer alması nedeniyle RAM’den çok daha yavaş olduğunu unutmamak gerekir. Bu nedenle, swap alanına aşırı bağımlılık, sistem performansında gözle görülür bir yavaşlamaya neden olabilir. İdeal olan, yeterli RAM’e sahip olmak ve swap alanını yalnızca acil durumlarda veya sistemin kış uykusuna yatırılması gibi özel senaryolarda kullanmaktır. Yine de, her Ubuntu sisteminde bir miktar swap alanının bulunması, beklenmedik bellek sıkışıklıklarına karşı bir güvenlik ağı oluşturur.

Sisteminizde Mevcut Swap Durumunu Nasıl Kontrol Edebilirsiniz?

Ubuntu sisteminizde swap alanı eklemeden veya değiştirmeden önce, mevcut swap yapılandırmasını anlamak önemlidir. Bu, sisteminizin zaten bir swap bölümüne veya dosyasına sahip olup olmadığını, ne kadarının kullanıldığını ve genel bellek durumunuzu görmenizi sağlar. Mevcut swap durumunuzu kontrol etmek için birkaç basit komut bulunmaktadır. Bu komutlar, size sisteminizin bellek kullanımına dair değerli bilgiler sunacaktır.

İlk olarak, genel bellek ve swap kullanımını özetleyen en yaygın komutlardan biri olan free komutunu kullanabiliriz. Genellikle daha okunaklı bir çıktı için -h (human-readable) parametresiyle birlikte kullanılır:


    free -h
    

Bu komutun çıktısı, RAM (bellek) ve swap alanının toplam, kullanılan ve boş miktarlarını gösterecektir. Örnek bir çıktı şöyle görünebilir:


                  total        used        free      shared  buff/cache   available
    Mem:           7.7Gi       3.5Gi       1.3Gi       452Mi       2.9Gi       3.8Gi
    Swap:          2.0Gi       512Mi       1.5Gi
    

Yukarıdaki örnekte, sistemin 7.7 GB RAM’i ve 2.0 GB swap alanı olduğu, bu swap alanının 512 MB’ının kullanıldığı ve 1.5 GB’ının boş olduğu açıkça görülmektedir. Eğer “Swap” satırında tüm değerler “0B” veya “0Mi” olarak görünüyorsa, bu sisteminizde etkin bir swap alanı olmadığı anlamına gelir.

Bir diğer kullanışlı komut ise swapon komutudur. Bu komut, etkin olan swap cihazlarını ve dosyalarını listeler:


    swapon -s
    

Bu komutun çıktısı, swap alanının dosya yolunu veya cihaz adını, türünü, boyutunu, kullanılan miktarını ve önceliğini gösterir. Örnek bir çıktı:


    Filename                Type        Size    Used    Priority
    /swapfile               file        2097148 524288  -2
    

Burada, /swapfile adında bir swap dosyasının etkin olduğu, boyutunun yaklaşık 2 GB (2097148 KB) olduğu ve 512 MB (524288 KB) kadarının kullanıldığı anlaşılmaktadır. Eğer bu komut hiçbir çıktı vermezse, bu da sisteminizde etkin bir swap alanı bulunmadığına işaret eder.

Son olarak, /proc/swaps dosyasının içeriğini okuyarak da benzer bilgilere ulaşabilirsiniz:


    cat /proc/swaps
    

Bu dosya, swapon -s komutuna benzer, ancak bazen daha detaylı veya farklı bir formatta bilgi sunabilir. Çıktıyı dikkatlice inceleyerek, sisteminizin bellek yönetimi stratejisinde swap alanının ne kadar yer tuttuğunu anlayabilirsiniz. Bu kontroller, swap alanı ekleme işlemine başlamadan önce sisteminizin mevcut durumunu net bir şekilde görmenizi sağlar ve olası çakışmaları veya gereksiz adımları önlemenize yardımcı olur. Özellikle bir sunucuyu yönetiyorsanız, bu kontroller, ani performans düşüşlerinin RAM yetersizliğinden mi yoksa başka bir nedenden mi kaynaklandığını anlamak için ilk adımlardan biridir. Örneğin, bir veritabanı sunucusunda bellek kullanımının sürekli yüksek olduğunu ve swap alanının sürekli olarak kullanıldığını fark ederseniz, bu, daha fazla RAM eklemeniz gerektiğinin veya veritabanı yapılandırmanızın optimize edilmesi gerektiğinin bir işareti olabilir.

Ubuntu’da Swap Dosyası Oluşturma ve Etkinleştirme Adımları

Eğer sisteminizde yeterli swap alanı olmadığını veya hiç swap alanı bulunmadığını tespit ettiyseniz, endişelenmeyin. Ubuntu’da bir swap dosyası oluşturmak ve bunu sisteminize entegre etmek oldukça basit bir süreçtir. Bu adımları dikkatlice takip ederek, sisteminizin performansını önemli ölçüde artırabilir ve bellek yetersizliği sorunlarının önüne geçebilirsiniz. Bu bölümde, swap dosyasını oluşturmaktan onu kalıcı hale getirmeye kadar tüm süreci adım adım ele alacağız.

Swap Dosyası Boyutunu Belirleme: Ne Kadar Swap Alanına İhtiyacınız Var?

Swap alanı oluşturmadan önceki en önemli kararlardan biri, ne kadar alana ihtiyacınız olduğunu belirlemektir. Bu, sisteminizin RAM miktarına ve kullanım alışkanlıklarınıza bağlıdır. Genel kabul görmüş bazı yönergeler şunlardır:

  • 1 GB’tan Az RAM: RAM’in en az iki katı swap alanı önerilir (örneğin, 512 MB RAM için 1 GB swap).
  • 1 GB – 4 GB RAM: RAM’in bir ila bir buçuk katı swap alanı idealdir (örneğin, 2 GB RAM için 2-3 GB swap).
  • 4 GB – 16 GB RAM: RAM’in yarısı kadar veya en az 2-4 GB swap alanı genellikle yeterlidir.
  • 16 GB’tan Fazla RAM: Genellikle 2-4 GB swap alanı yeterlidir, ancak sistemin kış uykusuna (hibernation) yatırılması planlanıyorsa, RAM miktarı kadar swap alanı gerekebilir.

Yoğun bellek tüketen uygulamalar (video düzenleme, sanal makineler, oyun geliştirme) kullanıyorsanız, daha fazla swap alanı düşünmek akıllıca olabilir. Ancak unutmayın ki swap alanı ne kadar büyük olursa olsun, RAM kadar hızlı olmayacaktır. Bu nedenle, swap alanını RAM’in bir yedeği olarak değil, bir destek mekanizması olarak görmelisiniz. Örneğin, 8 GB RAM’e sahip bir geliştirici makinesi için, aynı anda birden fazla IDE, Docker konteyneri ve tarayıcı sekmesi çalıştırıyorsa, 4 GB’lık bir swap dosyası başlangıç için iyi bir denge sağlayabilir. Bu, sistemin ani bellek sıkışıklıklarında rahatlamasına olanak tanırken, SSD’nin aşırı yazma yüküne maruz kalmasını da bir miktar engeller.

Swap Dosyası Oluşturma: Alanı Ayırma

Swap dosyası oluşturmak için fallocate komutunu kullanacağız. Bu komut, belirtilen boyutta bir dosya oluşturur ve anında diske yer ayırır, bu da dd komutuna göre çok daha hızlıdır. Örneğin, 4 GB’lık bir swap dosyası oluşturmak için aşağıdaki komutu kullanın:


    sudo fallocate -l 4G /swapfile
    

Bu komut, kök dizinde /swapfile adında 4 GB boyutunda bir dosya oluşturacaktır. Eğer fallocate komutu sisteminizde yoksa veya eski bir sistem kullanıyorsanız, dd komutunu alternatif olarak kullanabilirsiniz. Ancak dd komutu daha yavaş çalışır ve disk üzerinde gerçek veri yazma işlemi yapar:


    sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
    

Bu komut da 4 GB’lık bir swap dosyası oluşturacaktır (1M blok boyutunda 4096 blok = 4096 MB = 4 GB). Dosya oluşturulduktan sonra, güvenlik amacıyla yalnızca root kullanıcısının okuma ve yazma iznine sahip olmasını sağlamak için izinleri ayarlamamız gerekir:


    sudo chmod 600 /swapfile
    

Bu adım, yetkisiz kullanıcıların swap dosyasına erişmesini veya değiştirmesini engelleyerek sistem güvenliğini artırır.

Swap Alanını Biçimlendirme: Kullanıma Hazır Hale Getirme

Oluşturduğumuz dosyayı bir swap alanı olarak kullanabilmek için onu biçimlendirmemiz gerekir. Bu işlem mkswap komutu ile yapılır:


    sudo mkswap /swapfile
    

Bu komut, /swapfile dosyasını swap alanı olarak tanınabilir bir biçime dönüştürecektir. Komutun çıktısı, dosyanın boyutunu ve bir UUID (Evrensel Tekil Tanımlayıcı) gibi bilgileri içerecektir. Bu adım, işletim sisteminin swap dosyasını doğru bir şekilde algılaması ve kullanması için zorunludur. Biçimlendirme işlemi tamamlandığında, swap dosyanız artık etkinleştirilmeye hazırdır.

Swap Alanını Etkinleştirme: Sistemi Kullanıma Açma

Swap dosyasını biçimlendirdikten sonra, onu sisteminizde etkinleştirmeniz gerekir. Bu işlem swapon komutu ile yapılır:


    sudo swapon /swapfile
    

Bu komutu çalıştırdıktan sonra, swap alanı anında etkinleşir ve sisteminiz tarafından kullanılmaya başlanır. Etkinleştirme işleminin başarılı olup olmadığını kontrol etmek için daha önce öğrendiğimiz free -h veya swapon -s komutlarını tekrar kullanabilirsiniz:


    free -h
    swapon -s
    

Çıktıda, oluşturduğunuz swap dosyasının artık listelendiğini ve sistemin toplam swap alanına eklendiğini görmelisiniz. Bu, swap alanının anlık olarak kullanıma hazır olduğu anlamına gelir.

Kalıcı Hale Getirme: Yeniden Başlatmalarda Swap Alanını Koruma

Şu anki haliyle, sisteminizi yeniden başlattığınızda oluşturduğunuz swap alanı otomatik olarak etkinleşmeyecektir. Swap alanının her sistem başlangıcında otomatik olarak devreye girmesi için /etc/fstab dosyasına bir giriş eklemeniz gerekir. Bu dosya, işletim sisteminin başlangıçta hangi dosya sistemlerini bağlayacağını belirler.

Öncelikle, /etc/fstab dosyasını bir metin düzenleyici ile açın. Örneğin, Nano kullanabilirsiniz:


    sudo nano /etc/fstab
    

Dosyanın en altına aşağıdaki satırı ekleyin:


    /swapfile none swap sw 0 0
    

Bu satırın anlamı şudur:

  • /swapfile: Swap dosyasının yolu.
  • none: Bağlama noktası belirtilmediği için.
  • swap: Dosya sisteminin türü (bir swap alanı olduğunu belirtir).
  • sw: Bağlama seçenekleri (swap için standart seçenek).
  • 0 0: Dump ve fsck ayarları (swap dosyaları için genellikle 0 olarak ayarlanır).

Dosyayı kaydedip kapatın (Nano’da Ctrl+O, Enter, Ctrl+X). Değişikliklerin doğru yapıldığından emin olmak için, sistemi yeniden başlatmadan önce mount -a komutunu çalıştırabilirsiniz. Bu komut, /etc/fstab dosyasındaki tüm girişleri bağlamayı dener ve herhangi bir hata varsa size bildirir:


    sudo mount -a
    

Eğer bu komut herhangi bir hata vermezse, her şeyin yolunda olduğu anlamına gelir. Şimdi sisteminizi yeniden başlattığınızda swap alanınız otomatik olarak etkinleşecektir. Bu adımlar tamamlandığında, Ubuntu sisteminiz artık ekstra bir sanal bellek katmanına sahip olacak ve bellek yoğun görevlerle daha iyi başa çıkabilecektir. Bu, özellikle sınırlı RAM’e sahip dizüstü bilgisayarlar veya geliştirme sunucuları için büyük bir fark yaratabilir. Örneğin, bir geliştirici, birden fazla sanal makineyi aynı anda çalıştırırken veya büyük bir yazılım projesini derlerken, swap alanının aktif olması sayesinde sistemin donmasını veya çökmesini engelleyebilir, böylece üretkenliğini artırabilir.

Swap Performansını Optimize Etme: Swappiness Ayarları

Swap alanı eklemek harika bir başlangıçtır, ancak sisteminizin bu alanı nasıl kullandığını daha iyi anlamak ve optimize etmek, genel performansı daha da artırabilir. Ubuntu ve diğer Linux dağıtımları, çekirdek parametreleri aracılığıyla swap kullanımını kontrol etmenize olanak tanır. Bu parametrelerden biri de “swappiness” değeridir. Swappiness, işletim sisteminin RAM dolmadan ne kadar erken bir şekilde verileri swap alanına taşımaya başlayacağını belirleyen bir sayıdır. Bu değer, 0 ile 100 arasında değişir ve sistemin swap alanına olan “eğilimini” gösterir.

Yüksek bir swappiness değeri (örneğin 60 veya 100), sistemin daha agresif bir şekilde swap alanını kullanacağı anlamına gelir. Yani, RAM henüz tamamen dolmamış olsa bile, aktif olmayan veya uzun süredir kullanılmayan bellek sayfalarını hızlıca swap’e taşımaya meyillidir. Bu, genellikle masaüstü kullanıcıları için varsayılan değerdir ve çoklu görev yaparken veya çok sayıda uygulama açtığınızda RAM’i boş tutmaya yardımcı olabilir. Ancak, bu durum, sıkça kullanılan verilerin bile yavaş olan diske taşınmasına ve daha sonra tekrar RAM’e geri yüklenmesine neden olarak genel sistem performansında bir yavaşlamaya yol açabilir.

Düşük bir swappiness değeri (örneğin 10 veya 0), sistemin swap alanını mümkün olduğunca az kullanacağı anlamına gelir. Bu durumda, sistem, RAM neredeyse tamamen dolana kadar verileri swap alanına taşımaktan kaçınacaktır. Bu ayar, genellikle sunucular, veritabanı sistemleri veya yüksek performans gerektiren uygulamalar için tercih edilir. Çünkü bu tür sistemlerde, verilerin mümkün olduğunca RAM’de tutulması, disk G/Ç işlemlerinin azaltılması ve performansta maksimum hız sağlanması kritik öneme sahiptir. Örneğin, bir veritabanı sunucusunda, veritabanı önbelleklerinin ve aktif verilerin RAM’de kalması, sorgu yanıt sürelerini doğrudan etkiler. Düşük swappiness değeri, bu kritik verilerin yavaş olan swap alanına yazılmasını engelleyerek veritabanı performansını optimize eder.

Mevcut swappiness değerinizi kontrol etmek için aşağıdaki komutu kullanabilirsiniz:


    cat /proc/sys/vm/swappiness
    

Ubuntu’nun varsayılan değeri genellikle 60’tır. Bu değeri geçici olarak değiştirmek isterseniz (sistem yeniden başlatılana kadar geçerli olur):


    sudo sysctl vm.swappiness=10
    

Yukarıdaki komut, swappiness değerini 10’a düşürecektir. Bu, sistemin swap kullanımına daha az eğilimli olacağı anlamına gelir. Bu değişikliği kalıcı hale getirmek için /etc/sysctl.conf dosyasını düzenlemeniz gerekir:


    sudo nano /etc/sysctl.conf
    

Dosyanın en altına aşağıdaki satırı ekleyin veya mevcutsa değiştirin:


    vm.swappiness=10
    

Dosyayı kaydedip kapattıktan sonra, değişikliklerin etkili olması için sistemi yeniden başlatmanız veya aşağıdaki komutu çalıştırmanız gerekir:


    sudo sysctl -p
    

Doğru swappiness değerini seçmek, sisteminizin kullanım amacına bağlıdır. Masaüstü kullanıcıları için 10-30 arası bir değer genellikle iyi bir denge sağlar; sistemin RAM’i dolu olduğunda swap’i kullanmasına izin verirken, gereksiz yere yavaş diske yazmaktan kaçınır. Sunucular ve veritabanı sistemleri için ise 5 veya 10 gibi çok daha düşük bir değer tercih edilebilir. Bu ayar, swap alanının sadece mutlak bir ihtiyaç anında devreye girmesini sağlayarak, kritik verilerin her zaman hızlı RAM’de kalmasını garanti eder. Swappiness ayarını dikkatlice optimize etmek, sisteminizin genel yanıt verme hızını ve kararlılığını önemli ölçüde etkileyebilir, böylece donanımınızdan en iyi performansı almanızı sağlar.

Mevcut Swap Alanını Kaldırma veya Değiştirme

Zamanla sisteminizin ihtiyaçları değişebilir. Belki daha fazla RAM eklediniz ve swap alanına artık bu kadar ihtiyacınız yok, ya da swap dosyasını daha hızlı bir diske taşımak istiyorsunuz. Belki de başlangıçta belirlediğiniz swap alanı boyutu artık yeterli gelmiyor ve daha büyük bir swap dosyasına geçiş yapmanız gerekiyor. Bu gibi durumlarda, mevcut swap alanınızı kaldırma veya boyutunu değiştirme işlemini bilmek önemlidir. Bu süreç, oluşturma adımlarının tersine çevrilmesini ve bazı ek düzenlemeleri içerir.

Swap Alanını Devre Dışı Bırakma

Bir swap dosyasını kaldırmadan veya boyutunu değiştirmeden önce, onu sisteminizden devre dışı bırakmanız gerekir. Bu, swapoff komutu ile yapılır ve sistemin o anki swap alanını kullanmayı durdurmasını sağlar:


    sudo swapoff /swapfile
    

Eğer birden fazla swap alanı kullanıyorsanız ve hepsini devre dışı bırakmak istiyorsanız, -a parametresini kullanabilirsiniz:


    sudo swapoff -a
    

Bu komutu çalıştırdıktan sonra, free -h veya swapon -s komutlarını kullanarak swap alanının devre dışı bırakıldığını doğrulayabilirsiniz. Swap satırında “0B” veya “0Mi” değerlerini görmelisiniz.

Fstab Kaydını Silme

Swap alanını kalıcı hale getirmek için /etc/fstab dosyasına eklediğimiz girişi de kaldırmamız gerekir. Aksi takdirde, sistem yeniden başlatıldığında olmayan bir swap dosyasını bağlamaya çalışacak ve bu da başlangıçta hatalara yol açabilir.

/etc/fstab dosyasını bir metin düzenleyici ile açın:


    sudo nano /etc/fstab
    

Daha önce eklediğiniz şu satırı bulun ve silin veya başına # işareti koyarak yorum satırı haline getirin:


    /swapfile none swap sw 0 0
    

Dosyayı kaydedip kapatın. Bu, sistemin bir sonraki başlangıcında bu swap dosyasını otomatik olarak etkinleştirmeye çalışmasını önleyecektir.

Swap Dosyasını Silme

Swap alanı devre dışı bırakıldıktan ve /etc/fstab kaydı kaldırıldıktan sonra, artık fiziksel swap dosyasını silebilirsiniz. Bu işlem rm komutu ile yapılır:


    sudo rm /swapfile
    

Bu komut, /swapfile dosyasını diskten kalıcı olarak silecektir. Bu adımları tamamladığınızda, sisteminizdeki eski swap alanı tamamen kaldırılmış olacaktır. Bu, özellikle diskinizde yer açmak istediğinizde veya swap dosyasını başka bir yere taşımak istediğinizde kullanışlıdır.

Swap Dosyasının Boyutunu Değiştirme

Eğer mevcut swap dosyanızın boyutunu değiştirmek istiyorsanız, yukarıdaki kaldırma adımlarını takip ederek mevcut swap dosyasını tamamen silmeniz ve ardından “Ubuntu’da Swap Dosyası Oluşturma ve Etkinleştirme Adımları” bölümündeki adımları yeni boyutla baştan uygulamanız gerekir. Süreç şu şekilde özetlenebilir:

  1. Mevcut swap dosyasını devre dışı bırakın: sudo swapoff /swapfile
  2. /etc/fstab dosyasındaki swap kaydını yorum satırı yapın veya silin.
  3. Mevcut swap dosyasını silin: sudo rm /swapfile
  4. Yeni boyutta bir swap dosyası oluşturun: sudo fallocate -l [YENİ_BOYUT] /swapfile (örneğin, sudo fallocate -l 8G /swapfile)
  5. Dosya izinlerini ayarlayın: sudo chmod 600 /swapfile
  6. Yeni swap dosyasını biçimlendirin: sudo mkswap /swapfile
  7. Yeni swap dosyasını etkinleştirin: sudo swapon /swapfile
  8. /etc/fstab dosyasına yeni swap dosyasının kaydını ekleyin: /swapfile none swap sw 0 0
  9. Değişiklikleri doğrulayın: free -h ve sudo mount -a

Bu adımlar, sisteminizin swap alanını güncel ihtiyaçlarınıza göre esnek bir şekilde yönetmenizi sağlar. Özellikle RAM yükseltmesi yaptıktan sonra veya sisteminizdeki iş yükü değiştiğinde, swap alanını uygun şekilde ayarlamak, sistem performansını optimize etmenin önemli bir parçasıdır. Örneğin, 4 GB RAM’li bir sunucuyu 16 GB RAM’e yükselttikten sonra, 8 GB’lık swap alanına artık ihtiyaç duyulmayabilir ve bu alan 2 GB’a düşürülerek disk alanı tasarrufu sağlanabilir.

Vaka Analizi: Yetersiz Bellek Sorununa Çözüm Olarak Swap

Bir sistem yöneticisi olarak, küçük ve orta ölçekli işletmeler için web sunucularını yönetmek sıkça karşılaştığım bir görevdir. Genellikle bütçe kısıtlamaları nedeniyle, sunucular başlangıçta minimum düzeyde RAM ile yapılandırılır. Bir vaka çalışmasında, 2 GB RAM’e sahip, Ubuntu üzerinde çalışan ve Apache, PHP-FPM ile MySQL veritabanını barındıran bir web sunucusunun performans sorunlarıyla karşılaştığını gözlemledik. Sunucu, normal yük altında bile zaman zaman yavaşlıyor, yanıt süreleri uzuyor ve yoğun trafik anlarında “Out Of Memory” (OOM) hataları nedeniyle bazı PHP-FPM süreçleri veya MySQL sunucusu çöküyordu. Bu durum, web sitesi kullanıcıları için kötü bir deneyime yol açıyor ve iş sürekliliğini tehdit ediyordu.

Sistemin bellek kullanımını htop ve free -h komutlarıyla izlediğimizde, RAM’in sürekli %90’ın üzerinde kullanıldığını ve hiç swap alanı olmadığını gördük. Bu, sistemin bellek baskısı altında kaldığında hiçbir yere verileri boşaltamadığı anlamına geliyordu. Çözüm olarak, sunucuya fiziksel RAM eklemek ideal olsa da, bu her zaman anında mümkün olmayabilir veya bütçeyi aşabilir. Bu nedenle, ilk ve hızlı adım olarak bir swap dosyası eklemeye karar verdik.

Yukarıdaki adımları takip ederek, sunucuya 4 GB boyutunda bir swap dosyası ekledik. Adımlar şunlardı:

  1. sudo fallocate -l 4G /swapfile ile 4 GB’lık swap dosyası oluşturuldu.
  2. sudo chmod 600 /swapfile ile dosya izinleri ayarlandı.
  3. sudo mkswap /swapfile ile swap dosyası biçimlendirildi.
  4. sudo swapon /swapfile ile swap alanı etkinleştirildi.
  5. /etc/fstab dosyasına /swapfile none swap sw 0 0 satırı eklenerek kalıcı hale getirildi.

Swap alanı etkinleştirildikten sonra, sistemin bellek kullanımını tekrar izlemeye başladık. İlk gözlemler, RAM kullanımının hala yüksek olduğunu, ancak artık swap alanının da aktif olarak kullanılmaya başlandığını gösterdi. Özellikle ani trafik artışlarında, swap alanına yazma ve okuma işlemleri gerçekleşiyordu, bu da RAM’deki kritik verilerin yerini korumasına yardımcı oluyordu. En önemlisi, OOM hataları sona erdi ve Apache/PHP-FPM veya MySQL süreçlerinin beklenmedik şekilde çökmesi durdu.

Performans ölçümlerinde, web sitesinin yanıt sürelerinde genel bir iyileşme gördük. Sunucu, yoğun yük altında bile daha kararlı hale geldi ve kullanıcı deneyimi önemli ölçüde arttı. Swappiness değerini başlangıçta varsayılan 60’ta bıraktık, ancak daha sonra veritabanı performansını daha da optimize etmek için 10’a düşürdük. Bu, MySQL’in önbelleklerinin daha uzun süre RAM’de kalmasını sağladı.

Bu vaka analizi, swap alanının özellikle sınırlı RAM’e sahip sistemlerde nasıl kritik bir rol oynayabileceğini açıkça göstermektedir. Fiziksel RAM’in yerini tutmasa da, swap alanı, sistemin bellek sıkışıklıklarında hayatta kalmasını sağlayan ve genel kararlılığı artıran uygun maliyetli ve etkili bir çözümdür. Elbette, uzun vadede en iyi çözüm, sistemin ihtiyaç duyduğu kadar fiziksel RAM’e sahip olmaktır. Ancak swap alanı, bu tür yükseltmeler yapılana kadar veya ani ve geçici bellek talepleriyle başa çıkmak için vazgeçilmez bir güvenlik ağı sağlar.

Sonuç ve Sıkça Sorulan Sorular

Bu kapsamlı rehber boyunca, Ubuntu sisteminizde swap alanı eklemenin inceliklerini ele aldık. Swap alanı, bilgisayarınızın fiziksel belleği (RAM) yetersiz kaldığında devreye giren, sabit diskinizde ayrılmış bir sanal bellek alanıdır. Sistem kararlılığını artırır, çoklu görev yeteneğini geliştirir ve özellikle bellek yoğun uygulamalar çalıştırırken veya sınırlı RAM’e sahip sistemlerde beklenmedik çöküşleri önler. Swap alanı ekleme, mevcut durumu kontrol etme, boyutu belirleme, dosyayı oluşturma, biçimlendirme, etkinleştirme ve kalıcı hale getirme adımlarını detaylıca inceledik. Ayrıca, sisteminizin swap kullanım eğilimini belirleyen swappiness ayarının nasıl optimize edileceğini ve mevcut swap alanını nasıl yöneteceğinizi de öğrendiniz. Unutmayın ki swap alanı bir kurtarıcı olsa da, RAM kadar hızlı değildir ve aşırı kullanımı performansı düşürebilir. Bu nedenle, doğru boyutu seçmek ve swappiness ayarını sisteminizin kullanım amacına göre optimize etmek hayati öneme sahiptir. Bu rehberdeki adımları takip ederek, Ubuntu sisteminizin performansını ve kararlılığını önemli ölçüde artırabilirsiniz. Artık bellek yetersizliği sorunlarıyla başa çıkmak için güçlü bir araca sahipsiniz!

Sıkça Sorulan Sorular

Aşağıda, swap alanı hakkında en çok merak edilen soruları ve cevaplarını bulabilirsiniz:

SSD’lerde swap kullanmak zararlı mı?

Evet, SSD’lerde swap kullanmak, HDD’lere göre daha fazla endişe yaratabilir. Swap alanı, diske sürekli yazma ve okuma işlemleri yapar. SSD’lerin belirli bir yazma ömrü (TBW – Total Bytes Written) vardır ve sürekli yazma işlemleri bu ömrü kısaltabilir. Ancak, modern SSD’ler oldukça dayanıklıdır ve günlük masaüstü veya hafif sunucu kullanımı için swap alanı kullanımı genellikle ciddi bir sorun teşkil etmez. Ömrü etkileyecek kadar aşırı swap kullanımı genellikle yetersiz RAM’e işaret eder. Eğer sisteminiz sürekli swap kullanıyorsa, ana çözüm daha fazla RAM eklemek olmalıdır.

Ne kadar swap alanı eklemeliyim?

Bu, sisteminizin RAM miktarına ve kullanım alışkanlıklarınıza bağlıdır. Genel yönergeler:

  • 1 GB’tan Az RAM: RAM’in en az iki katı.
  • 1 GB – 4 GB RAM: RAM’in bir ila bir buçuk katı.
  • 4 GB – 16 GB RAM: RAM’in yarısı kadar veya en az 2-4 GB.
  • 16 GB’tan Fazla RAM: Genellikle 2-4 GB yeterlidir, ancak kış uykusu (hibernation) için RAM miktarı kadar swap gerekebilir.

Yoğun bellek tüketen uygulamalar kullanıyorsanız, daha fazla swap alanı düşünmek iyi olabilir.

Swap alanı RAM’den daha mı iyi?

Hayır, swap alanı RAM’den daha iyi değildir. RAM, çok daha hızlı bir bellek türüdür ve CPU’ya doğrudan erişim sağlar. Swap alanı ise sabit disk üzerinde yer aldığı için RAM’den kat kat yavaştır. Swap alanı, RAM’in bir yedeği veya acil durum tamponu olarak işlev görür; asla RAM’in yerini tutmaz. İdeal olan, sisteminizin tüm aktif verileri ve programları RAM’de tutabileceği kadar yeterli RAM’e sahip olmasıdır.

Swap alanı kullanmak sistemimi yavaşlatır mı?

Evet, sisteminiz swap alanını aktif olarak kullanmaya başladığında, performans düşüşü yaşamanız olasıdır. Bunun nedeni, sabit diskten veri okuma ve yazma hızının RAM’den çok daha yavaş olmasıdır. Sistem, RAM ile swap alanı arasında sürekli veri taşımak zorunda kaldığında, bu “thrashing” olarak bilinen duruma yol açar ve genel sistem yanıt verme hızını ciddi şekilde düşürür. Bu nedenle, swap alanı, sistemin çökmesini engellemek için bir güvenlik ağıdır, ancak aktif ve sürekli kullanımı genellikle daha fazla RAM’e ihtiyaç duyulduğunun bir işaretidir.

Birden fazla swap dosyası veya bölümü kullanabilir miyim?

Evet, Linux sistemleri birden fazla swap dosyası veya swap bölümü kullanabilir. Hatta farklı diskler üzerinde birden fazla swap alanı tanımlayarak performansı artırmak bile mümkündür (örneğin, bir SSD’de daha küçük, hızlı bir swap alanı ve bir HDD’de daha büyük, yedek bir swap alanı). Her bir swap alanı için /etc/fstab dosyasına ayrı bir giriş eklemeniz ve swapon komutuyla etkinleştirmeniz gerekir. Sistem, bu swap alanlarını önceliklerine göre (swapon -s çıktısındaki “Priority” sütunu) kullanacaktır.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Mobil sürümden çık