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.

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😊

root@bilgihouse:~# apt install htop
root@bilgihouse:~# yum install htop
root@bilgihouse:~# htop
htop swap and memory usage

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:~# apt install stress
root@bilgihouse:~# stress --verbose --vm 4 --vm-bytes 512M
root@bilgihouse:~# yum install stress
root@bilgihouse:~# stress --verbose --vm 4 --vm-bytes 512M
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.

swap usage

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

  1. Swap kullanımını tamamen ortadan kaldırmak için fiziksel bellek kapasitesini artırın.
  2. Swap erişimini hızlandırmak için SSD ve daha yüksek performansa sahip diskler kullanın.
  3. 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.

Similar Posts

Bir yanıt yazın

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