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.