Belirli Bir Uygulama için CPU Kullanımını Belirlemek

Merhabalar

Bazen çok fazla CPU kullanan bir uygulamamız olur ve gereğinden fazla CPU kullanarak sistemin yavaş çalışmasına diğer uygulara kötü yönde sebebiyet verebilir. Bu yazıda CPULimit adlı aracın kullanımına ve detaylarına değineceğim. CPULimit aracı bir uygulamanın (process) CPU kullanımını sınırlamak için kullanılmaktadır. Örneğin, %90 CPU tüketen bir process ‘e %50 CPU sınırlaması yapabiliyorsunuz ve artık o CPU kullanımında kalıyor taki siz uygulamayı (process) kapatana kadar.

 

Neden Kullanmalıyım?

Pek söylenecek birşey yok, fakat çok iyi bir bilgisayarınız yoksa bazı programlar sizin CPU kullanmanızı sizin isteminiz dışında sistemi şişirirler ve bu sizin diğer programlarınızı kullanmanızı kötü yolda etkiler. İşte bu yüzden bu aracı kullanabilirsiniz. Bunun gibi sebepler olabilir. 🙂

 

CPULimit Aracının Kurulumu

Ubuntu/Linux ve Debian için;

root# apt-get update
root# apt-get install -y cpulimit 

CentOS/Rhel ve Fedora için;

root# yum update
root# yum install -y cpulimit 

 

CPULimit Kaynak Koddan Kurulum

Aracı paket yöneticisiyle değilde kaynak koddan kurmak isterseniz aşağıdaki adımları takip edebilirsiniz.

root# wget -O cpulimit.zip https://github.com/opsengine/cpulimit/archive/master.zip
root# unzip cpulimit.zip
root# cd cpulimit-master
root# make
root# cp src/cpulimit /usr/bin   

 

CPUlimit Syntax Çıktısı

Usage: cpulimit TARGET [OPTIONS...]

   TARGET must be exactly one of these:
      -p, --pid=N        pid of the process
      -e, --exe=FILE     name of the executable program file
      -P, --path=PATH    absolute path name of the executable program file
   OPTIONS
      -b  --background   run in background
      -l, --limit=N      percentage of cpu allowed from 0 to 100 (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

 

Yüksek CPU Tüketen Süreç Oluşturmak

Aşağıdaki komutu kullanarak gereğinden fazla yüksek CPU tüketen bir process oluşturacağız ve arka planda çalışmasını sağlayacağız. NOT: Aşağıdaki komutu problem çıkmaması için sanal bir linux sistemde kullanabilirsiniz.

root#  md5sum /dev/zero &
 
[1] 4280  

ardından top komutunu kullanarak arka planda anlık çalışan süreçleri görebiliriz. Gördüğünüz gibi ilk sırada bizim çalıştırdığımız süreç yer almaktadır.

root# top
 
top - 06:19:42 up 53 min,  3 users,  load average: 0.22, 0.06, 0.06
Tasks: 240 total,   2 running, 238 sleeping,   0 stopped,   0 zombie
%Cpu(s): 50.0 us, 50.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   2112260 total,  1599948 used,   512312 free,    79288 buffers
KiB Swap:  1046524 total,        0 used,  1046524 free.   747996 cached Mem
   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                 
  4280 root      20   0   11412    688    608 R 90,4  0.0   0:16.32 md5sum                                                                  
     1 root      20   0   33916   4416   2640 S  0.0  0.2   0:01.97 init                                                                    
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd                                                                
     3 root      20   0       0      0      0 S  0.0  0.0   0:00.15 ksoftirqd/0  

Arka planda çalışan yüksek CPU tüketen md5sum adlı süreci geri konsol ekranına çağırmak isterseniz aşağıdaki komut kullanılabilir. İsterseniz CTRL+C kombinasyonuna basarak süreci öldürebilirsiniz.

root# fg
md5sum /dev/zero
^C  

 

CPUlimit ile CPU Kullanımını Sınırlamak

Biz önceden yüksek CPU tüketen bir process oluşturmuştuk. Bu sürecin PID numarasını öğrenip ardından cpulimit aracını kullanarak %90 ‘da çalışan süreci %50 kullanımına sınırlayacağız. Süreç bizim verdiğimiz değerin üzerine çıkmayacaktır. !

Arka planda çalışan sürecin PID numarasını aşağıdaki komutu kullanarak öğrenebiliriz.

root# pidof md5sum
 
4280  

Şimdi öğrendiğimiz ve yüksek CPU tüketen sürecin PID numarasına CPU sınırlaması yapacağız. Aşağıdaki komutu kullanarak %50 CPU sınırlaması yapabiliriz.

-b : Arka plana atar.

-l : Limit parametresi.

-p : PID belirtmek için.

root# cpulimit -l 50 -p 4280 -b  

Test için tekrardan top komutunu kullanarak md5sum adlı sürecin CPU kullanımına bakabiliriz. 

root# top
 
top - 06:19:42 up 53 min,  3 users,  load average: 0.22, 0.06, 0.06
Tasks: 240 total,   2 running, 238 sleeping,   0 stopped,   0 zombie
%Cpu(s): 50.0 us, 50.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   2112260 total,  1599948 used,   512312 free,    79288 buffers
KiB Swap:  1046524 total,        0 used,  1046524 free.   747996 cached Mem
   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                 
  4280 root      20   0   11412    688    608 R 49,4  0.0   0:16.32 md5sum                                                                  
     1 root      20   0   33916   4416   2640 S  0.0  0.2   0:01.97 init                                                                    
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd                                                                
     3 root      20   0       0      0      0 S  0.0  0.0   0:00.15 ksoftirqd/0  

Eğer CPU sınırlaması yaptığınız bir süreci öldürmek isterseniz ( pidof md5sum ) PID numarasını öğrendikten sonra aşağıdaki komutu kullanabilirsiniz. Eğer süreç ölmezse ikinci komutu kullanabilirsiniz.

root# pidof md5sum
 
=> 4280
 
root# kill 4280
 
root# kill 4280 -9   

veya cpulimit aracına ait bir öldürme tekniği var, aynı zamanda onuda kullanabilirsiniz. Fakat benim tavsiyem kill komutunu kullanmanız çünkü kill komutu daha iyidir ve pratikdir. CPULimit aracının öldürme kabiliyeti çok düşük ( ben beğenmedim açıkcası).

root# cpulimit  -l 50 -k -e 4280
Process 4280 detected
Process 4280 dead!  

Eğer CPU kullanımını limitlemek istediğiniz bir çalıştırılabilir program ise aşağıdaki gibi bir komut kullanabilirsiniz. Burada ise firefox adlı çalıştırılabilir programın CPU kullanımı %50 sınırlanmıştır.

root# cpulimit -e firefox -l 50  

Kaynak : https://github.com/opsengine/cpulimit/ && http://cpulimit.sourceforge.net/

Daha fazla bilgi için man sayfasına bakabilirsiniz.

Sevgiler.

Tagged with: , , , ,

Leave a Reply

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

*

Archives