GNU/Linux >> Tutoriels Linux >  >> Ubuntu

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

Ce tutoriel décrit comment limiter l'utilisation du processeur dans Ubuntu 18.04. J'utiliserai l'utilitaire cpulimit à cette fin. Cpulimit est un outil qui limite l'utilisation CPU d'un processus (exprimée en pourcentage, pas en temps CPU). Il est utile de contrôler les travaux par lots lorsque vous ne voulez pas qu'ils consomment trop de cycles CPU. L'objectif de cpulimit est d'empêcher un processus de s'exécuter pendant plus d'un rapport de temps spécifié. Cela ne change pas la valeur nice ou d'autres paramètres de priorité de planification, mais l'utilisation réelle du processeur. De plus, il est capable de s'adapter à la charge globale du système, de manière dynamique et rapide.

Le contrôle de la quantité de CPU utilisée se fait en envoyant des signaux SIGSTOP et SIGCONT POSIX aux processus. Tous les processus et threads enfants du processus spécifié partageront le même pourcentage de CPU.

1 Remarque préliminaire

Ce didacticiel est basé sur le serveur Ubuntu 18.04 LTS (Bionic Beaver). Vous devez donc configurer une installation de base du serveur Ubuntu 18.04 avant de poursuivre ce didacticiel. Le système doit avoir une adresse IP statique. J'utilise 192.168.1.100 comme adresse IP dans ce tutoriel et server1.example.com comme nom d'hôte.

2 Installation de CPULimit

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

apt-get update
apt-get install cpulimit

3 Limiter l'utilisation du processeur 

Nous allons maintenant vérifier l'utilitaire pour limiter l'utilisation du processeur. Pour cela, nous allons d'abord vérifier l'utilisation du processeur sans cpulimit, puis implémenter le cpulimit pour l'évaluer. Soyons clairs avec l'exemple.

  1. Voici un exemple d'utilisation de votre CPU avec une application en CPU monocœur :
dd if=/dev/zero of=/dev/null &

Ensuite, nous vérifierons l'utilisation du processeur 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 voir que l'utilisation du processeur est passée à 100 %, nous allons maintenant utiliser cpulimit pour limiter l'utilisation du processeur. Nous pouvons mettre ce processus au premier plan en utilisant fg commande et annulez-la avec CTRL+C

fg

Nous pouvons maintenant tester cpulimit pour voir s'il fait réellement ce qu'il est censé faire. Laissez-le tester comme suit :

cpulimit -l 30 dd if=/dev/zero of=/dev/null &
[email protected] :~# cpulimit -l 30 dd if=/dev/zero of=/dev/null &
[1] 1852
[email protected] :~# processus 1853 détecté

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

Nous allons maintenant vérifier l'utilisation du processeur avec la commande top :

top
top - 11:30:54 jusqu'à 55 min,  1 utilisateur,  charge moyenne :0,20, 0,58, 1,34
Tâches :250 au total,   2 en cours d'exécution, 247 en veille,   1 arrêtée,   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 au total,   271944 utilisés,   738596 libres,    21816 tampons
Kio Swap :1048572 au total,        0 utilisé,  1048572 libre. 158212 Mem en cache

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                   
 1853 root      20   0    7224    red style:  3     520 /fort> 0,1 0:35,53 dd
1 racine 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      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

Vous pouvez maintenant constater que l'utilisation du processeur est passée de 100 % à 33,8 %, soit près de 30 %. Nous avons donc vérifié avec succès l'utilitaire cpulimit qui est capable de limiter l'utilisation de la consommation du processeur dans une distribution Ubuntu à un seul cœur.

  1. Voici un exemple d'utilisation de votre processeur avec une application dans un processeur multicœur :

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

nproc   

Dans mon cas, le nombre de cœurs du processeur était de 4.
Nous allons maintenant vérifier l'utilisation du processeur sans cpulimit dans les 4 cœurs de l'application comme suit :

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

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

[email protected] :~# pour j dans `seq 1 4` ; faire dd if=/dev/zero of=/dev/null &done
[1] 1263
[2] 1264
[3] 1265
[4] 1266
[e-mail protégé] :~#


Vérifiez maintenant l'utilisation du processeur avec la commande top :

top
top - 11:47:45 jusqu'à 4 min,  1 utilisateur,  charge moyenne :3,63, 1,53, 0,57
Tâches :290 au total,   5 en cours d'exécution, 285 en veille,   0 arrêté,   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 au total,   209712 utilisés,   800828 libres,    20276 tampons
KiB Swap :  1048572 au total,        0 utilisé,  1048572 libres 93632 Mem en cache

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                   
 1263 racine      20   0    7224    612              520. /fort> 0.1   2:21.40 jj                       
 1264 racine      20   0    7224    616    520 L 100.0  0.1   2:21.41 dd                       
 1265 racine      20   0    7224    612    520 R  99.0 0.1   2:21.03 dd                       
 1266 racine      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 Racine 20 0 104556 4008   2924 S   0,7  0,4   0:00.08 sshd


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

killall dd
[email protected] :~# killall dd
[1]   Terminé              dd if=/dev/zero of=/dev/null
[3]-  Terminé              dd if=/dev/zero of=/dev /null
[2]-  Terminé              dd if=/dev/zero of=/dev/null
[4]+  Terminé              dd if=/dev/zero of=/dev/null
[e-mail protégé] :~#


Utilisez maintenant 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
[email protected] :~# pour j dans `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] :~# Processus 1434 détecté
Processus 1433 détecté
Processus 1437 détecté
Processus 1439 détecté

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


Vérifiez maintenant l'utilisation du processeur avec l'utilitaire cpulimit.

top
top - 11:59:10 up 16 min,  2 utilisateurs,  moyenne de charge :0,47, 0,71, 0,81
Tâches : 256 au total,   2 en cours d'exécution, 251 en veille,   3 arrêtées,   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 au total,   204064 utilisés,   806476 libres,    20408 tampons
KiB Swap :  1048572 au total,        0 utilisé,  1048572 libres 98340 Mem en cache

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                   
 1433 root      20   0    7224    612      520. 0.1   0:12.00 jj                       
 1439 racine      20   0    7224    616    520 R  26.6  0.1   0:12.13 dd                       
 1434 racine      20   0    7224    612    520 T  25.3  0.1   0:11.97 dd                       
 1437 racine      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 processeur est limitée de 100 % à 20 % presque pour les processeurs à plusieurs cœurs.

Félicitations ! Nous avons testé avec succès le cpulimit pour limiter l'utilisation du processeur dans Ubuntu 18.04 :)

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

Ubuntu
  1. Comment vérifier l'utilisation du processeur sous Linux avec la ligne de commande

  2. Comment installer PostgreSQL 9.1.3 avec pgAdmin3 sur Ubuntu 11.10 / Linux Mint 12

  3. Comment limiter l'utilisation du processeur d'un processus sous Linux

  4. Comment installer Suphp avec Apache sur Ubuntu / Linux

  5. Comment protéger votre système Ubuntu Linux avec SurfShark VPN

Comment chiffrer des partitions Linux avec VeraCrypt sur Ubuntu

Comment créer des modèles de système d'exploitation Linux avec KVM sur Ubuntu 20.04

Comment installer et démarrer avec Itch sur Ubuntu Linux

Comment installer le framework PHP Laravel avec Nginx sur Ubuntu Linux

Comment configurer le pare-feu avec UFW sur Ubuntu Linux

Comment vérifier l'utilisation ou l'utilisation du processeur Linux