GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come limitare l'utilizzo della CPU con CPULimit su Ubuntu Linux

Questo tutorial descrive come limitare l'utilizzo della CPU in Ubuntu 18.04. Userò l'utilità cpulimit per questo scopo. Cpulimit è uno strumento che limita l'utilizzo della CPU di un processo (espresso in percentuale, non in tempo di CPU). È utile controllare i lavori batch quando non si desidera che consumino troppi cicli della CPU. L'obiettivo di cpulimit è impedire l'esecuzione di un processo per più di un rapporto di tempo specificato. Non cambia il bel valore o altre impostazioni di priorità di pianificazione, ma l'utilizzo reale della CPU. Inoltre, è in grado di adattarsi al carico complessivo del sistema, in modo dinamico e veloce.

Il controllo della quantità di CPU utilizzata viene eseguito inviando segnali SIGSTOP e SIGCONT POSIX ai processi. Tutti i processi figli e i thread del processo specificato condivideranno la stessa percentuale di CPU.

1 Nota preliminare

Questo tutorial è basato sul server Ubuntu 18.04 LTS (Bionic Beaver), quindi dovresti configurare un'installazione del server Ubuntu 18.04 di base prima di continuare con questo tutorial. Il sistema dovrebbe avere un indirizzo IP statico. Uso 192.168.1.100 come indirizzo IP in questo tutorial e server1.example.com come nome host.

2 Installazione CPULimit

Per prima cosa dobbiamo installare cpulimit come segue:

apt-get update
apt-get install cpulimit

3 Limitazione dell'utilizzo della CPU 

Ora verificheremo l'utilità per limitare l'utilizzo della CPU. Per questo, verificheremo prima l'utilizzo della CPU senza cpulimit e poi implementeremo cpulimit per valutare lo stesso. Mettiamolo in chiaro con l'esempio.

  1. Ecco un esempio di come utilizzare la CPU con un'applicazione in CPU single core:
dd if=/dev/zero of=/dev/null &

Quindi verificheremo l'utilizzo della CPU con il 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        

Come possiamo vedere che l'utilizzo della CPU è andato al 100%, ora utilizzeremo cpulimit per limitare l'utilizzo della CPU. Possiamo portare questo processo in primo piano usando fg comando e cancellalo con CTRL+C

fg

Ora possiamo testare cpulimit per vedere se fa effettivamente quello che dovrebbe. Testiamolo come segue:

cpulimit -l 30 dd if=/dev/zero of=/dev/null &
[email protetta]:~# cpulimit -l 30 dd if=/dev/zero of=/dev/null &
[1] 1852
[email protetta]:~# Processo 1853 rilevato

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

Ora verificheremo l'utilizzo della CPU con il comando in alto:

top
top - 11:30:54 su 55 min,  1 utente,  media di caricamento:0,20, 0,58, 1,34
Attività:250 in totale,   2 in esecuzione, 247 inattiva,   1 fermo,   0 zombie
%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 total,   271944 used,   738596 free,    21816 buffers
KiB Swap:1048572 totale,        0 usato,  1048572 gratuito. 158212 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                  
 1853 root      20   0    724">=" stile:<5; /forte> 0.1 0:35.53 dd
1 root 20 0 33480 2776 1456 S 0.0 0.3 0:05.37 INIT
2 radice 20 0 0 0 0 s 0.0 0.0 0:00.01 KThreadd
3 Root 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0ndo la radice 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0ndo 0      0 S   0.0  0.0   0:00.02 ksoftirqd/0              
    4 radice      20   0       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0

Ora puoi vedere che l'utilizzo della CPU è diminuito dal 100% al 33,8% di quasi il 30%. Quindi abbiamo verificato con successo l'utilità cpulimit che è in grado di limitare l'utilizzo del consumo di CPU in una distribuzione Ubuntu single core.

  1. Ecco un esempio di come utilizzare la CPU con un'applicazione in CPU multicore:

Per controllare il core della tua CPU usa il comando:

nproc   

Nel mio caso, il numero di core della CPU era 4.
Ora procederemo a controllare l'utilizzo della CPU senza cpulimit in tutti e 4 i core per l'applicazione come segue:

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

Eseguirà il comando utilizzando tutti i core e produrrà l'output come:

[email protetta]:~# per j in `seq 1 4`; do dd if=/dev/zero of=/dev/null &done
[1] 1263
[2] 1264
[3] 1265
[4] 1266
[email protetta]:~#


