GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo limitar el uso de la CPU de un proceso en Linux

Algunas veces, un proceso en particular puede consumir más uso de CPU y afectar el rendimiento de todo el sistema. Dado que ese proceso en particular consume más CPU, no podría realizar otras tareas. Debe esperar a que finalice ese proceso antes de comenzar una nueva tarea. Afortunadamente, esto ahora se puede resolver con una útil utilidad llamada CPULimit . Como su nombre lo indica, CPULimit limita el uso de la CPU de un proceso. Esto es bastante útil para controlar los trabajos por lotes, cuando no desea que consuman más uso de la CPU. El objetivo principal de CPULimit es evitar que un proceso se ejecute durante más de un tiempo determinado. No cambia lo agradable valor u otra configuración de prioridad de programación, sino el uso real de la CPU. Además, es capaz de adaptarse a la carga general del sistema, de forma dinámica y rápida. Funcionará en la mayoría de las distribuciones similares a Unix. En esta breve guía, veremos cómo limitar el uso de la CPU de un proceso en Linux.

Instalar límite de CPU

CPULimit está disponible en la mayoría de los repositorios predeterminados de distribución tipo Unix. Puede instalarlo utilizando los administradores de paquetes predeterminados en la distribución de Linux correspondiente, como se muestra a continuación.

Sobre Arch Linux y sus derivados:

$ sudo pacman -S cpulimit

En Debian, Ubuntu, Linux Mint:

$ sudo apt-get install cpulimit

En RHEL, CentOS, Fedora:

Primero habilite el repositorio EPEL.

$ sudo yum install epel-release

Y luego, instale cpuclimit usando el comando:

$ sudo yum install cpulimit

O,

$ sudo dnf install cpulimit

En SUSE/openSUSE:

$ sudo zypper install cpulimit

Limitar el uso de CPU de un proceso en Linux usando CPULimit

Ejecutemos un programa que consuma más uso de CPU. Los siguientes comandos deben ejecutarse como usuario root.

Cree un archivo llamado highcpu.sh .

$ vi highcpu.sh

Agregue los siguientes contenidos.

#!/bin/bash
while :; do :; done;

Presione la tecla ESC y escriba :wq para guardar y cerrar el archivo. Este breve programa se repetirá sin cesar y consumirá el uso máximo de la CPU. Entonces, te recomiendo que lo pruebes en una máquina virtual.

Hacer este archivo ejecutable:

$ chmod +x highcpu.sh

Luego, ejecute el proceso en segundo plano usando el comando:

$ ./highcpu.sh &

Salida de muestra:

[1] 2331

Aquí 2331 es el PID del proceso anterior.

Para ver cuánta CPU consume, use el comando "superior".

$ top

Salida de muestra:

top - 17:16:34 up 10 min, 2 users, load average: 1.12, 0.53, 0.26
Tasks: 87 total, 4 running, 83 sleeping, 0 stopped, 0 zombie
%Cpu(s): 91.9 us, 2.7 sy, 5.4 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 630108 total, 274868 free, 85904 used, 269336 buff/cache
KiB Swap: 1343484 total, 1343484 free, 0 used. 428172 avail Mem

 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
 2331 root 20 0 113120 1184 1004 R 97.7 0.2 2:40.91 highcpu.sh 
 2412 root 39 19 244516 11020 4496 R 1.3 1.7 0:00.11 dnf 
 10 root 20 0 0 0 0 S 0.3 0.0 0:00.68 rcu_sched 
 1 root 20 0 43900 6480 3900 S 0.0 1.0 0:01.61 systemd 
 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.06 ksoftirqd/0 
 6 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/u2:0 
 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 
 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 
 9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0 
 11 root 20 0 0 0 0 R 0.0 0.0 0:00.38 rcuos/0 
 12 root rt 0 0 0 0 S 0.0 0.0 0:00.02 watchdog/0 
 13 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper 
 14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 
 15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns 
 16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 perf 
 17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeb

