Comment définir la priorité du processus Linux en utilisant les commandes Nice et Renice

Comment définir la priorité du processus Linux en utilisant les commandes Nice et Renice

Dans cet article, nous expliquerons brièvement le planificateur de noyau (également connu sous le nom de planificateur de processus), et Processus prioritaire, qui sont des sujets au-delà de la portée de ce guide. Ensuite, nous plongerons dans un peu de gestion des processus Linux: voir comment exécuter un programme ou une commande avec une priorité modifiée et également modifier la priorité de l'exécution des processus Linux.

Lisez également: Comment surveiller les processus Linux et fixer des limites de processus sur une base par utilisateur

Comprendre le planificateur de noyau Linux

Un planificateur de noyau est une unité du noyau qui détermine le processus le plus approprié de tous les processus exécutables à exécuter ensuite; Il alloue le temps du processeur entre les processus runnables sur un système. Un processus coulable est celui qui n'attend que le temps de processeur, il est prêt à être exécuté.

Le planificateur constitue le cœur du multitâche dans Linux, en utilisant un algorithme de planification basé sur la priorité à choisir entre les processus Runnables du système. Il classe les processus basés sur les plus méritants ainsi que le besoin de temps de processeur.

Comprendre la priorité du processus et la bonne valeur

Le noyau stocke beaucoup d'informations sur les processus, y compris la priorité du processus qui est simplement la priorité de planification attachée à un processus. Les processus avec une priorité plus élevée seront exécutés avant ceux qui ont une priorité inférieure, tandis que les processus avec la même priorité sont programmés après le suivant, à plusieurs reprises.

Il y a un total de 140 priorités et deux gammes de priorités distinctes implémentées dans Linux. Le premier est une bonne valeur (gentillesse) 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, C'est ce que nous découvrirons dans ce guide. L'autre est la priorité en temps réel, qui va de 1 pour 99 Par défaut, alors 100 pour 139 sont destinés à l'espace utilisateur.

Une caractéristique importante de Linux est la planification basée sur la priorité dynamique, qui permet de modifier la bonne valeur des processus (augmentée ou diminuée) en fonction de vos besoins, comme nous le verrons plus tard.

Comment vérifier la bonne valeur des processus Linux

Pour voir les belles valeurs des processus, nous pouvons utiliser des services publics tels que PS, TOP ou HTOP.

Pour afficher les processus de bonne valeur avec la commande ps au format défini par l'utilisateur (ici le Ni La colonne montre la gentillesse des processus).

$ ps -eo pid, ppid, ni, commandant 
Afficher les processus Linux Nices valeurs

Alternativement, vous pouvez utiliser des utilitaires supérieurs ou HTOP pour afficher les processus Linux de jolies valeurs comme indiqué.

$ top $ htop 
Vérifiez les belles valeurs du processus Linux en utilisant la commande supérieure Vérifiez les belles valeurs du processus Linux à l'aide de la commande htop

Différence entre PR ou PRI et NI

Du haut et htop sorties ci-dessus, vous remarquerez qu'il y a une colonne appelée RP et Pri réceptivement qui montre la priorité d'un processus.

Cela signifie donc que:

  • Ni - est la bonne valeur, qui est un concept d'espace utilisateur, tandis que
  • RP ou Pri - est la priorité réelle du processus, comme le montre le noyau Linux.
Comment calculer les valeurs PR ou PRI
Nombre total de priorités = 140 Priorité de priorité en temps réel (PR ou PRI): 0 à 99 Espace utilisateur Priorité Priorité: 100 à 139 

Gamme de valeurs belles (ni): -20 à 19

Pr = 20 + Ni Pr = 20 + (-20 à + 19) PR = 20 + -20 à 20 + 19 PR = 0 à 39, ce qui est le même que 100 à 139. 

Mais si vous voyez un rt Plutôt qu'un nombre comme indiqué dans la capture d'écran ci-dessous, cela signifie essentiellement que le processus s'exécute sous une priorité de planification en temps réel.

Processus Linux RT

Comment exécuter une commande avec une bonne valeur donnée dans Linux

Ici, nous examinerons comment hiérarchiser l'utilisation du processeur d'un programme ou d'une commande. Si vous avez un programme ou une tâche à forte intensité de processe belle commande.

La syntaxe est la suivante:

