CPU

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

Comment limiter l'utilisation du processeur d'un processus sous Linux
Au cours de votre vie Linux, vous avez dû voir certains processus occuper tous les cycles du processeur (90 à 99 % d'utilisation du processeur), ce qui rend votre ordinateur presque insensible jusqu'à la fin. Cela peut être bien si le processus prend quelques secondes pour se terminer. Mais que faire si cela prend beaucoup de temps? Ce n'est pas très agréable de s'asseoir et de regarder votre ordinateur qui ne répond pas pendant des minutes et des heures, n'est-ce pas? Eh bien, Linux a de nombreux outils géniaux pour faire ces pas très gentil processus à agréable processus.

Vous pouvez définir la quantité de CPU qu'un seul processus est autorisé à avoir. Si le processus a vraiment besoin de beaucoup de puissance CPU, vous pouvez exécuter quelques commandes pour lui donner tous les cycles CPU inactifs (cycles CPU dont vous n'avez pas besoin). De cette façon, vous n'aurez jamais à vous asseoir et à regarder votre ordinateur qui ne répond pas pendant longtemps.

Dans cet article, je vais vous montrer comment limiter l'utilisation du processeur d'un processus sous Linux. Je vais utiliser CentOS 7 dans cet article. Mais toute distribution Linux moderne devrait fonctionner. Alors, commençons.

Limiter l'utilisation du processeur avec nice et renice :

Sous Linux, les priorités de chaque processus en cours d'exécution peuvent être modifiées. Vous pouvez définir des priorités plus élevées pour le processus qui est plus important pour vous qu'un processus qui monopolise votre processeur sans raison valable.

Chaque processus sur Linux a une belle valeur. La valeur de nice détermine quel processus a les priorités les plus élevées et celui qui a les plus faibles. La belle valeur peut être comprise entre -20 et 19. Un processus avec la bonne valeur de -20 aura la priorité la plus élevée et utilisera le plus de cycles CPU. Un processus avec la valeur gentille 19 aura la priorité la plus basse et utilisera le processeur lorsqu'aucun autre processus ne l'utilisera uniquement.

Il y a deux façons de définir la valeur nice d'un processus. Vous pouvez soit démarrer un processus avec le agréable commande pour définir une valeur agréable lors du démarrage du processus. Ou vous pouvez utiliser le renice commande pour définir une valeur agréable après le démarrage d'un processus.

Pour définir une valeur agréable lorsque vous démarrez un processus, exécutez le processus comme suit :

$ nice -n NICE_VALUE COMMAND_TO_RUN

REMARQUE: Ici NICE_VALUE peut être n'importe quoi de -20 à 19 et COMMAND_TO_RUN est une commande que vous souhaitez exécuter avec la belle valeur de NICE_VALUE.

Par exemple, disons que vous voulez exécuter le dormir commande avec la belle valeur de 14. Exécutez la commande comme suit :

$ nice -n 14 sommeil 40000 &

Vous pouvez maintenant vérifier si la valeur nice est définie correctement à l'aide de la commande top. Vous pouvez lister tous les processus que vous avez démarrés (en tant qu'utilisateur de connexion) avec la commande suivante :

$ ps -fl

Comme vous pouvez le voir, la belle valeur du processus est fixée à 14.

Maintenant, si vous souhaitez modifier la valeur nice de vos processus existants, vous n'avez besoin que de l'ID de processus (PID) du processus dont vous souhaitez modifier la valeur nice. Vous pouvez utiliser le ps aux commande ou le Haut commande pour trouver l'ID de processus ou le PID.

Ensuite, vous pouvez courir renice commande comme suit pour modifier la valeur nice d'un processus existant :

$ sudo renice -n NEW_NICE_VALUE -p PROCESS_PID

Comme vous pouvez le voir, la belle valeur du processus avec le PID 6422 est modifiée.

Limiter l'utilisation du processeur avec CGROUPS :

