Limitați utilizarea CPU a unui proces în Linux cu CPULimit Tool


Într-o postare anterioară, am explicat CPUTool pentru limitarea și controlul utilizării CPU a oricărui proces în Linux. Permite unui administrator de sistem să întrerupă execuția unui proces (sau a unui grup de procese) dacă încărcarea CPU/sistemului depășește un prag definit. Aici, vom învăța cum să folosim un instrument similar numit cpulimit.

Cpulimit este folosit pentru a restricționa utilizarea CPU a unui proces în același mod ca și CPUTool, cu toate acestea, oferă mai multe opțiuni de utilizare în comparație cu omologul său. O diferență importantă este că cpulimit nu gestionează încărcarea sistemului, spre deosebire de cputool.

Lectură sugerată: 9 comenzi utile pentru a obține informații despre CPU pe Linux

Instalați CPULimit pentru a limita utilizarea CPU a unui proces în Linux

CPULimit este disponibil pentru a fi instalat din depozitele software implicite ale Debian/Ubuntu și derivatele sale folosind un instrument de gestionare a pachetelor.

sudo apt install cpulimit

În RHEL/CentOS și Fedora, trebuie să activați mai întâi depozitul EPEL și apoi să instalați cpulimit așa cum se arată.

# yum install epel-release
# yum instalează cpulimit

Limitarea procesului de utilizare a procesorului cu CUPLimit

În această subsecțiune, vom explica cum funcționează cpulimit. Mai întâi, să rulăm o comandă (aceeași comandă dd la care ne-am uitat în timp ce acoperim cputool) care ar trebui să aibă ca rezultat un procent mare de CPU, în fundal (rețineți că PID-ul procesului este tipărit după rularea comenzii) .

dd if=/dev/zero of=/dev/null &

[1] 17918

În continuare, putem folosi instrumentele de sus sau priviri care scot starea actuală actualizată frecvent a unui sistem Linux care rulează, pentru a urmări utilizarea CPU a comenzii de mai sus.

top

Privind rezultatul de mai sus, putem vedea că procesul dd utilizează cel mai mare procent din timpul procesorului 100,0%.

Dar putem limita acest lucru folosind cputlimit după cum urmează. Opțiunea --pid sau -p este utilizată pentru a specifica PID-ul și --limit sau -l este folosit pentru a seta un procent de utilizare pentru un proces.

Comanda de mai jos va limita comanda dd (PID 17918) la 50% utilizarea unui nucleu CPU.

sudo cpulimit --pid 17918 --limit 50  

Process 17918 detected

Odată ce rulăm cpulimit, putem vedea utilizarea curentă a procesorului pentru comanda dd cu partea de sus sau cu privire. Din rezultat, valoarea variază între (51,5%-55,0% sau puțin peste).

Putem reduce utilizarea procesorului pentru a doua oară, după cum urmează, de data aceasta scăzând procentul în continuare, după cum urmează:

sudo cpulimit --pid 17918 --limit 20 

Process 17918 detected

Așa cum am făcut și înainte, putem rula top sau priviri pentru a vedea noua utilizare a procesorului pentru proces, care va varia de la 20%-25,0% sau puțin peste aceasta.

top

Notă: shell-ul devine neinteractiv – nu se așteaptă nicio intrare de utilizator atunci când cpulimit rulează. Pentru a o opri (ceea ce ar trebui să oprească operațiunea de limitare a utilizării CPU), apăsați [Ctrl + C].

Pentru a rula cpulimit ca proces de fundal, utilizați comutatorul --background sau -b, eliberând terminalul.

sudo cpulimit --pid 17918 --limit 20 --background

Pentru a specifica numărul de nuclee CPU prezente pe sistem, utilizați marcajul --cpu sau -c (de obicei, acesta este detectat automat).

sudo cpulimit --pid 17918 --limit 20 --cpu 4

În loc să limităm utilizarea procesorului unui proces, îl putem opri cu opțiunea --kill sau -k. Semnalul implicit trimis procesului este SIGCONT, dar pentru a trimite un semnal diferit, utilizați marcajul --signal sau -s.

sudo cpulimit --pid 17918 --limit 20 --kill 

Pentru a ieși dacă nu există un proces țintă adecvat sau în cazul în care acesta moare, includeți -z sau --lazy astfel.

sudo cpulimit --pid 17918 --limit 20 --kill --lazy

Pentru informații suplimentare și opțiuni de utilizare, consultați pagina de manual cpulimit.

man cpulimit

Consultați următoarele ghiduri utile pentru a găsi informații despre CPU și monitorizarea performanței CPU/sistemului.

  1. Găsiți procesele de top în funcție de cea mai mare utilizare a memoriei și procesorului în Linux
  2. Cpustat – Monitorizează utilizarea CPU prin rularea proceselor în Linux
  3. CoreFreq – Un instrument puternic de monitorizare a procesorului pentru sistemele Linux
  4. Găsiți procesele de top în funcție de cea mai mare utilizare a memoriei și procesorului în Linux
  5. 20 de instrumente de linie de comandă pentru a monitoriza performanța Linux
  6. 13 Instrumente de monitorizare a performanței Linux – Partea 2

În comparație, după testarea CPUTool și CPULimit, am observat că primul oferă o funcționalitate mai eficientă și mai fiabilă de „limitare a utilizării procesorului de proces”.

Aceasta este în funcție de intervalul procentual de utilizare a procesorului observat după rularea ambelor instrumente pe un anumit proces. Încercați ambele instrumente și adăugați-vă gândurile la acest articol folosind formularul de feedback de mai jos.