GNU/Linux >> Tutoriels Linux >  >> Linux

Commandes Linux :Comment manipuler la priorité des processus

La gestion des processus sous Linux est un concept fondamental que tout bon administrateur système devrait connaître. La majorité du travail que vous effectuez avec ces processus consiste en des tâches basiques et répétitives telles que démarrer et arrêter des processus, les rechercher, les tuer, etc.

Dans certains cas moins fréquents, vous devrez peut-être réorganiser vos processus en raison de l'allocation des ressources système. Lorsque ces situations se présentent, beaucoup d'entre nous utiliseront notre moteur de recherche préféré pour trouver le moyen le plus efficace de le faire. Maintenant que l'algorithme de recherche vous a amené ici pour activer Sysadmin, donnons les réponses que vous recherchez.

Je vais détailler comment la priorité est déterminée, puis vous montrer comment manipuler ces valeurs ci-dessous.

Priorité et relativité des processus

Les systèmes Linux exécutent régulièrement plus de processus qu'il n'y a d'unités de traitement dans l'ordinateur. Pour cette raison, le planificateur de processus passera rapidement d'un processus à l'autre sur un seul cœur, créant ainsi l'illusion que nous exécutons plusieurs processus simultanés.

En réalité, chaque processus se voit attribuer une politique d'ordonnancement des processus. Dans cette politique, une échelle de 40 points est utilisée pour mesurer la bonne niveaux d'un processus. Le niveau de gentillesse est une unité de mesure qui décrit la priorité relative du processus. Lorsque vous discutez des niveaux de gentillesse, notez que l'échelle va de -20 (priorité la plus élevée) à 19 (priorité la plus basse) et qu'un processus hérite son niveau de gentillesse du parent (le plus souvent 0).

[ Vous pourriez également apprécier : Linux Command Basics :7 commandes pour la gestion des processus  ]

Maintenant, si un processus a un niveau de gentillesse inférieur (inférieur à zéro), alors il sera moins susceptible d'abandonner son utilisation du processeur (pas très gentil, est-ce?). D'un autre côté, un processus avec une valeur de gentillesse élevée (supérieure à zéro) sera plus susceptible d'abandonner l'utilisation du processeur.

Un moyen facile de s'en souvenir est que si quelqu'un (ou un processus) est vraiment gentil, il est plus enclin à partager avec les autres. S'ils ne sont pas très gentils, ils ont tendance à protéger davantage ce qui leur appartient (les ressources CPU, dans ce cas).

De plus, s'il n'y a pas de pénurie de ressources, même les processus avec des niveaux de gentillesse élevés utiliseront tout le temps CPU disponible. Le seul moment où un processus produira ses ressources, c'est en cas de pénurie de bande passante.

Rapport prioritaire

Maintenant que nous avons tout le contexte entourant la priorité des processus, examinons quelques-unes des façons d'afficher ces informations sur le terminal.

Le moyen le plus rapide et le plus simple d'afficher les informations de gentillesse est d'utiliser le top commande. Il affiche ces informations par défaut dans la quatrième colonne (de gauche à droite) et ne nécessite donc aucune option ou indicateur supplémentaire.

L'autre méthode, légèrement plus compliquée, consiste à utiliser le ps commande avec une généreuse aide d'options de formatage. La commande suivante affichera les processus avec leurs ID de processus, leur nom, leur niveau de gentillesse et leur classe de planification (triés par ordre décroissant) :

[tcarrigan@localhost ~]$ ps axo pid,comm,nice,cls --sort=-nice

Maintenant en temps réel :

Manipuler la gentillesse existante

Nous savons maintenant comment visualiser la gentillesse d'un processus existant, mais que se passe-t-il si ce niveau de gentillesse ne répond pas à nos besoins ? Comment pouvons-nous modifier ces valeurs pour tirer le meilleur parti de notre système ? Eh bien, si vous avez un processus particulier qui consomme des ressources dont vous avez besoin ailleurs, vous pouvez réduire le niveau agréable de ce processus spécifique. Pour ce faire, nous utiliserons le renice commande.

Remarque :seulement l'utilisateur root peut réduire un niveau de gentillesse (augmenter la priorité). Les utilisateurs non privilégiés peuvent augmenter les niveaux agréables mais ne peuvent pas les diminuer sans les autorisations root.

Jetez un oeil à ce sleep 500 processus. Il a un PID de 23990 et un niveau agréable par défaut de 0.

[tcarrigan@localhost ~]$ ps -o pid,comm,nice 23990
    PID COMMAND          NI
  23990 sleep             0

Si je voulais rendre ce processus moins prioritaire, j'utiliserais le renice suivant commande :

Pour rendre le processus plus important (abaisser le niveau de gentillesse), vous utiliseriez la même syntaxe de commande qu'un utilisateur privilégié.

[ Aide-mémoire gratuit :glossaire Kubernetes ] 

Une dernière chose

D'accord, avant de conclure, il y a encore une astuce que je voulais inclure ici. Si vous allez démarrer un processus qui a généralement un niveau agréable par défaut qui n'est pas souhaitable, vous pouvez en fait définir ce paramètre lorsque vous lancez le processus. Nous utiliserons le sleep commander à nouveau. Cependant, cette fois, nous allons le créer avec le nice commande (qui définit par défaut le processus sur le niveau 10 de nice).

Vous pouvez définir un niveau de nice spécifique en utilisant la même commande avec la syntaxe suivante :

[tcarrigan@localhost ~]$ nice -n 19 sleep 500 &

La commande ci-dessus définit l'arrière-plan sleep 500 à un joli niveau de 19.

Ces commandes étaient très amusantes à apprendre et à montrer. À l'avenir, lorsque je rencontrerai des problèmes avec les ressources système ou les processus gourmands, je pourrai modifier les ressources qui leur sont allouées.


Linux
  1. Comment tuer un processus zombie sous Linux

  2. 8 commandes Linux pour une gestion efficace des processus

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

  4. Comment tuer un processus sous Linux en utilisant la commande ?

  5. Comment l'utilisation de la mémoire est-elle signalée sous Linux ?

Comment tuer un processus sous Linux

Comment exécuter des commandes Linux en arrière-plan

Comment tuer les processus Zombie sous Linux

Comment tuer un processus sous Linux

Comment utiliser les commandes FTP de Linux

Commandes pour la gestion des processus sous Linux