Limiteu l'ús de la CPU d'un procés a Linux amb l'eina CPULimit


En una publicació anterior, hem explicat CPUTool per limitar i controlar l'ús de la CPU de qualsevol procés a Linux. Permet a un administrador del sistema interrompre l'execució d'un procés (o grup de processos) si la càrrega de la CPU/del sistema supera un llindar definit. Aquí, aprendrem a utilitzar una eina similar anomenada cpulimit.

Cpulimit s'utilitza per restringir l'ús de la CPU d'un procés de la mateixa manera que CPUTool, però ofereix més opcions d'ús en comparació amb el seu homòleg. Una diferència important és que cpulimit no gestiona la càrrega del sistema a diferència de cputool.

Instal·leu CPULimit per limitar l'ús de CPU d'un procés a Linux

CPULimit està disponible per instal·lar-se des dels dipòsits de programari predeterminats de Debian/Ubuntu i els seus derivats mitjançant una eina de gestió de paquets.

$ sudo apt install cpulimit

A RHEL/CentOS i Fedora, primer heu d'habilitar el repositori EPEL i després instal·lar cpulimit tal com es mostra.

# yum install epel-release
# yum instal·la cpulimit

En aquesta subsecció, explicarem com funciona cpulimit. Primer, executem una ordre (la mateixa ordre dd que vam mirar mentre cobrim cputool) que hauria de donar lloc a un percentatge de CPU elevat, en segon pla (tingueu en compte que el PID del procés s'imprimeix després d'executar l'ordre).

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

[1] 17918

A continuació, podem utilitzar les eines de mirada que donen sortida a l'estat actual actualitzat freqüentment d'un sistema Linux en funcionament, per veure l'ús de la CPU de l'ordre anterior.

$ top

Mirant la sortida anterior, podem veure que el procés dd utilitza el percentatge més alt de temps de CPU 100,0%.

Però podem limitar-ho amb cputlimit de la següent manera. L'opció --pid o -p s'utilitza per especificar el PID i --limit o -l és s'utilitza per establir un percentatge d'ús per a un procés.

L'ordre següent limitarà l'ordre dd (PID 17918) a l'ús del 50% d'un nucli de CPU.

$ sudo cpulimit --pid 17918 --limit 50  

Process 17918 detected

Un cop executem cpulimit, podem veure l'ús actual de la CPU per a l'ordre dd amb un cop d'ull. A partir de la sortida, el valor oscil·la entre (51,5%-55,0% o una mica més enllà).

Podem accelerar l'ús de la CPU per segona vegada de la següent manera, aquesta vegada reduint encara més el percentatge de la següent manera:

$ sudo cpulimit --pid 17918 --limit 20 

Process 17918 detected

Com hem fet abans, podem executar la part superior o mirar per veure el nou ús de la CPU per al procés, que oscil·larà entre el 20% i el 25,0% o una mica més enllà.

$ top

Nota: l'intèrpret d'ordres esdevé poc interactiu; no espera cap entrada de l'usuari quan s'està executant cpulimit. Per eliminar-lo (que hauria d'aturar l'operació de limitació d'ús de la CPU), premeu [Ctrl + C].

Per executar cpulimit com a procés en segon pla, utilitzeu l'interruptor --background o -b, alliberant el terminal.

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

Per especificar el nombre de nuclis de CPU presents al sistema, utilitzeu el senyalador --cpu o -c (normalment es detecta automàticament).

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

En lloc de limitar l'ús de la CPU d'un procés, podem eliminar-lo amb l'opció --kill o -k. El senyal per defecte que s'envia al procés és SIGCONT, però per enviar un senyal diferent, utilitzeu el senyalador --signal o -s.

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

Per sortir si no hi ha un procés de destinació adequat, o en cas que mor, inclou el -z o el --lazy com aquest.

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

Per obtenir informació addicional i opcions d'ús, consulteu la pàgina de manual de cpulimit.

$ man cpulimit

Consulteu les guies útils següents per trobar la informació de la CPU i el control del rendiment de la CPU/sistema.

  1. Cerca els processos que s'executen amb major ús de memòria i CPU a Linux
  2. Cpustat: supervisa la utilització de la CPU mitjançant l'execució de processos a Linux
  3. CoreFreq: una potent eina de supervisió de la CPU per a sistemes Linux
  4. Cerca els processos que s'executen amb major ús de memòria i CPU a Linux
  5. 20 eines de línia d'ordres per supervisar el rendiment de Linux
  6. 13 Eines de control del rendiment de Linux - Part 2

En comparació, després de provar CPUTool i CPULimit, vam observar que el primer ofereix una funcionalitat de limitació d'ús de la CPU del procés més eficaç i fiable.

Això és segons el percentatge d'ús de la CPU observat després d'executar ambdues eines en un procés determinat. Proveu ambdues eines i afegiu les vostres opinions a aquest article mitjançant el formulari de comentaris que trobareu a continuació.