Comment prioriser les processus Linux avec Nice et Renice

Au sein des différentes tâches de gestion des systèmes d'exploitation Linux, il est idéal de savoir en détail comment fonctionnent les processus au sein du système car cela est essentiel pour compléter et savoir, en interne, chaque processus remplit la fonction pour laquelle il a été développé.

Aujourd'hui, Solvetic analysera en détail comment hiérarchiser les processus de nos distributions Linux en utilisant nice et renice.

Quelles sont les priorités de processus sous LinuxIl est important avant de savoir à quel point le travail est agréable et raffiné de comprendre un peu pourquoi définir une certaine priorité d'un processus Linux, la priorité d'un processus, est utilisé pour déterminer la durée pendant laquelle le processus sélectionné pourra utiliser le processeur dans un intervalle de temps spécifique.

Dans les environnements Linux, les processeurs sont partagés par plusieurs processus (les processus alternent dans l'utilisation du ou des processeur(s) disponible(s)) ce qui permet à l'utilisateur de percevoir que toutes les applications ou tâches sont exécutées en même temps, donc en définissant une priorité , nous indiquons au système quels processus peuvent utiliser davantage le processeur et quels processus prennent la deuxième place.

Cette priorité peut conduire à ce que certains processus ne soient pas exécutés à tout moment, car ils sont déplacés vers la fin de la file d'attente des processus par d'autres processus avec une priorité d'utilisation plus élevée.

Fonctionnement du Kernel Scheduler sous LinuxUn autre point à garder à l'esprit lors de la gestion des systèmes Linux est de connaître le noyau, qui est en charge du démarrage. Il a un programmeur ou un planificateur dans son noyau, qui est une unité de noyau qui détermine le processus le plus approprié de tous les processus exécutables disponibles, qui doit être exécuté en premier lieu. Il alloue ensuite du temps processeur entre les processus exécutables sur le système.

Un processus exécutable est un processus qui n'attend que le temps CPU pour s'exécuter. Le programmeur forme le noyau du multitâche sous Linux, en utilisant un algorithme de planification basé sur les priorités pour sélectionner des processus exécutables sur le système. Ensuite, il classe les processus en fonction des plus fondamentaux, ainsi que les besoins en temps CPU de chacun d'entre eux.

Sous Linux, il y a un total de 140 priorités et deux plages de priorités différentes implémentées dans Linux :

  • La première est la belle valeur qui va de -20 (valeur de priorité la plus élevée) à 19 (valeur de priorité la plus basse) et la valeur par défaut est 0.
  • La seconde est la priorité temps réel, qui va de 1 à 99 par défaut, puis 100 à 139 sont destinés à l'espace utilisateur.

1. Vérifier les valeurs des processus sous Linux


Sous Linux, nous pouvons vérifier les valeurs d'un processus à l'aide d'utilitaires tels que ps, top ou htop.
Si nous utilisons le paramètre ps, nous pouvons exécuter ce qui suit :
 ps -eo pid, ppid, ni, comm
Là, la colonne ne révèle pas la valeur de chaque processus :

AGRANDIR

Alternativement, nous pouvons utiliser les paramètres top ou htop où nous pouvons voir des résultats beaucoup plus complets et automatiquement nous verrons la colonne avec les mêmes valeurs de chaque processus affiché :

Haut

AGRANDIR

htop

AGRANDIR

NoterSi vous n'avez pas htop, nous pouvons l'installer en exécutant la ligne sudo apt install htop

2. Différence entre PR ou PRI et NI et comment calculer leurs valeurs


Lorsque nous exécutons les paramètres top et htop, nous pouvons voir les colonnes PR, PRI ou NI, elles signifient :

NIC'est une valeur conviviale, c'est-à-dire un concept d'espace utilisateur

RP / RPC'est la vraie priorité du processus, cette information est fournie par le noyau Linux

Ces valeurs sont basées sur les éléments suivants.

 Nombre total de priorités = 140 Plage de priorité en temps réel (PR ou PRI) : 0 à 99 Plage de priorité de l'espace utilisateur : 100 à 139 Plage de valeurs NI (Nice Value) -20 à 19 : PR = 20 + NI PR = 20 + ( -20 à + 19) PR = 20 + -20 à 20 + 19 PR = 0 à 39 qui est égal à 100 à 139
Si dans les résultats affichés, nous voyons la valeur rt, cela indique que le processus est exécuté sous la priorité de planification en temps réel.

3. Comment exécuter une commande avec une valeur Nice sur Linux


Nice se charge d'attribuer une priorité spécifique à un programme lors de son exécution, et par héritage aux tâches et processus que ce programme peut déclencher au sein du système. Nice s'applique lorsque l'on a un programme ou une tâche qui demande beaucoup d'utilisation du CPU, mais aussi que ce processus peut prendre beaucoup de temps à se terminer, là il sera possible de configurer une priorité haute ou favorable à l'aide de la commande nice.

La syntaxe que nous pouvons utiliser est la suivante :

 nice -n nice-value [arguments de commande] nice - nice-value [arguments de commande] nice --adjustment = nice-value [arguments de commande]
Considérer ce qui suit:
  • Si aucune valeur n'est fournie, nice définira une priorité de 10 par défaut
  • Une commande ou un programme exécuté sans valeurs par défaut est défini sur une priorité de zéro
  • Seul l'utilisateur root peut exécuter une commande ou un programme avec une priorité supérieure ou supérieure
  • Les utilisateurs normaux ne peuvent exécuter qu'une commande ou un programme de faible priorité
Pour définir une priorité, au lieu de démarrer un programme ou une commande avec la priorité par défaut, il sera possible de le démarrer avec une priorité spécifique en utilisant la commande nice suivante :
 sudo nice -n -5 xclock &
Ou nous pouvons exécuter ce qui suit :
 sudo nice --ajustement = 5 xclock &

AGRANDIR

Nous pouvons voir qu'un nouvel ID est généré.

4. Modifier la priorité de planification d'un processus sous Linux


Lors de l'utilisation d'environnements Linux, cela permet une programmation dynamique basée sur des priorités, par conséquent, si un programme est déjà en cours d'exécution, il sera possible de modifier sa priorité à l'aide de la commande renice comme suit :
 renice -n -12 -p (PID) renice -n -2 -u (Application)
Lors de l'exécution de cette commande, nous pourrons voir l'ancienne priorité et la nouvelle priorité.

AGRANDIR

5. Comment définir Nice par défaut pour les processus d'un utilisateur particulier


Vous pouvez définir la valeur par défaut pour un utilisateur ou un groupe spécifique dans le fichier /etc/security/limits.conf. Sa fonction principale est de définir des limites de ressources pour les utilisateurs connectés via PAM.

La syntaxe pour définir une limite pour un utilisateur est la suivante :

 
Alternativement, il sera possible de créer un fichier dans /etc/security/limits.d/ qui se charge de remplacer la configuration dans le fichier principal et ces fichiers sont lus par ordre alphabétique.

Si nous voulons obtenir l'aide de nice ou de renice, nous pouvons exécuter les opérations suivantes :

 homme gentil renice

AGRANDIR

Ainsi, nous avons à portée de main une option pour établir des priorités en fonction des besoins des processus, optimisant beaucoup plus l'utilisation du CPU sous Linux et améliorant considérablement les tâches administratives.

wave wave wave wave wave