Skip to content
Home » cpu limit » Linux Sunucularda CPU Kısıtlama

Linux Sunucularda CPU Kısıtlama

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.

apt-get install cpulimit

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.

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

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.

cpulimit -P /bin/gzip -l 10

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.

cpulimit -b -P /bin/gzip -l 10

-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.

cpulimit -e apache2 -l 30

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

Kullanılabilir komutlar ise şu şekildedir.

-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

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