La forme complète de GROUPES est Ccontrôle ggroupes. Il s'agit d'une fonctionnalité du noyau Linux utilisée pour limiter les ressources aux groupes de traitement tels que (CPU, mémoire, autorisations et bien d'autres) sur Linux.

Tout ce que vous avez à faire est de créer un nouveau groupe de processus et d'ajouter à ce groupe les processus auxquels vous souhaitez limiter les ressources. Simple!

Les outils de gestion CGROUPS ne sont pas installés sur CentOS 7 par défaut. Mais il est disponible dans le référentiel de packages officiel de CentOS 7.

Commencez par mettre à jour le cache du référentiel de packages YUM avec la commande suivante :

$ sudo miam makecache

Installez maintenant les outils de gestion CGROUPS avec la commande suivante :

$ sudo yum installer libcgroup-tools

Maintenant, appuyez sur oui puis appuyez sur .

Il devrait être installé.

Vous pouvez limiter l'utilisation du processeur d'un seul groupe. Par exemple, vous pouvez utiliser CGROUPS pour indiquer à un processus au sein d'un CGROUP d'utiliser disons 100 ms sur 1000 ms (ou .1 s sur 1 s) de temps CPU.

Créez d'abord un CGROUP avec la commande suivante :

$ sudo cgcreate -g cpu:/cpulimit

REMARQUE: Ici, cpulimit est le nom du groupe qui contrôle le CPU usage.

Maintenant, vous devez définir CPU.cfs_period_us et CPU.cfs_quota_us propriété sur le cpulimit grouper.

Pour cet exemple, 1000ms (millisecondes) ou 1000000us (microsecondes) doit être défini sur CPU.cfs_period_us propriété et 100ms ou 100000us doivent être définis sur le CPU.cfs_quota_us propriété.

Exécutez les commandes suivantes pour définir ces propriétés sur le cpulimit grouper:

$ sudo cgset -r cpu.cfs_period_us=1000000 cpulimit
$ sudo cgset -r cpu.cfs_quota_us=100000 cpulimit

Vous pouvez maintenant exécuter la commande suivante pour vérifier si toutes les propriétés sont correctement définies :

$ sudo cgget -g cpu:cpulimit

REMARQUE: Ici, cpulimit est le nom du CGROUP et CPU est la ressource que je limite.

Comme tu peux le voir, CPU.cfs_period_us et CPU.cfs_quota_us sont correctement réglés.

Maintenant, quel que soit le processus auquel vous ajoutez cpulimit CGROUP utilisera 1/10e (100000/1000000 = 1/10 = 0.1 = 10 %) du nombre total de cycles CPU.

Maintenant, pour limiter le CPU d'un processus, démarrez le programme ou la commande avec cgexec comme suit:

$ sudo cgexec -g cpu:cpulimit VOTRE_COMMANDE

REMARQUE: Ici, VOTRE_COMMANDE peut être n'importe quelle commande Linux valide.

Pour prouver que cela fonctionne réellement, je vais d'abord exécuter la commande suivante sans CGROUPS puis avec CGROUPS et vous montrer les résultats.

$ dd if=/dev/zero of=out bs=1M

Comme vous pouvez le voir, sans CGROUPS, la commande utilise 90% du CPU total.

Ensuite, j'ai exécuté la même commande avec CGROUPS comme suit :

$ sudo cgexec -g cpu:cpulimit dd if=/dev/zero of=out bs=1M

Comme vous pouvez le voir, l'utilisation du processeur est de 10% au maximum. Le processus n'utilise pas plus que cela.

C'est ainsi que vous utilisez CGROUPS pour limiter l'utilisation du processeur d'un processus sous Linux. Merci d'avoir lu cet article.

Les références:

[1] https://accès.chapeau rouge.com/documentation/en-us/red_hat_enterprise_linux/6/html/resource_management_guide/sec-cpu

[2] https://linux.mourir.filet/homme/1/nice

[3] https://linux.mourir.filet/homme/8/renice

Tutoriel OpenTTD
OpenTTD est l'un des jeux de simulation d'entreprise les plus populaires. Dans ce jeu, vous devez créer une merveilleuse entreprise de transport. Cepe...
SuperTuxKart pour Linux
SuperTuxKart est un excellent titre conçu pour vous apporter l'expérience Mario Kart gratuitement sur votre système Linux. C'est assez stimulant et am...
Tutoriel Bataille pour Wesnoth
The Battle for Wesnoth est l'un des jeux de stratégie open source les plus populaires auxquels vous pouvez jouer en ce moment. Non seulement ce jeu es...