Comment définir les priorités de processus avec nice et renice sous Linux

Les commandes nice et renice vous permettent d’affiner la façon dont le noyau traite vos processus en ajustant leurs priorités. Lisez ce didacticiel pour apprendre à les utiliser dans des systèmes d’exploitation de type Linux et Unix tels que macOS.

Tout est une question de processus

À l’intérieur de votre ordinateur de type Linux ou Unix, de nombreux processus seront en cours d’exécution avant même que vous ne lanciez l’application que vous souhaitez utiliser. La majorité de ces processus sont des éléments vitaux de Linux lui-même ou des processus de support pour votre environnement de bureau graphique. Il se passe beaucoup de choses dans les coulisses. Bien sûr, il n’y a qu’un nombre limité de ressources système et de temps CPU à parcourir. Le noyau Linux est le contrôleur de tous ces processus.

C’est le noyau qui doit décider quels processus attirent l’attention et les ressources en ce moment, et lesquels doivent attendre. Le noyau jongle continuellement entre les processus et les priorités pour s’assurer que l’ordinateur fonctionne aussi bien que possible et que tous les processus obtiennent leur part appropriée. Certains processus bénéficient d’un traitement préférentiel. Ils sont si importants pour le fonctionnement général de l’ordinateur que leurs besoins doivent passer avant, par exemple, votre navigateur.

La belle valeur

L’un des critères utilisés pour déterminer comment le noyau traite un processus est la valeur nice. Chaque processus a une belle valeur. La valeur agréable est un entier compris entre -19 et 20. Tous les processus standard sont lancés avec une valeur agréable de zéro.

  Comment ajouter plusieurs pistes audio à une vidéo sous Windows 10

L’astuce ici est que plus la valeur est élevée, plus votre processus est agréable pour les autres processus. En d’autres termes, une valeur nice élevée indique au noyau que ce processus est heureux d’attendre. Un nombre négatif est le contraire d’être gentil. Plus la valeur négative est élevée, plus le processus est égoïste. Il essaie d’obtenir autant de temps CPU que possible, sans égard pour les autres processus.

Nous pouvons utiliser la commande nice pour définir la valeur nice quand un le processus est lancé et nous pouvons utiliser renice pour ajuster la belle valeur d’un processus en cours.

La belle commande

Nous pouvons utiliser la commande nice pour ajuster la valeur nice d’un programme lorsque nous le lançons. Cela nous permet d’augmenter ou de diminuer la priorité donnée au processus par le noyau, par rapport aux autres processus.

Supposons qu’un programmeur ait écrit un programme appelé ackermann. Cela calcule Fonctions Ackerman. Il est gourmand en CPU et en mémoire. Le programmeur peut lancer le programme avec la commande suivante:

./ackermann

commande ackermann dans la fenêtre du terminal

Nous pouvons utiliser la commande top pour afficher le programme en cours.

top

top courant dans un terminal

Nous pouvons voir les détails du programme ackermann en haut. La valeur intéressante est le chiffre de la «colonne NI». Il a mis à zéro comme on pouvait s’y attendre.

  Comment réparer une session Ubuntu gelée

Redémarons-le et cette fois rendons-le moins exigeant. Nous allons définir une belle valeur de 15 pour le programme ackermann comme suit. Tapez nice, un espace, -15, un autre espace, puis le nom du programme que vous souhaitez lancer. Dans notre exemple, notre programmeur fictif utilise ./ackermann.

nice -15 ./ackermann

commande nice 15 dans la fenêtre du terminal

Attention, le «-15» n’est pas négatif de quinze. C’est positif quinze. Le «-» est nécessaire pour indiquer à nice que nous passons un paramètre. Pour indiquer un nombre négatif, vous devez taper deux caractères «-».

Si nous recommençons maintenant top, nous pouvons voir le changement de comportement d’ackermann.

top

top courant dans un terminal

Avec une belle valeur de 15, ackermann ne consomme pas le plus de temps CPU. GNOME et Rhythmbox en utilisent tous les deux plus. Nous avons un peu freiné ackermann.

Maintenant, faisons l’inverse et donnons à ackermann une valeur gentille négative. Notez l’utilisation de deux caractères «-». Pour rendre une application plus égoïste et moins agréable, vous devez utiliser sudo. N’importe qui peut rendre son application plus agréable, mais seuls les super-utilisateurs peuvent en créer une de plus égoïste.

sudo nice --10 ./ackermann

commande nice -10 dans la fenêtre du terminal

Courons en haut et voyons quelle différence cela a fait.

top

top courant dans un terminal

Cette fois, ackermann a une belle valeur de -10. Il est de retour sur la première ligne et consomme plus de temps CPU qu’auparavant.

La commande renice

La commande renice nous permet d’ajuster la valeur intéressante d’un processus en cours d’exécution. Nous n’avons pas besoin de l’arrêter et de le relancer avec nice. Nous pouvons définir une nouvelle valeur à la volée.

  Comment sauvegarder et restaurer votre iPhone ou iPad sans iTunes

La commande renice prend l’ID de processus, ou PID, du processus comme paramètre de ligne de commande. Nous pouvons soit extraire l’ID de processus de la colonne «PID» en haut, soit utiliser ps et grep pour le trouver pour nous, comme suit. Évidemment, vous tapez le nom de votre utilisateur au lieu de dave et le nom du processus qui vous intéresse au lieu de ackermann.

ps -eu dave | grep ackermann

ps est acheminé via grep dans une fenêtre de terminal

Maintenant que nous avons le PID, nous pouvons l’utiliser avec renice. Nous allons ramener ackermann à un comportement plus agréable avec une belle valeur de cinq. Pour modifier la valeur agréable d’un processus en cours d’exécution, vous devez utiliser sudo. Notez qu’il n’y a pas de «-» sur le paramètre 5. Vous n’en avez pas besoin pour les nombres positifs et vous n’en avez besoin que d’un, pas de deux, pour les nombres négatifs.

sudo renice -n 5 2339

commande renice exécutée dans une fenêtre de terminal

Nous obtenons la confirmation que Renice a changé la belle valeur. Il nous montre l’ancienne valeur et la nouvelle valeur.

Le noyau fait généralement un excellent travail de gestion des priorités et de distribution du temps CPU et des ressources système. Mais si vous avez une tâche longue et gourmande en ressources processeur à exécuter et que vous ne vous souciez pas de la fin, cela rendra votre ordinateur un peu plus fluide si vous définissez une valeur plus élevée pour cette tâche. Ce sera plus agréable pour tout le monde.