GNU/Linux >> Tutoriels Linux >  >> Linux

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

Parfois, un processus particulier peut consommer plus d'utilisation du processeur et affecter les performances de l'ensemble du système. Étant donné que ce processus particulier consomme plus de CPU, vous ne pouvez pas effectuer d'autres tâches. Vous devez attendre la fin de ce processus avant de commencer une nouvelle tâche. Heureusement, cela peut maintenant être résolu par un utilitaire utile appelé CPULimit . Comme son nom l'indique, CPULimit limite l'utilisation du processeur d'un processus. Ceci est très utile pour contrôler les travaux par lots, lorsque vous ne voulez pas qu'ils consomment plus d'utilisation du processeur. L'objectif principal 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 le gentil valeur 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. Il fonctionnera sur la plupart des distributions de type Unix. Dans ce petit guide, nous verrons comment limiter l'utilisation du processeur d'un processus sous Linux.

Installer CPULimit

CPULimit est disponible sur la plupart des référentiels par défaut des distributions de type Unix. Vous pouvez l'installer à l'aide des gestionnaires de packages par défaut dans la distribution Linux respective, comme indiqué ci-dessous.

Sur Arch Linux et ses dérivés :

$ sudo pacman -S cpulimit

Sur Debian, Ubuntu, Linux Mint :

$ sudo apt-get install cpulimit

Sur RHEL, CentOS, Fedora :

Activez d'abord le référentiel EPEL.

$ sudo yum install epel-release

Et ensuite, installez cpuclimit en utilisant la commande :

$ sudo yum install cpulimit

Ou,

$ sudo dnf install cpulimit

Sur SUSE/openSUSE :

$ sudo zypper install cpulimit

Limiter l'utilisation du processeur d'un processus sous Linux à l'aide de CPULimit

Exécutons un programme qui consomme plus d'utilisation du processeur. Les commandes suivantes doivent être exécutées en tant qu'utilisateur root.

Créez un fichier appelé highcpu.sh .

$ vi highcpu.sh

Ajoutez le contenu suivant.

#!/bin/bash
while :; do :; done;

Appuyez sur la touche ESC et tapez :wq pour enregistrer et fermer le fichier. Ce programme court bouclera sans fin et consommera une utilisation maximale du processeur. Je vous recommande donc de le tester dans une machine virtuelle.

Rendre ce fichier exécutable :

$ chmod +x highcpu.sh

Ensuite, exécutez le processus en arrière-plan à l'aide de la commande :

$ ./highcpu.sh &

Exemple de résultat :

[1] 2331

Ici 2331 est le PID du processus ci-dessus.

Pour voir combien de CPU il consomme, utilisez la commande "top".

$ top

Exemple de résultat :

top - 17:16:34 up 10 min, 2 users, load average: 1.12, 0.53, 0.26
Tasks: 87 total, 4 running, 83 sleeping, 0 stopped, 0 zombie
%Cpu(s): 91.9 us, 2.7 sy, 5.4 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 630108 total, 274868 free, 85904 used, 269336 buff/cache
KiB Swap: 1343484 total, 1343484 free, 0 used. 428172 avail Mem

 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
 2331 root 20 0 113120 1184 1004 R 97.7 0.2 2:40.91 highcpu.sh 
 2412 root 39 19 244516 11020 4496 R 1.3 1.7 0:00.11 dnf 
 10 root 20 0 0 0 0 S 0.3 0.0 0:00.68 rcu_sched 
 1 root 20 0 43900 6480 3900 S 0.0 1.0 0:01.61 systemd 
 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 
 3 root 20 0 0 0 0 S 0.0 0.0 0:00.06 ksoftirqd/0 
 6 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/u2:0 
 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 
 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 
 9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0 
 11 root 20 0 0 0 0 R 0.0 0.0 0:00.38 rcuos/0 
 12 root rt 0 0 0 0 S 0.0 0.0 0:00.02 watchdog/0 
 13 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper 
 14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 
 15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns 
 16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 perf 
 17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeb

