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.