Nice
| Fiche express | |
|---|---|
| Domaine | Priorité d'ordonnancement des processus |
| Commande | nice / renice
|
| Contexte | Plage -20 (priorité la plus haute) à 19 (la plus basse), 0 par défaut |
| Voir aussi | Taskset (affinité CPU, priorité temps réel via chrt) |
nice et renice agissent sur la priorité d'ordonnancement d'un processus, c'est-à-dire la part de temps CPU que le noyau lui accorde par rapport aux autres processus quand la ressource est disputée. La priorité (« niceness ») va de -20 (le processus « embête » le moins les autres, donc priorité maximale) à 19 (priorité minimale) ; un processus lancé normalement démarre à 0. nice fixe la priorité au lancement d'une commande, renice la change sur un processus déjà en cours.
nice : lancer une commande avec une priorité donnée
nice commande # lance "commande" avec un niceness +10 par défaut (au lieu de 0)
nice -n 10 commande # équivalent explicite : niceness +10
nice -n -10 commande # priorité plus haute (nécessite root ou CAP_SYS_NICE)
nice -n -19 mon_script.sh # priorité quasi maximale
nice -n 19 mon_script.sh # priorité minimale (bon citoyen : ne gêne pas les autres tâches)
Un utilisateur non privilégié peut toujours augmenter le niceness (rendre un processus plus discret), mais ne peut pas le diminuer sans les droits root ou la capability CAP_SYS_NICE.
renice : changer la priorité d'un processus déjà lancé
Identifier d'abord le PID avec Ps (colonne NI pour voir le niceness actuel), puis :
renice -n 5 -p 1234 # syntaxe moderne (util-linux) : niceness 5 pour le PID 1234
renice -19 1234 # ancienne syntaxe, toujours acceptée : -p est la cible par défaut
renice -n 10 -u www-data # applique à tous les processus d'un utilisateur
renice -n 10 -g apache # applique à tous les processus d'un groupe
Comme pour nice, seul root peut abaisser le niceness (augmenter la priorité) ou toucher aux processus d'un autre utilisateur ; un utilisateur normal ne peut que relever le niceness de ses propres processus.
Lire la priorité actuelle
ps -o pid,ni,comm -p 1234 # colonne NI = niceness actuel
top # colonne NI également visible en mode interactif