Utilisation CPU · 7 min read · Sep 19, 2025

Comment limiter l'utilisation du CPU avec CPULimit sur Ubuntu Linux

La commande cpulimit est conçue pour restreindre l’utilisation du CPU d’un processus spécifique sur Linux, garantissant qu’il ne dépasse pas un seuil défini. Cela peut être particulièrement utile pour gérer les ressources système et empêcher un seul processus de monopoliser le temps CPU, ce qui pourrait dégrader les performances globales du système. En spécifiant la limite d’utilisation du CPU souhaitée en pourcentage, les utilisateurs peuvent appliquer des contraintes aux processus en cours d’exécution ou en initier de nouveaux sous une consommation CPU contrôlée. L’outil envoie des signaux SIGSTOP et SIGCONT au processus cible, les mettant en pause et les reprenant pour maintenir la limite d’utilisation définie.

1 Remarque préliminaire

Ce tutoriel a été testé sur Ubuntu 24.04, mais il fonctionne également sur les anciennes versions d’Ubuntu.

2 Installation de CPULimit

Tout d’abord, nous devons installer cpulimit comme suit :

sudo apt update  
sudo apt install cpulimit

3 Limitation de l’utilisation du CPU

Maintenant, nous allons vérifier l’utilitaire pour limiter l’utilisation du CPU. Pour cela, nous allons d’abord vérifier l’utilisation du CPU sans CPULimit, puis mettre en œuvre CPULimit pour l’évaluer. Clarifions cela avec un exemple.

  1. Voici un exemple de la façon d’utiliser votre CPU avec une application sur un CPU monocœur :
dd if=/dev/zero of=/dev/null &

Ensuite, nous allons vérifier l’utilisation du CPU avec la commande :

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        

Comme nous pouvons le voir, l’utilisation du CPU a atteint 100%. Maintenant, nous allons utiliser cpulimit pour limiter l’utilisation du CPU. Nous pouvons ramener ce processus au premier plan en utilisant la commande fg et l’annuler avec CTRL+C.

fg

Ramener le processus au premier plan en utilisant la commande fg

Maintenant, nous pouvons tester cpulimit pour voir s’il fait ce qu’il doit. Testons-le comme suit :

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:~# Process 1853 detected

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

root@server1:~#

Maintenant, nous allons vérifier l’utilisation du CPU avec la commande 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 Maintenant, vous pouvez voir que l’utilisation du CPU a diminué de 100% à 33.8%, presque 30%. Nous avons donc vérifié avec succès l’utilitaire cpulimit, qui peut limiter l’utilisation de la consommation CPU dans une distribution Ubuntu monocœur.

  1. Voici un exemple de la façon d’utiliser votre CPU avec une application sur un CPU multicœur :

Pour vérifier votre cœur de CPU, utilisez la commande :

nproc    

Dans mon cas, le nombre de cœurs de CPU était de 4.
Maintenant, nous allons procéder à vérifier l’utilisation du CPU sans cpulimit sur les 4 cœurs pour l’application comme suit :

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

Cela exécutera la commande en utilisant tous les cœurs et produira la sortie suivante :

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:~#

Maintenant, vérifiez l’utilisation du CPU avec la commande 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

La commande dd consomme presque 100% du CPU de tous les cœurs.  Ensuite, nous allons vérifier la commande avec l’utilitaire cpulimit. Pour cela, tuez les traces précédentes de la commande dd comme suit :

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:~#

Maintenant, utilisez cpulimit avec la même commande comme suit :

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:~# Process 1434 detected

Process 1433 detected

Process 1437 detected

Process 1439 detected

[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:~#

Maintenant, vérifiez l’utilisation du CPU avec l’utilitaire 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

Comme vous pouvez le voir ci-dessus, l’utilisation du CPU est limitée de 100% à 20% presque pour les CPU multicœurs.

Félicitations ! Nous avons testé avec succès le cpulimit pour limiter l’utilisation du CPU sur Ubuntu.

4 Liens

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.