Linux / Commande nice : lancer une commande avec une priorité CPU ajustée

nice lance une nouvelle commande avec une valeur de niceness ajustée, utilisée par l'ordonnanceur du processeur. Un nombre plus élevé rend généralement la tâche moins prioritaire face à des tâches concurrentes. L'option -n 10 ajoute 10 à la valeur héritée : elle ne fixe pas systématiquement la valeur finale à 10.

Comprendre la valeur et l'ajustement

nice -n ajustement commande [arguments…]

Sous Linux, la plage usuelle va de -20, plus favorable au processus, à 19, moins favorable. Une valeur plus petite représente donc une préférence CPU plus élevée. Cette niceness n'est ni un pourcentage ni une garantie de temps de réponse.

Dans GNU Coreutils, nice sans commande affiche la valeur courante. Vous pouvez faire une comparaison courte, sans calcul intensif ni fichier :

nice
nice -n 10 nice
nice

Si la valeur de départ est 0, les trois sorties attendues sont :

0
10
0

La deuxième ligne lance un autre nice qui affiche la valeur du processus ainsi créé. La troisième retrouve la valeur du contexte de départ, que le lancement d'un enfant n'a pas modifiée. Avec un autre point de départ ou une limite applicable, ne supposez pas le même résultat numérique.

Démarrer une commande de travail

Pour calculer l'empreinte d'un fichier existant en demandant un ajustement positif de 10 :

nice -n 10 sha256sum large.log

Remplacez large.log par un fichier lisible que vous souhaitez vérifier. Sha256sum lit son contenu et affiche son empreinte ; nice modifie le contexte de lancement de cette commande, pas le fichier. Une préférence CPU plus basse ne signifie pas que le calcul sera dix fois plus lent.

GNU nice utilise également un ajustement par défaut de +10 lorsque la commande est présente mais que -n est omis :

nice sha256sum large.log

Les options -n valeur et --adjustment=valeur expriment le même réglage GNU. Placez ces options avant la commande et ses arguments. Vérifiez nice --help et la résolution du nom par votre shell si vous utilisez une autre implémentation.

Vérifier le NI d'un nouveau processus

Un calcul court peut finir avant une consultation ps. Pour observer le réglage sans produire une charge CPU importante, utilisez un sleep de test dans un terminal Bash :

nice -n 10 sleep 10 &
demo_pid=$!
ps -p "$demo_pid" -o pid,ni,comm
wait "$demo_pid"

$! mémorise le PID du dernier processus lancé en arrière-plan et NI est la colonne de niceness de ps sous Linux procps-ng. Avec une valeur initiale 0 et l'ajustement accepté, la ligne de sleep doit afficher NI = 10. Wait laisse cet enfant finir naturellement.

Vous contrôlez ici un réglage, pas un gain de performance : sleep attend au lieu d'effectuer un calcul concurrent. Si le processus a déjà terminé, relancez l'exercice pour le lire pendant son existence. Pour modifier un processus déjà lancé, utilisez renice avec les permissions et la syntaxe de votre système.

Reconnaître les limites et les refus de priorité

La niceness concerne l'ordonnancement CPU ; elle ne réserve pas une quantité de mémoire et ne fixe pas une limite de débit de disque ou de réseau. Sans concurrence pour le CPU, un processus moins prioritaire peut encore en utiliser beaucoup. Un plafond de consommation et une préférence relative répondent à des besoins différents.

Un ajustement négatif cherche à favoriser la tâche et peut nécessiter des droits particuliers. Dans GNU nice, un refus de cet ajustement peut produire un avertissement tout en lançant la commande sans l'ajustement demandé. Lisez donc le diagnostic et vérifiez le NI obtenu plutôt que de déduire le réglage de la seule réussite du programme.

Si l'application est lente à cause du stockage ou d'une attente externe, changer sa niceness ne résout pas directement cette cause. Identifiez d'abord le type de ressource en jeu, par exemple avec top et les observations répétées des processus.

Le manuel officiel de GNU nice explique l'ajustement relatif et les avertissements ; la page de manuel nice récapitule les formes et les retours de commande.