Swap Kullanımı
Swap alanının yoğun kullanımı, Linux sunucularda disk okuma ve yazma işlemlerinde performans sorunlarına yol açabilir. Bu tür sorunlar genellikle altyapı yetersizliğinden kaynaklanmaktadır.
🔔 Sosyal medya kanallarımızı takip etmeyi unutmayın!
İçindekiler
Swap Nedir?
Swap, bellek yetersiz kaldığında verilerin disk üzerinde geçici olarak saklandığı bir alandır. Ancak, disk erişim hızının RAM’e kıyasla çok daha yavaş olması nedeniyle, swap kullanımı genellikle performans düşüşüne yol açar. Bazen bu yavaşlık kabul edilebilir ölçüdedir. Sunucunun kapanıp açılmasından ya da uygulamanın crash olmasından iyidir 😊
Swap Kullanımı Nasıl Kontrol Edilir?
Swap ve memory (bellek) kullanımını görüntülemek için farklı araçlar kullanabilirsiniz. Bu örnekte free, htop ve vmstat araçlarını kullanacağım. Şuan sunucum yük altında olmadığı için kaynak kullanımının düşük olmasını bekliyorum.
root@bilgihouse:~# free -h
total used free shared buff/cache available
Mem: 1.9Gi 224Mi 1.7Gi 540Ki 126Mi 1.7Gi
Swap: 974Mi 0B 974Mi
Görüldüğü üzere memory used çok düşük ve 1.7Gi free yani boş alanımız bulunuyor. Dolayısıyla swap kullanımı söz konusu değil. Görsel olarak da kaynak kullanımını detaylı bir şekilde görüntülemek ve incelemek istiyorsanız htop komutunu kullanabilirsiniz.
Sunucunuzda htop bulunmuyor ise aşağıdaki komut yardımı ile yüklemeyi deneyebilirsiniz😊
Stres Testi
Kaynak kullanımının gerçeğe yakın olmadığı için sunucuda stres testi başlatacağım. Bu sırada bellek kullanımında yoğunluk oluşmasını bekliyorum.
root@bilgihouse:~# free -h
total used free shared buff/cache available
Mem: 1.9Gi 1.9Gi 62Mi 4.0Ki 23Mi 328Ki
Swap: 974Mi 951Mi 23Mi
Sunucu bellek ihtiyacını karşılamak için swap alanını kullanmaya başladı. Görüldüğü üzere ~950Mi swap kullanımı söz konusu. Bu demek oluyorki sunucu ihtiyaçlarını karşılamak için sürekli diske yazıp okuma diskten okuma yapıyor. Sanallaştırma ortamında yüzlerce sanal sunucunuz olduğunu düşünün. Eğer sunucularda doğru kaynak yapılandırması yapılmadı ise ilginç sorunlar ile karşı karşıya kalmanız mümkün.

