GNU/Linux >> Tutoriales Linux >  >> Ubuntu

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

Este tutorial describe cómo limitar el uso de la CPU en Ubuntu 18.04. Usaré la utilidad cpulimit para este propósito. Cpulimit es una herramienta que limita el uso de CPU de un proceso (expresado en porcentaje, no en tiempo de CPU). Es útil para controlar los trabajos por lotes cuando no desea que consuman demasiados ciclos de CPU. El objetivo de cpulimit es evitar que un proceso se ejecute durante más de una relación de tiempo especificada. No cambia el valor agradable u otras configuraciones 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.

El control de la cantidad de CPU utilizada se realiza enviando señales SIGSTOP y SIGCONT POSIX a los procesos. Todos los procesos e hilos secundarios del proceso especificado compartirán el mismo porcentaje de CPU.

1 nota preliminar

Este tutorial se basa en el servidor Ubuntu 18.04 LTS (Bionic Beaver), por lo que debe configurar una instalación básica del servidor Ubuntu 18.04 antes de continuar con este tutorial. El sistema debe tener una dirección IP estática. Uso 192.168.1.100 como mi dirección IP en este tutorial y server1.example.com como nombre de host.

2 Instalación de límite de CPU

Primero necesitamos instalar cpulimit de la siguiente manera:

apt-get update
apt-get install cpulimit

3 Limitación del uso de la CPU 

Ahora comprobaremos la utilidad para limitar el uso de la CPU. Para esto, primero verificaremos el uso de la CPU sin cpulimit y luego implementaremos cpulimit para evaluar el mismo. Dejémoslo claro con el ejemplo.

  1. Este es un ejemplo de cómo utilizar su CPU con una aplicación en CPU de un solo núcleo:
dd if=/dev/zero of=/dev/null &

Luego verificaremos el uso de la CPU con el comando:

top
top - 11:24:18 up 49 min,  1 user,  load average: 0.94, 1.02, 1.79
Tasks: 249 total,   2 running, 247 sleeping,   0 stopped,   0 zombie
%Cpu(s): 13.4 us, 11.6 sy,  0.0 ni, 74.9 id,  0.0 wa,  0.1 hi,  0.0 si,  0.0 st
KiB Mem:   1010540 total,   271652 used,   738888 free,    21760 buffers
KiB Swap:  1048572 total,        0 used,  1048572 free.   158204 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                   
 1850 root      20   0    7224    616    520 R 100.0  0.1   1:20.33 dd                        
 1851 root      20   0   24952   1756   1180 R   0.3  0.2   0:00.03 top                       
    1 root      20   0   33480   2776   1456 S   0.0  0.3   0:05.31 init                      
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd        

Como podemos ver que el uso de la CPU ha llegado al 100%, ahora usaremos cpulimit para limitar el uso de la CPU. Podemos traer este proceso a primer plano usando fg comando y cancelarlo con CTRL+C

fg

Ahora podemos probar cpulimit para ver si realmente hace lo que se supone que debe hacer. Vamos a probarlo de la siguiente manera:

cpulimit -l 30 dd if=/dev/zero of=/dev/null &
[correo electrónico protegido]:~# cpulimit -l 30 dd if=/dev/zero of=/dev/null &
[1] 1852
[correo electrónico protegido]:~# Proceso 1853 detectado

[1]+  Listo                    cpulimit -l 30 dd if=/dev/zero of=/dev/null
[email protected]:~#

Ahora comprobaremos el uso de la CPU con el comando superior:

top
arriba - 11:30:54 hasta 55 min, 1 usuario, promedio de carga:0,20, 0,58, 1,34
Tareas:250 en total, 2 en ejecución, 247 en reposo, 1 detenida, 0 zombis
%Cpu(s) ):  4.5 us,  4.1 sy,  0.0 ni, 91.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   1010540 en total,   271944 usados,   738596 libres,    21816 buffers
Intercambio de KiB:1048572 en total,        0 usados, 1048572 gratis. 158212 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                           
 1853 raíz      20   0    7224    620 3; rojo 3; /fuerte> 0.1 0:35.53 dd
1 raíz 20 0 33480 2776 1456 S 0.0 0.3 0:05.37 init
2 raíz 20 0 0 0 0 0 s 0.0 0.0 0:00.01 kthreadd
3 raíz 20 0 0 0:0      0 S   0.0  0.0   0:00.02 ksoftirqd/0               
    4 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0

Ahora puede ver que el uso de la CPU ha disminuido del 100 % al 33,8 %, casi un 30 %. Así que hemos verificado con éxito la utilidad cpulimit que puede limitar el uso del consumo de CPU en una distribución de Ubuntu de un solo núcleo.

  1. Este es un ejemplo de cómo utilizar su CPU con una aplicación en una CPU de múltiples núcleos:

Para verificar el núcleo de su CPU, use el comando:

nproc   

En mi caso, el número de núcleos de la CPU era 4.
Ahora procederemos a verificar el uso de la CPU sin cpulimit en los 4 núcleos de la aplicación de la siguiente manera:

for j in `seq 1 4`; do dd if=/dev/zero of=/dev/null & done

Ejecutará el comando utilizando todos los núcleos y producirá la salida como:

[email protected]:~# for j in `seq 1 4`; hacer dd if=/dev/cero of=/dev/null &done
[1] 1263
[2] 1264
[3] 1265
[4] 1266
[correo electrónico protegido]:~#


Ahora verifique el uso de la CPU con el comando superior:

top
superior - 11:47:45 activo 4 min, 1 usuario, promedio de carga:3,63, 1,53, 0,57
Tareas:290 en total, 5 en ejecución, 285 en reposo, 0 detenido, 0 zombi
%Cpu0 :48,3 us, 51,3 sy,  0,0 ni,  0,0 id,  0,0 wa,  0,3 hola,  0,0 si,  0,0 st
%Cpu1  :47,8 us, 52,2 sy,  0,0 ni,  0,0 id,  0,0 wa,  0,0 hi,  0,0 si, 0.0 st
%Cpu2 :53.3 us, 46.4 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.3 hi, 0.0 si, 0.0 st
%Cpu3 :52.0 us, 48.0 sy, 0.0 ni, 0.0 id ,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   1010540 total,   209712 usado,   800828 gratis,    20276 buffers
KiB Swap:  1048572 total,        0 usado,  1048572 gratis 93632 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                          
 1263 root      20   0    7224     612 ; <0" strong> /fuerte> 0.1   2:21.40 dd                        
 1264 root      20   0    7224    616    520 R 100.0  0.1   2:21.41 dd                        
 1265 root      20   0    7224    612    520 R  99.0 0.1   2:21.03 dd                        
 1266 raíz      20   0    7224    616    520 R  98.0  0.1 2:20.82 dd
1281 raíz 20 0 104416 3992 2920 s 1.0 0.4 0:00.03 sshd
1283 raíz 20 0 104416 3988 2920 S 1.0 0.4 0:00.03 SSHD
1279 Raíz 20 0 104556 4008   2924 S   0.7  0.4   0:00.08 sshd


El comando dd consume casi el 100 % de la CPU de todos los núcleos. A continuación, comprobaremos el comando con la utilidad cpulimit. Para esto, elimine los rastros anteriores del comando dd de la siguiente manera:

killall dd
[email protected]:~# killall dd
[1]   Terminado              dd if=/dev/zero of=/dev/null
[3]-  Terminado              dd if=/dev/zero of=/dev /null
[2]-  Terminado              dd if=/dev/zero of=/dev/null
[4]+  Terminado              dd if=/dev/zero of=/dev/null
[correo electrónico protegido]:~#


Ahora use cpulimit con el mismo comando de la siguiente manera:

for j in `seq 1 4`; do cpulimit -l 20 dd if=/dev/zero of=/dev/null & done
[email protected]:~# for j in `seq 1 4`; do cpulimit -l 20 dd if=/dev/zero of=/dev/null &done
[1] 1429
[2] 1430
[3] 1431
[4 ] 1432
[email protected]:~# Proceso 1434 detectado
Proceso 1433 detectado
Proceso 1437 detectado
Proceso 1439 detectado

[1]   Listo                    cpulimit -l 20 dd if=/dev/zero of=/dev/null
[2]   Listo                    cpulimit -l 20 dd if=/dev/zero of=/dev/null
[3]-  Listo cpulimit -l 20 dd if=/dev/zero of=/dev/null
[4]+  Listo                    cpulimit -l 20 dd if=/dev/zero of=/dev/null
[email protected ]:~#


Ahora verifique el uso de la CPU con la utilidad cpulimit.

top
top - 11:59:10 up 16 min, 2 usuarios, promedio de carga:0.47, 0.71, 0.81
Tareas:256 en total, 2 en ejecución, 251 en reposo, 3 detenidos, 0 zombi
%Cpu0  :  2.0 us,  2,0 sy,  0,0 ni,  96,0 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
%Cpu1  :26,2 us, 22,8 sy,  0,0 ni, 50,7 id,  0,0 wa,  0,3 hola,  0,0 si, 0.0 st
%Cpu2 :14.0 us, 12.3 sy, 0.0 ni, 73.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3  :13.3 us, 11.6 sy, 0.0 ni, 75.1 id ,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   1010540 total,   204064 usado,   806476 gratis,    20408 buffers
KiB Swap:  1048572 total,        0 usado,  1048572 gratis 98340 caché Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                          
 1433 raíz      20   0    7224    612      0.1   0:12.00 dd                        
 1439 root      20   0    7224    616    520 R  26.6  0.1   0:12.13 dd                        
 1434 raíz      20   0    7224    612    520 T  25.3  0.1   0:11.97 dd                        
 1437 raíz      20   0    7224    612    516 T  22.9 0.1 0:11.93 dd
7 raíz 20 0 0 0 0 S 0.3 0.0 0:00.22 rcu_sched
8 raíz 20 0 0 0 0 s 0.3 0.0 0:00.21 rcuos /0


Como puede ver arriba, el uso de la CPU está limitado del 100 % al 20 % casi para varias CPU de núcleo.

¡Felicitaciones! Hemos probado con éxito cpulimit para limitar el uso de la CPU en Ubuntu 18.04 :)

4 Enlaces

  •     Ubuntu:http://www.ubuntu.com/
  •     cpulimit:https://github.com/opsengine/cpulimit

Ubuntu
  1. Cómo verificar la utilización de la CPU en Linux con la línea de comandos

  2. Cómo instalar PostgreSQL 9.1.3 con pgAdmin3 en Ubuntu 11.10 / Linux Mint 12

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

  4. Cómo instalar Suphp con Apache en Ubuntu/Linux

  5. Cómo proteger su sistema Ubuntu Linux con SurfShark VPN

Cómo cifrar particiones de Linux con VeraCrypt en Ubuntu

Cómo crear plantillas de sistema operativo Linux con KVM en Ubuntu 20.04

Cómo instalar y comenzar con Itch en Ubuntu Linux

Cómo instalar Laravel PHP Framework con Nginx en Ubuntu Linux

Cómo configurar el cortafuegos con UFW en Ubuntu Linux

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