Ora controlla l'utilizzo della CPU con il comando in alto:

top
top - 11:47:45 su 4 min,  1 utente,  media di caricamento:3,63, 1,53, 0,57
Attività:290 in totale,   5 in esecuzione, 285 inattiva,   0 fermo,   0 zombie
%Cpu0  :48,3 us, 51,3 sy,  0,0 ni,  0,0 id,  0,0 wa,  0,3 hi,  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 used,   800828 free,    20276 buffers
KiB Swap:  1048572 total,        0 used,  2 free. 93632 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                  
 1263 root      20   0    724     610    ; /forte> 0.1   2:21.40 gg                       
 1264 radice      20   0    7224    616    520 R 100.0  0.1   2:21.41 gg                       
 1265 radice      20   0    7224    612    520 R  99.0 0.1   2:21.03 gg                       
 1266 radice      20   0    7224    616    520 R  98.0  0.1 2:20,82 dd
1281 Root 20 0 104416 3992 2920 S 1.0 0.4 0:00.03 SSHD
1283 Root 20 0 104416 3988 2920 S 1.0 0.4 0:00.03 SSHD
1279 Root 20 0 104556 4008   2924 S   0,7  0,4   0:00,08 sshd


Il comando dd consuma quasi il 100% della CPU di tutti i core. Successivamente, verificheremo il comando con l'utilità cpulimit. Per questo uccidere le tracce precedenti per il comando dd come segue:

killall dd
[email protected]:~# killall dd
[1]   Terminato              dd if=/dev/zero of=/dev/null
[3]-  Terminato             dd if=/dev/zero of=/dev /null
[2]-  Terminato             dd if=/dev/zero of=/dev/null
[4]+  Terminato              dd if=/dev/zero of=/dev/null
[email protetta]:~#


Ora usa cpulimit con lo stesso comando come segue:

for j in `seq 1 4`; do cpulimit -l 20 dd if=/dev/zero of=/dev/null & done
[email protetta]:~# per 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 protetta]:~# Processo 1434 rilevato
Processo 1433 rilevato
Processo 1437 rilevato
Processo 1439 rilevato

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


Ora controlla l'utilizzo della CPU con l'utility cpulimit.

top
top - 11:59:10 su 16 min, 2 utenti, media di caricamento:0,47, 0,71, 0,81
Attività:256 in totale,   2 in esecuzione, 251 inattiva,   3 fermati,   0 zombie
%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 hi,  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 used,   806476 free,    20408 buffers
KiB Swap:  1048572 total,        0 used,  2 free. 98340 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                  
 1433 root      20   0    7224    610     52 strong> . 0.1   0:12.00 gg                       
 1439 radice      20   0    7224    616    520 R  26.6  0.1   0:12.13 gg                       
 1434 radice      20   0    7224    612    520 T  25.3  0.1   0:11.97 dd                       
 1437 radice      20   0    7224    612    516 T  22.9 0.1 0:11,93 dd
root 20 0 0 0 0 s 0.3 0.0 0:00.22 RCU_Sched
8 root 20 0 0 0 0 S 0.3 0.0 0:00.21 RCUOS /0


Come puoi vedere sopra, l'utilizzo della CPU è limitato dal 100% al 20% quasi per le CPU multiple.

Congratulazioni! Abbiamo testato con successo cpulimit per limitare l'utilizzo della CPU in Ubuntu 18.04 :)

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

Ubuntu
  1. Come controllare l'utilizzo della CPU in Linux con la riga di comando

  2. Come installare PostgreSQL 9.1.3 con pgAdmin3 su Ubuntu 11.10 / Linux Mint 12

  3. Come limitare l'utilizzo della CPU di un processo in Linux

  4. Come installare Suphp con Apache su Ubuntu/Linux

  5. Come proteggere il tuo sistema Ubuntu Linux con SurfShark VPN

Come crittografare le partizioni Linux con VeraCrypt su Ubuntu

Come creare modelli di sistema operativo Linux con KVM su Ubuntu 20.04

Come installare e iniziare con Itch su Ubuntu Linux

Come installare Laravel PHP Framework con Nginx su Ubuntu Linux

Come configurare il firewall con UFW su Ubuntu Linux

Come controllare l'utilizzo o l'utilizzo della CPU di Linux