CPU Limit · 6 min read · Sep 19, 2025

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

Il comando cpulimit è progettato per limitare l’uso della CPU di un processo specifico su Linux, garantendo che non superi una soglia definita. Questo può essere particolarmente utile per gestire le risorse di sistema e prevenire che un singolo processo monopolizzi il tempo della CPU, il che potrebbe degradare le prestazioni complessive del sistema. Specificando il limite di utilizzo della CPU desiderato come percentuale, gli utenti possono applicare vincoli ai processi in esecuzione o avviarne di nuovi sotto un consumo controllato della CPU. Lo strumento invia segnali SIGSTOP e SIGCONT al processo target, mettendolo in pausa e riprendendolo per mantenere il limite di utilizzo impostato.

1 Nota preliminare

Questo tutorial è stato testato su Ubuntu 24.04, ma funziona anche sulle versioni precedenti di Ubuntu.

2 Installazione di CPULimit

Per prima cosa, dobbiamo installare cpulimit come segue:

sudo apt update  
sudo apt install cpulimit

3 Limitare l’uso della CPU

Ora, controlleremo l’utilità per limitare l’uso della CPU. Per questo, verificheremo prima l’uso della CPU senza CPUlimit e poi implementeremo CPUlimit per valutarlo. Facciamo chiarezza con un esempio.

  1. Ecco un esempio di come utilizzare la tua CPU con un’applicazione su CPU a singolo core:
dd if=/dev/zero of=/dev/null &

Poi, controlleremo l’uso 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, l’uso della CPU è salito al 100%. Ora, utilizzeremo cpulimit per limitare l’uso della CPU. Possiamo portare questo processo in primo piano usando il comando fg e annullarlo con CTRL+C

fg

Riporta il processo in primo piano utilizzando il comando fg

Ora possiamo testare cpulimit per vedere se fa ciò che dovrebbe. Testiamolo come segue:

cpulimit -l 30 dd if=/dev/zero of=/dev/null &

root@server1:~# cpulimit -l 30 dd if=/dev/zero of=/dev/null &

[1] 1852

root@server1:~# Processo 1853 rilevato

[1]+  Done                    cpulimit -l 30 dd if=/dev/zero of=/dev/null

root@server1:~#

Ora controlleremo l’uso della CPU con il comando top:

top

top - 11:30:54 up 55 min,  1 user,  load average: 0.20, 0.58, 1.34

Tasks: 250 total,   2 running, 247 sleeping,   1 stopped,   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 total,        0 used,  1048572 free.   158212 cached Mem

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND

1853 root      20   0    7224    612    520 T 33.8 0.1   0:35.53 dd

1 root      20   0   33480   2776   1456 S   0.0  0.3   0:05.37 init

2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd

3 root      20   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 Ora puoi vedere che l’uso della CPU è diminuito dal 100% al 33.8%, quasi il 30%. Quindi abbiamo controllato con successo l’utilità cpulimit, che può limitare l’uso della CPU in una distribuzione Ubuntu a singolo core.

  1. Ecco un esempio di come utilizzare la tua CPU con un’applicazione su CPU multi-core:

Per controllare il tuo core della CPU, usa il comando:

nproc    

Nel mio caso, il conteggio dei core della CPU era 4.
Ora procederemo a controllare l’uso 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:

root@server1:~# for j in seq 1 4; do dd if=/dev/zero of=/dev/null & done

[1] 1263

[2] 1264

[3] 1265

[4] 1266

root@server1:~#

Ora controlla l’uso della CPU con il comando top:

top

top - 11:47:45 up 4 min,  1 user,  load average: 3.63, 1.53, 0.57

Tasks: 290 total,   5 running, 285 sleeping,   0 stopped,   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,  1048572 free.    93632 cached Mem

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND

1263 root      20   0    7224    612    520 R 100.0 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 root      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, controlleremo il comando con l’utilità cpulimit. Per questo, uccidi le tracce precedenti per il comando dd come segue:

killall dd

root@server1:~# killall dd

[1]   Terminated              dd if=/dev/zero of=/dev/null

[3]-  Terminated              dd if=/dev/zero of=/dev/null

[2]-  Terminated              dd if=/dev/zero of=/dev/null

[4]+  Terminated              dd if=/dev/zero of=/dev/null

root@server1:~#

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

root@server1:~# 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

root@server1:~# Processo 1434 rilevato

Processo 1433 rilevato

Processo 1437 rilevato

Processo 1439 rilevato

[1]   Done                    cpulimit -l 20 dd if=/dev/zero of=/dev/null

[2]   Done                    cpulimit -l 20 dd if=/dev/zero of=/dev/null

[3]-  Done                    cpulimit -l 20 dd if=/dev/zero of=/dev/null

[4]+  Done                    cpulimit -l 20 dd if=/dev/zero of=/dev/null

root@server1:~#

Ora controlla l’uso della CPU con l’utilità cpulimit.

top

top - 11:59:10 up 16 min,  2 users,  load average: 0.47, 0.71, 0.81

Tasks: 256 total,   2 running, 251 sleeping,   3 stopped,   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,  1048572 free.    98340 cached Mem

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND

1433 root      20   0    7224    612    520 T 28.2 0.1   0:12.00 dd

1439 root      20   0    7224    616    520 R 26.6 0.1   0:12.13 dd

1434 root      20   0    7224    612    520 T 25.3 0.1   0:11.97 dd

1437 root      20   0    7224    612    516 T 22.9 0.1   0:11.93 dd

7 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’uso della CPU è limitato dal 100% al 20% quasi per le CPU multi-core.

Congratulazioni! Abbiamo testato con successo cpulimit per limitare l’uso della CPU in Ubuntu.

4 Link

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.