Como puede ver en el resultado anterior, el proceso highcpu.sh consume más del 97 % del uso de la CPU. Dado que consumía más uso de la CPU, es bastante difícil ejecutar otras tareas. Después de unos minutos, su sistema podría colgarse o congelarse. Aquí es donde CPULimt viene en ayuda.

Ahora, limitemos el uso de CPU de este proceso usando la herramienta CPULimit. Digamos, por ejemplo, que limitaremos este proceso por PID al 30 % de la CPU.

Para hacerlo, ejecute:

$ cpulimit -l 30 -p 2331 &

Aquí,

  • "-l 30" flag limita el proceso al 30%.
  • "-p 2331" es el PID de highcpu.sh

Ahora, verifiquemos nuevamente el uso de la CPU del proceso anterior usando el comando:

$ top

Salida de muestra:

top - 17:29:16 up 5 min, 1 user, load average: 0.61, 0.57, 0.27
Tasks: 86 total, 2 running, 83 sleeping, 1 stopped, 0 zombie
%Cpu(s): 7.2 us, 0.0 sy, 0.0 ni, 92.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 630108 total, 435348 free, 78052 used, 116708 buff/cache
KiB Swap: 1343484 total, 1343484 free, 0 used. 442040 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
 2331 root 20 0 113120 1180 1004 T 29.7 0.2 3:36.97 highcpu.sh 
 2334 root 9 -11 4324 692 572 S 1.7 0.1 0:00.47 cpulimit 
 1 root 20 0 43900 6480 3900 S 0.3 1.0 0:01.65 systemd 
 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.02 ksoftirqd/0 
 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 
 6 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kworker/u2:0 
 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 
 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 
 9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0 
 10 root 20 0 0 0 0 S 0.0 0.0 0:00.44 rcu_sched 
 11 root 20 0 0 0 0 R 0.0 0.0 0:00.37 rcuos/0 
 12 root rt 0 0 0 0 S 0.0 0.0 0:00.05 watchdog/0 
 13 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper 
 14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 
 15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns 
 16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 perf

Como puede ver en el resultado anterior, el uso de la CPU de highcpu.sh se ha reducido al 29,7 %. , que está muy cerca del 30%. Ahora, puede tener más recursos de CPU para ejecutar otros procesos libremente.

Hemos visto cómo limitar un proceso por PID. Alternativamente, podemos ejecutar el comando anterior especificando el nombre del archivo de programa ejecutable.

Por ejemplo, el comando anterior sería:

$ cpulimit -l 30 ./highcpu.sh &

Del mismo modo, puede iniciar cualquier número de procesos en segundo plano y limitar su uso de CPU como desee.

Puede traer los procesos que se ejecutan en segundo plano a primer plano en cualquier momento usando "fg" comando:

$ fg

Salida de muestra:

cpulimit -l 30 -p 2331

Conclusión

CPULimit puede ser útil mientras ejecuta un proceso que consume más uso de CPU. La próxima vez Si nota que un programa consume más uso de CPU, simplemente busque el PID del proceso usando el comando "superior" y limite su uso de CPU a un valor mínimo usando el comando CPULimit como se describe arriba. También puede usar esta aplicación para probar el rendimiento de una aplicación con un uso bajo de la CPU.


Linux
  1. ¿Recuperar el uso de la CPU y el uso de la memoria de un solo proceso en Linux?

  2. ¿Cómo calcular el uso de CPU de un proceso por PID en Linux desde C?

  3. Cómo obtener el uso total de la CPU en Linux usando C++

  4. Limitar el uso de memoria/CPU de proceso en Linux

  5. Cómo obtener el uso de la CPU

Cómo matar un proceso en Linux

Cómo limitar el uso de la CPU con CPULimit en Ubuntu Linux

Cómo obtener el uso de la CPU de un solo proceso en Linux

Cómo verificar el uso o la utilización de la CPU de Linux

¿Cómo se informa el uso de la memoria en Linux?

¿Cómo registro el uso de la CPU por proceso?