Merhabalar bu makalede Linux sunucudaki bir process için CPU limitleme işlemini yapacağız. Bu işlem için CPULimiter isimli paketi kullanacağız. Test ortamımız her zaman olduğu gibi Debian sunucuda yapılacaktır. Fakat aynı işlem adımları Redhat tabanlı sunucu tipleri içinde geçerlidir.

İşlemin ilk adımı olarak paketi sunucumuza kuralım.

Bu işlem için öncelikle ilgili paketi Linux sunucuma kuruyorum.

[php]apt-get install cpulimit[/php]

Fedora-Centos için ise yum install cpulimit komutunu kullanınız.

bu komut boyutu küçük olan cpulimit paketini sunucuma kuracaktır. Alternatif bir yöntem olarak paketi derleyerekte kurabilirsiniz. Bunun için ise aşağıdaki komutları çalıştırmanız yeterli olacaktır.

[php]cd /usr/src/
wget –no-check-certificate https://github.com/opsengine/cpulimit/tarball/master -O cpulimit.tar
tar -xvf cpulimit.tar
cd opsengine-cpulimit-9df7758
make
ln -s cpulimit /usr/bin/cpulimit[/php]

paketi kurduktan sonra dilerseniz örnek kullanımlara geçebiliriz.

Öncelikle ben paketi gzip için kullanıyorum her gece sunucumun tam sistem yedeğini alıyor ve bu yedeği ise Dropbox a atıyorum. Bu işlem sırasında yani sıkıştırma işlemi sırasında gzip yüksek CPU tüketiyor ve yedekleme işlemi devam ettiği sürece yüksek CPU tüketiminden dolayı diğer bileşenlerde performasn kayıpları yaşanabiliyor. Özellikle MYSQL ve Apache sunucumun isteklere daha geç cevap verdiğini görüyorum.

Bu makalede de uygulamalı bir örnek yapıyor olacağız.

Öncelikle normal bir senaryoda yedekleme için bir sıkıştırma işlemi başlatalım ve CPU tüketimini gözlemliyelim.

htop komutuyla gzip in CPU tüketimene bakıyorum.

cpulimit1

Şimdi gelelim asıl konumuza. Burada ben işlem olarak gzip in sadece %10 CPU kullanmasını set edeceğim.

Bu işlem için ise şu komutu veriyorum konsola.

[php]cpulimit -P /bin/gzip -l 10[/php]

Komut sonrasında ise CPU tüketimine tekrar bakıyorum.

cpulimit2

Görüldüğü gibi bu işlem sonrası gzip in CPU kullanımı %9 a düşmüş durumda ve maksimum ise %10 a çıkabilecektir.

Yalnız bu komut sadece konsola verdiğinizde çalışır. Arka planda çalışmasını istiyor isek şu komutu vermemiz gerekemktedir.

[php]cpulimit -b -P /bin/gzip -l 10[/php]

-b Background
-P Path
-l Limit
10 ise maksimum CPU kullanım % desini ifade eder.

Pathe değilde bir Process limit vermek istiyor isekte şu komutu kullanabiliriz.

[php]cpulimit -e apache2 -l 30[/php]

Diğer tüm kullanabilir komutların bir listesini almak istiyor isekte cpulimit -h komtunu kullanabiliriz.

Kullanılabilir komutlar ise şu şekildedir.
[php]
-p, –pid=N pid of the process
-e, –exe=FILE name of the executable program file The -e option only works when cpulimit is run with admin rights.
-P, –path=PATH absolute path name of the executable program file
OPTIONS
-b –background run in background
-c –cpu=N override the detection of CPUs on the machine.
-l, –limit=N percentage of cpu allowed from 1 up. Usually 1 – 400, but can be higher on multi-core CPUs (mandatory)
-v, –verbose show control statistics
-z, –lazy exit if there is no suitable target process, or if it dies
-h, –help display this help and exit[/php]

Bir başka makalede görüşmek dileğiyle.


0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.