$ Nice -N ADICITY-VALUE [Command Args] ou $ Nice -niceness-Value [Command Args] # Il est déroutant pour les valeurs négatives ou $ nice --ajustement = gentillesse-valeur [Command Args] 

Important:

  • Si aucune valeur n'est fournie, Nice définit une priorité de 10 par défaut.
  • Une commande ou un programme s'exécute sans que les valeurs par défaut une priorité de zéro.
  • Seule Root peut exécuter une commande ou un programme avec une priorité accrue ou élevée.
  • Les utilisateurs normaux ne peuvent exécuter qu'une commande ou un programme avec une faible priorité.

Par exemple, au lieu de démarrer un programme ou une commande avec la priorité par défaut, vous pouvez le démarrer avec une priorité spécifique en utilisant la commande NICE suivante.

$ sudo nice -n 5 tar -czf sauvegarde.le goudron.gz ./ Documents / * ou $ sudo Nice --Adjustment = 5 TAR -CZF Sauvegarde.le goudron.gz ./ Documents / * 

Vous pouvez également utiliser la troisième méthode qui est un peu déroutante, en particulier pour les valeurs de gentillesse négatives.

$ sudo nice -5 tar -czf sauvegarde.le goudron.gz ./ Documents / * 

Modifier la priorité de planification d'un processus dans Linux

Comme nous l'avons mentionné précédemment, Linux permet une planification basée sur la priorité dynamique. Par conséquent, si un programme est déjà en cours d'exécution, vous pouvez modifier sa priorité avec le Commande Renice sous cette forme:

$ Renice -N -12 -P 1055 $ Renice -N -2 -u apache 
Priorité du processus de modification

De l'échantillon haut sortie ci-dessous, la gentillesse du équipe+ avec pid 1055 est maintenant -12 Et pour tous les processus appartenant à l'utilisateur Apache -2.

En utilisant toujours cette sortie, vous pouvez voir la formule Pr = 20 + ni des stands,

Pr pour TS3Server = 20 + -12 = 8 PR pour les processus Apache = 20 + -2 = 18 
Regarder les processus belles valeurs

Toutes les modifications que vous apportez avec Commande Renice Pour les processus d'un utilisateur, les valeurs belles ne sont applicables que jusqu'au prochain redémarrage. Pour définir des valeurs par défaut permanentes, lisez la section suivante.

Comment définir la bonne valeur par défaut des processus d'un utilisateur spécifique

Vous pouvez définir la bonne valeur par défaut d'un utilisateur ou d'un groupe particulier dans le / etc / sécurité / limites.confli déposer. Sa fonction principale est de définir les limites de ressources pour les utilisateurs connectés via PAM.

La syntaxe pour définir une limite pour un utilisateur est la suivante (et les valeurs possibles des différentes colonnes sont expliquées dans le fichier):

#    

Utilisez maintenant la syntaxe ci-dessous où le dur - signifie appliquer des liens durs et des moyens doux - appliquer les limites douces.

  priorité  

Alternativement, créez un fichier sous / etc / sécurité / limites.d/ qui remplace les paramètres dans le fichier principal ci-dessus, et ces fichiers sont lus dans l'ordre alphabétique.

Commencez par créer le fichier / etc / sécurité / limites.d / tecmint-priorité.confli pour l'utilisateur Tecmint:

# vi / etc / sécurité / limites.d / tecmint-priorité.confli 

Puis ajoutez cette configuration dedans:

Tecmint Hard Priority 10 

Enregistrez et fermez le fichier. Désormais, tout processus appartenant à Tecmint aura une bonne valeur de dix et Pr de 30.

Pour plus d'informations, lisez les pages de l'homme de bon et Renice:

$ man gentil $ man Renice 

Vous aimerez peut-être également lire ces articles suivants sur la gestion des processus Linux.

  1. Comment trouver et tuer des processus de course à Linux
  2. Un guide de Kill, Pkill et Killall commande pour mettre fin à un processus dans Linux
  3. Comment surveiller l'utilisation du système, les pannes et le dépannage des serveurs Linux
  4. Cputool - Limiter et contrôler l'utilisation du processeur de tout processus dans Linux

Dans cet article, nous avons brièvement expliqué le planificateur de noyau, la priorité du processus, avons examiné comment exécuter un programme ou une commande avec une priorité modifiée et également modifier la priorité des processus Linux actifs. Vous pouvez partager toutes les réflexions concernant ce sujet via le formulaire de rétroaction ci-dessous.