Limitarea utilizarii procesorului de catre un proces sub Linux

 

cpulimit este un mic program scris in C, care permite pentru a limitarea utilizarii procesorului prin un  proces Linux. Limita specificata este in procente astfel incat putem evita incarcarea maxima ca procesorului generata de script-uri, programe sau procese.

Am gasit destul de util folosirea cpulimit , pentru scripturile de crontab , de exemplu putand sa fac backup peste noapte si astfel pentru arhivarea unui fisier de 50GB folosind gzip nu va folosi toate resursele CPU si va ramane si celorlalte procese timp de CPU.

In cele mai multe distributii Linux , cpulimit este disponibil, astfel incat puteti sa folositi instala folosind comenziile:

sudo apt-get install cpulimit

sau

sudo yum install cpulimit

In cazul in care nu este disponibil dumneavoastra , atunci puteti sa-l compilati foarte usor:

cd / usr / src /
 wget - nu-check-certificat de https:// github.com / opsengine / cpulimit / arhiva / master-O cpulimit.tar
 tar-xvf cpulimit.tar
 CD-opsengine cpulimit-9df7758
 face
 ln-s cpulimit / usr / sbin / cpulimit

Din acest moment puteti rula cpulimit pentru a limita utilizare procesorului de catre un proces prin procentaj , exemplul de mai jos executa arhivarea cu gzip fara a trece de folosirea a 10% din CPU:

/usr/sbin/cpulimit --limit=10 /bin/gzip vzdump-openvz-102-2012_06_26-19_01_11.tar

Puteti verifica cat foloseste gzip in timp real prin comanda :

ps axu | grep [g] zip

sau

top

Prima comanda contine “grep [g] zip”  pentru a evita afisarea obisnuita a ultimei linii:


root    896448  10.0  3.1 159524  3528 ?        S    13:12   0:00 /usr/sbin/cpulimit --limit=10 /bin/gzip vzdump-openvz-102-2012_06_26-19_01_11.tar
root       26490  0.0  0.0   6364   708 pts/0    S+   15:24   0:00 grep gzip

Utilizand cpulimit puteti limita un proces care ruleaza deja , exemplu de mai jos aloca o limita de 20% la procesul cu PID 2342 :
 /usr/sbin/cpulimit -p 2342 -l 20
Deasemenea este posibila specificarea executabilului in locul PID-ului:
 /usr/sbin/cpulimit -P /usr/sbin/nginx -l 30

    
        

Leave a Reply

Your email address will not be published.

captcha

Please enter the CAPTCHA text