Son olarak vmstat aracını göstereceğim. Çıktı sütunlarında “si” (swap in) ve “so” (swap out) swap kullanımını belirtir. Aşağıdaki çıktıya baktığınızda swap kullanımı yok ve sonrasında stres testini başlattığımda anlık kullanım hemen yansımaktadır. Testi durdurduğum anda tekrar kullanım düşmektedir.
root@bilgihouse:~# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 6040 1825432 6712 99792 0 0 0 0 497 46 0 0 100 0 0
1 0 6040 1825432 6712 99792 0 0 0 0 592 74 0 2 98 0 0
1 0 6040 1825432 6712 99792 0 0 0 0 704 99 1 0 99 0 0
3 0 6040 1825432 6712 99792 0 0 0 0 513 173 3 26 71 0 0
4 0 6040 1825432 6712 99792 0 246852 1556 246852 967 1784 2 97 0 1 0
4 0 6040 1825432 6712 99792 0 438880 2608 438880 1721 3383 2 94 0 4 0
4 0 6040 1825432 6712 99792 141644 90228 141820 90228 5054 7932 4 81 0 14 0
4 0 6040 1825432 6712 99792 82740 153600 83340 153600 3078 4542 6 91 0 3 0
4 0 6040 1825432 6712 99792 62020 226256 62020 226256 2599 3715 2 98 0 0 0
4 0 6040 1825432 6712 99792 58056 294732 58056 294744 2712 3651 4 96 0 0 0
3 0 6040 1825432 6712 99792 57200 222964 57200 222964 2499 3515 2 96 0 2 0
3 0 6040 1825432 6712 99792 189552 64000 189644 64000 7006 11261 5 69 0 27 0
3 0 6040 1825432 6712 99792 198600 110960 198600 110960 7017 10970 4 72 0 23 0
1 0 6040 1825432 6712 99792 72456 77936 74800 77936 2812 4218 5 91 0 4 0
2 0 6040 1825432 6712 99792 0 0 360 0 681 45 0 0 99 1 0
1 0 6040 1825432 6712 99792 64 0 268 0 753 183 0 0 99 1 0
1 0 6040 1825432 6712 99792 0 0 0 0 749 99 0 1 99 0 0
1 0 6040 1825432 6712 99792 0 0 0 0 766 25 0 0 100 0 0
1 0 6040 1825432 6712 99792 0 0 0 0 602 92 0 0 100 0 0
1 0 6040 1825432 6712 99792 0 0 0 0 533 58 0 0 100 0 0
1 0 6040 1825432 6712 99792 0 0 0 0 604 33 0 0 100 0 0
1 0 6040 1825432 6712 99792 0 0 0 0 612 53 1 0 99 0 0
1 0 6040 1825432 6712 99792 0 0 0 0 574 69 0 2 98 0 0
Swap Alanını Geçici Olarak Devre Dışı Bırakma
Swap alanını geçici olarak devre dışı bırakmak için aşağıdaki komutu kullanabilirsiniz.
root@bilgihouse:~# swapoff -a
Not: Bu işlem RAM üzerinde baskı oluşturabilir ve yeterli fiziksel bellek yok ise sistem dengesiz hale gelebilir.
Swap Alanını Kalıcı Olarak Devre Dışı Bırakma
nano ile /etc/fstab dosyasını açın ve swap alanını fstab dosyasından kaldırın.
root@bilgihouse:~# nano /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# systemd generates mount units based on this file, see systemd.mount(5).
# Please run 'systemctl daemon-reload' after making changes here.
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
UUID=c7681b3c-7420-463e-b286-c9620b4cd55c / ext4 errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
UUID=46e926bf-f87c-44d1-b833-b24411344e8a none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
Swap satırını silin veya yorum satırı yapın, örneğin;
# UUID=46e926bf-f87c-44d1-b833-b24411344e8a none swap sw 0 0
Dosyayı kayıt edin ( CTRL + X –> Y ) ve ardından sistemi yeniden başlatın.
root@bilgihouse:~# reboot now
Swap Kullanımını Azaltmak
Sistemin ne kadar agresif bir şekilde swap kullanacağını swappiness aracı ile belirleyebilirsiniz. Varsayılan değer genellikle 60’tır.
root@bilgihouse:~# sysctl vm.swappiness
vm.swappiness = 60
Geçici olarak swappiness ayarını değiştirmek için aşağıdaki komutu referans alabilirsiniz.
root@bilgihouse:~# sysctl vm.swappiness=10
Kalıcı olarak değişiklik yapmak istiyorsanız sysctl.conf dosyasını açın ve aşağıdaki ifadeyi yeni bir satır olarak ekleyin ve/veya var olanı güncelleyin.
root@bilgihouse:~# nano /etc/sysctl.conf
vm.swappiness=10
Değişikliği hemen uygulamak için aşağıdaki komutu çalıştırın.
root@bilgihouse:~# sysctl -p
Disk Performansına Etkisi
Swap kullanımının azaltılması veya tamamen devre dışı bırakılması, disk I/O performansında önemli bir artışa neden olabilir çünkü:
- Swap, diske sürekli veri yazıp okuma yapar ve bu işlem yüksek gecikmelere yol açabilir.
- Swap devre dışı bırakıldığında, disk I/O yalnızca uygulama gereksinimlerine odaklanır.
Ancak, yeterli fiziksel bellek yoksa ve swap devre dışı bırakılırsa, bu durum sistem çökmesine veya uygulama hatalarına neden olabilir.
Öneriler
- Swap kullanımını tamamen ortadan kaldırmak için fiziksel bellek kapasitesini artırın.
- Swap erişimini hızlandırmak için SSD ve daha yüksek performansa sahip diskler kullanın.
- Swap aktivitelerini izlemek için zabbix ya da prometheus gibi araçları kullanabilirsiniz.
Faydalı olması dileğiyle 😊
Gelişmelerden haberdar olmak için bilgihouse.com ve sosyal medya kanallarımızı ziyaret etmeyi unutmayın.