Comme vous le voyez dans la sortie ci-dessus, le processus highcpu.sh consomme plus de 97 % de l'utilisation du processeur. Comme il consommait plus d'utilisation du processeur, il est assez difficile d'exécuter d'autres tâches. Après quelques minutes, votre système peut se bloquer ou se bloquer. C'est là que CPULimt vient en aide.

Maintenant, limitons l'utilisation du processeur de ce processus à l'aide de l'outil CPULimit. Supposons, par exemple, que nous limiterons ce processus par PID à 30 % de CPU.

Pour ce faire, exécutez :

$ cpulimit -l 30 -p 2331 &

Ici,

  • "-l 30" flag limite le processus à 30 %.
  • "-p 2331" est le PID de highcpu.sh

Maintenant, vérifions à nouveau l'utilisation du processeur du processus ci-dessus à l'aide de la commande :

$ top

Exemple de résultat :

top - 17:29:16 up 5 min, 1 user, load average: 0.61, 0.57, 0.27
Tasks: 86 total, 2 running, 83 sleeping, 1 stopped, 0 zombie
%Cpu(s): 7.2 us, 0.0 sy, 0.0 ni, 92.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 630108 total, 435348 free, 78052 used, 116708 buff/cache
KiB Swap: 1343484 total, 1343484 free, 0 used. 442040 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
 2331 root 20 0 113120 1180 1004 T 29.7 0.2 3:36.97 highcpu.sh 
 2334 root 9 -11 4324 692 572 S 1.7 0.1 0:00.47 cpulimit 
 1 root 20 0 43900 6480 3900 S 0.3 1.0 0:01.65 systemd 
 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 
 3 root 20 0 0 0 0 S 0.0 0.0 0:00.02 ksoftirqd/0 
 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 
 6 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kworker/u2:0 
 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 
 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 
 9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0 
 10 root 20 0 0 0 0 S 0.0 0.0 0:00.44 rcu_sched 
 11 root 20 0 0 0 0 R 0.0 0.0 0:00.37 rcuos/0 
 12 root rt 0 0 0 0 S 0.0 0.0 0:00.05 watchdog/0 
 13 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper 
 14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 
 15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns 
 16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 perf

Comme vous le voyez dans la sortie ci-dessus, l'utilisation du processeur de highcpu.sh a été réduite à 29,7 % , ce qui est très proche de 30 %. Désormais, vous pouvez disposer de plus de ressources CPU pour exécuter librement d'autres processus.

Nous avons vu comment limiter un processus par PID. Vous pouvez également exécuter la commande ci-dessus en spécifiant le nom du fichier du programme exécutable.

Par exemple, la commande ci-dessus serait :

$ cpulimit -l 30 ./highcpu.sh &

De même, vous pouvez démarrer n'importe quel nombre de processus en arrière-plan et limiter leur utilisation du processeur comme vous le souhaitez.

Vous pouvez mettre les processus qui s'exécutent en arrière-plan au premier plan à tout moment en utilisant "fg" commande :

$ fg

Exemple de résultat :

cpulimit -l 30 -p 2331

Conclusion

CPULimit peut être utile lorsque vous exécutez un processus qui consomme plus d'utilisation du processeur. La prochaine fois Si vous remarquez qu'un programme consomme plus d'utilisation du processeur, recherchez simplement le PID du processus à l'aide de la commande "top" et limitez son utilisation du processeur à une valeur minimale à l'aide de la commande CPULimit comme décrit ci-dessus. Vous pouvez également utiliser cette application pour tester les performances d'une application avec une faible utilisation du processeur.


Linux
  1. Linux - Limiter l'utilisation de la mémoire pour un seul processus Linux ?

  2. Linux - Comment limiter un processus à un seul cœur de processeur sous Linux ??

  3. Récupérer l'utilisation du processeur et l'utilisation de la mémoire d'un seul processus sous Linux ?

  4. Comment calculer l'utilisation CPU d'un processus par PID sous Linux à partir de C ?

  5. Comment obtenir l'utilisation totale du processeur sous Linux en utilisant C++

Comment tuer un processus zombie sous Linux

Comment tuer un processus sous Linux

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

Comment obtenir l'utilisation du processeur d'un seul processus sous Linux

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

Utilisation du processeur Linux et historique d'exécution des processus