- 23 Kasım 2025
- 983
- 57
Swap Nedir ve Neden Önemlidir?
Linux sistemlerde swap alanı, fiziksel RAM yetersiz kaldığında kullanılan bir disk alanıdır. Bellek dolu olduğunda, işletim sistemi nadiren erişilen bellek sayfalarını bu swap alanına taşır. Böylece, aktif uygulamalar için daha fazla fiziksel RAM boşaltılır. Sanal bellek olarak da adlandırılan bu mekanizma, sistemin daha fazla uygulama çalıştırmasına veya daha fazla veri işlemesine olanak tanır. Ancak, disk tabanlı bir alan olduğu için swap kullanımı, fiziksel RAM'e göre çok daha yavaştır. Yoğun swap kullanımı, sunucu performansında ciddi düşüşlere ve gecikmelere neden olabilir. Bu nedenle, sunucularda swap yönetimini anlamak ve doğru şekilde yapılandırmak kritik öneme sahiptir. Bellek yetersizliği durumunda sistemin çökmesini engellerken, performansın da optimal düzeyde kalmasını sağlamak gerekir.
Swapiness Parametresi Ne Anlama Gelir?
`vm.swappiness` parametresi, Linux çekirdeğinin ne kadar agresif bir şekilde swap alanı kullanacağını belirleyen bir ayardır. Bu değer, 0 ile 100 arasında bir tam sayı olarak ifade edilir. Yüksek bir `swappiness` değeri, çekirdeğin daha erken ve daha sık bir şekilde bellek sayfalarını swap alanına taşımaya başlayacağı anlamına gelir. Aksine, düşük bir `swappiness` değeri, çekirdeğin swap kullanımını minimumda tutmaya çalışacağı ve yalnızca gerçekten fiziksel belleğin kritik seviyelere düşmesi durumunda swap'a başvuracağı anlamına gelir. Örneğin, `swappiness=0` değeri swap kullanımını neredeyse tamamen devre dışı bırakırken, `swappiness=100` değeri ise çekirdeği mümkün olduğunca çok veri sayfasını swap'a taşımaya teşvik eder. Bu parametre, sunucunuzun bellek yönetimi stratejisini doğrudan etkiler.
Varsayılan Swapiness Değeri ve Etkileri
Çoğu Linux dağıtımında, `vm.swappiness` parametresinin varsayılan değeri genellikle 60 olarak ayarlanır. Bu varsayılan ayar, masaüstü bilgisayarlar veya geliştirme ortamları gibi sistemler için kabul edilebilir olabilir. Çünkü bu tür sistemlerde uygulamalar sıkça başlatılır, kapatılır ve farklı bellek ihtiyaçları bulunur. Ancak sunucular için, özellikle veritabanı sunucuları veya yüksek performans gerektiren uygulamaları barındıran sunucular için `swappiness=60` değeri genellikle istenmeyen bir durumdur. Bu değer, fiziksel RAM henüz tamamen dolmadan bile çekirdeğin aktif bellek sayfalarını swap'a taşımaya başlamasına neden olabilir. Sonuç olarak, disk G/Ç (Giriş/Çıkış) işlemlerinde artış, uygulama gecikmelerinde artış ve genel sistem performansında gözle görülür bir düşüş yaşanabilir. Bu nedenle, sunucuların özel ihtiyaçlarına göre bu değeri optimize etmek önemlidir.
Optimal Swapiness Değeri Nasıl Belirlenir?
Optimal `swappiness` değerini belirlemek, sunucunun iş yüküne ve kullanım amacına bağlıdır. Tek bir "en iyi" değer yoktur. Örneğin, büyük bir veritabanı sunucusu, verileri bellekte tutmayı tercih edeceği için düşük bir `swappiness` değerine (örneğin 1 veya 10) ihtiyaç duyabilir. Başka bir deyişle, bu tür bir sunucu, bellek sayfalarını swap'a taşımak yerine RAM'de tutmayı hedefler. Aksine, çok sayıda küçük, nadiren erişilen süreci çalıştıran bir sunucu, RAM'i daha verimli kullanmak adına biraz daha yüksek bir `swappiness` değerinden faydalanabilir. En iyi uygulama, sunucunuzun performansını farklı `swappiness` değerleriyle test etmektir. Ek olarak, bellek kullanımı, disk G/Ç ve genel sistem tepki sürelerini izleyerek en uygun değeri deneysel olarak bulabilirsiniz. Bu yaklaşım, sisteminize özel en iyi yapılandırmayı sağlar.
Swapiness Değerini Geçici Olarak Değiştirme
Linux sunucunuzda `swappiness` değerini geçici olarak değiştirmek oldukça basittir. Bu işlem, genellikle test amaçlı veya anlık bir performans ayarı gerektiğinde kullanılır. Değeri değiştirmek için `sysctl` komutunu kullanabilirsiniz. Örneğin, `swappiness` değerini 10 olarak ayarlamak isterseniz, aşağıdaki komutu çalıştırmanız yeterlidir: `sudo sysctl vm.swappiness=10`. Bu komutu çalıştırdıktan sonra, yeni değer hemen aktif hale gelir. Mevcut `swappiness` değerini kontrol etmek için ise `cat /proc/sys/vm/swappiness` komutunu kullanabilirsiniz. Ancak, bu değişiklik yalnızca sunucunuz yeniden başlatılana kadar geçerlidir. Sunucu yeniden başlatıldığında, sistem varsayılan veya kalıcı olarak ayarlanmış `swappiness` değerine geri döner. Bu nedenle, kalıcı bir değişiklik istiyorsanız farklı bir yönteme başvurmanız gerekir.
Swapiness Değerini Kalıcı Olarak Ayarlama
`swappiness` değerini sunucunuzda kalıcı olarak ayarlamak için ` /etc/sysctl.conf` dosyasını düzenlemeniz gerekir. Bu dosya, sistemin başlangıcında uygulanan çekirdek parametrelerini içerir. Belirtilen dosyayı bir metin düzenleyici ile açın (örneğin, `sudo nano /etc/sysctl.conf`). Dosyanın sonuna yeni bir satır ekleyerek `vm.swappiness = X` formatında istediğiniz değeri yazın. Örneğin, `vm.swappiness = 10` yazarak değeri 10 olarak ayarlayabilirsiniz. Kaydedip çıktıktan sonra, bu yeni ayarların etkinleşmesi için aşağıdaki komutu çalıştırmanız gerekir: `sudo sysctl -p`. Bu komut, `sysctl.conf` dosyasındaki tüm ayarları okur ve uygular. Artık sunucunuz yeniden başlatıldığında bile belirlediğiniz `swappiness` değeri korunacaktır. Bu yöntem, sunucunun uzun vadeli performans stabilitesi için en güvenilir yoldur.
Swapiness Ayarları ve Sunucu Performansı İlişkisi
Swapiness ayarlarının doğru yapılması, Linux sunucu performansını doğrudan etkiler. Yanlış yapılandırılmış bir `swappiness` değeri, gereksiz yere disk G/Ç trafiği oluşturarak uygulamaların yavaşlamasına, hatta kritik iş yüklerinde kesintilere neden olabilir. Düşük `swappiness` değerleri, bellek kullanımını optimize eder ve disk erişimini minimize ederek daha hızlı tepki süreleri sağlar. Bu, özellikle bellek yoğun veritabanları veya hızlı web sunucuları için hayati öneme sahiptir. Bununla birlikte, çok düşük bir `swappiness` değeri, sistemin bellek yetersizliği durumunda daha hızlı çökmesine yol açabilir. Bu nedenle, optimal bir denge bulmak önemlidir. Sonuç olarak, sunucunuzun iş yükünü dikkatlice analiz ederek ve `swappiness` değerini kademeli olarak test ederek en iyi performansı elde edebilir, sisteminizin kararlı ve hızlı çalışmasını sağlayabilirsiniz.
