Commande nice sous Linux : définir la priorité, la modifier avec renice et mesurer la part de CPU en cas de concurrence

Mention d'affiliation v3.1
Mention d'affiliation v3.2 (mobile)
Environnement de testFamille RHELAlmaLinux 9.8root · compte utilisateur standardVérifié le 2026-10-17

La commande nice de Linux définit la valeur nice (de -20 à 19), qui détermine la part de CPU qu'un programme cède aux autres lorsqu'il s'exécute. Sur un serveur AlmaLinux 9, deux tâches ont été liées à un seul cœur de CPU et mesurées en faisant varier la valeur nice : le partage n'a eu lieu que lorsqu'elles se disputaient le CPU, et la tâche en nice 19 n'a utilisé que 1,4 %.

Les processus déjà en cours se modifient avec renice, et c'est ionice qui gère la cession du disque. Pour les trois commandes, la sortie présentée est exactement celle obtenue en les exécutant en root et en utilisateur standard.

1️⃣ Commande nice sous Linux : plage de valeurs et part de CPU en cas de concurrence

La valeur nice est un nombre qui fixe à quel point un processus cède sa place quand le temps CPU est partagé ; elle va de -20 à 19. Les programmes s'exécutent normalement à 0, -20 passe en premier et 19 est celui qui cède le plus.

On pourrait croire qu'un nombre plus grand passe en premier, mais c'est l'inverse pour la valeur nice. L'ordonnanceur Linux attribue un poids à chaque valeur nice et répartit le temps CPU selon ce rapport : nice 0 pèse 1024, 10 pèse 110 et 19 pèse 15.

On ne cède sa place que lorsqu'il y a concurrence pour le CPU. S'il reste un CPU libre, même une tâche en nice 19 s'exécute sans attendre. C'est comme les places prioritaires dans le bus : quand elles sont libres, tout le monde s'y assoit, et on ne les cède que lorsque le bus est bondé.

🧭 La valeur nice quand le CPU est libre et en cas de concurrence
Schéma explicatif
🖥️ CPU
⚖️ Tâche B
🖥️ Un CPU est libre : chaque tâche a son propre cœur🖥️ Deux tâches se partagent un cœur de CPU
Tâche Anice 0 · poids 1024
100%50.0%90.3%98.6%
Tâche Bnice 0 · poids 1024nice 10 · poids 110nice 19 · poids 15
100%50.0%9.7%1.4%
Quand il reste du CPU, il n'y a personne à qui céder : la tâche B utilise pleinement le CPU, quelle que soit sa valeur nice.
Quand elles se disputent le même cœur, deux tâches en nice 0 de même poids se partagent le temps CPU à parts égales.
nice 10 pèse 110, soit environ un neuvième de nice 0 (1024) : le temps CPU est réparti à peu près 90,3 : 9,7.
nice 19 pèse 15 ; en cas de concurrence, la tâche B n'utilise qu'environ 1,4 % du temps CPU.

La table des poids est le tableau [sched_prio_to_weight] du code source du noyau Linux [kernel/sched/core.c] ; elle est conçue pour que chaque cran de plus sur la valeur nice réduise le temps CPU d'environ 10 %.

2️⃣ Utilisation de base de nice : +10 sans valeur et valeurs hors plage

Placez une commande après nice pour l'exécuter avec une valeur nice modifiée ; tapé seul, nice affiche la valeur nice du shell actuel.

nice
0

Dans les exemples ci-dessous, le bash lancé affiche sa propre valeur nice avec [ps -o ni=]. Sans -n, 10 s'ajoute à la valeur actuelle ; avec -n 5, c'est 5.

nice bash -c 'ps -o ni= -p $$'
 10
nice -n 5 bash -c 'ps -o ni= -p $$'
  5

Les valeurs hors plage sont ramenées à la limite sans erreur : -n 50 s'exécute à 19.

nice -n 50 bash -c 'ps -o ni= -p $$'
 19

Seul root peut faire passer un processus devant avec une valeur négative. Un utilisateur standard reçoit l'avertissement [cannot set niceness] et la commande s'exécute quand même en nice 0.

# en utilisateur standard
nice -n -5 bash -c 'ps -o ni= -p $$'
nice: cannot set niceness: Permission denied
  0
# en root
nice -n -5 bash -c 'ps -o ni= -p $$'
 -5

Les processus enfants lancés par une commande exécutée avec nice tournent eux aussi avec la même valeur nice.

nice -n 7 bash -c 'sleep 1 & ps -o ni= -p $!'
  7

Ainsi, si vous lancez un script avec nice, toutes les commandes qu'il contient cèdent leur place.

3️⃣ renice : modifier la valeur nice d'un processus en cours

nice ne fixe la valeur qu'au lancement : pour un processus déjà en cours, on utilise renice. Vérifiez d'abord le PID et la valeur actuelle dans la colonne NI de top ou avec ps.

ps -o pid,ni,cmd -p 201643
    PID  NI CMD
 201643   5 sleep 600
renice -n 10 -p 201643
201643 (process ID) old priority 5, new priority 10

Comme le montre la sortie, renice -n n'ajoute rien à la valeur actuelle mais la fixe à la valeur indiquée : on obtient 10, et non 5 + 10 = 15. Ce n'est pas comme appuyer sur ▲ sur la télécommande de la climatisation pour monter d'un cran, mais comme régler la température souhaitée sur 24 degrés.

La documentation officielle d'util-linux décrit elle aussi -n comme une valeur absolue ; l'ajout relève de l'option [--relative] des versions récentes. util-linux 2.37.4, la version testée, ne disposait pas de cette option.

Un utilisateur standard peut seulement augmenter la valeur de ses propres processus et ne peut plus la baisser une fois augmentée.

# en utilisateur standard
renice -n 10 -p 201649
201649 (process ID) old priority 0, new priority 10
renice -n 5 -p 201649
renice: failed to set priority for 201649 (process ID): Permission denied

root peut aussi la baisser ; dans le même test, 10 est passé directement à 3.

🔲 Simulateur nice · renice

Dans le simulateur ci-dessous, connecté en utilisateur standard, vous pouvez taper nice et renice vous-même et voir la valeur nice changer.

Simulateur de la commande nicenice 8.32 · renice 2.37.4
[root@server work]#
Fonctionne uniquement dans votre navigateur et ne touche à aucun vrai processus. Le serveur virtuel est connecté en utilisateur standard : lancez une commande avec une valeur nice modifiée ou changez la valeur de backup.sh (PID 2481) avec renice, puis vérifiez avec ps -o pid,ni,cmd. Les touches ↑↓ rappellent les commandes précédentes.

4️⃣ Mesure de la part de CPU en cas de concurrence : nice 0 vs 0·10·19

Augmenter la valeur nice ne ralentit pas toujours la tâche. Sa part ne diminue que lorsqu'elle est en concurrence avec une autre tâche pour le même CPU.

Deux tâches ont été liées à un seul cœur de CPU (taskset) et ont exécuté en même temps le script ci-dessous, qui compte de un en un pendant 5 secondes. Plus le nombre atteint est élevé, plus la tâche a utilisé de temps CPU.

#!/bin/bash
end=$((SECONDS+5)); n=0
while [ $SECONDS -lt $end ]; do n=$((n+1)); done
echo $n

Le script incrémente n de 1 jusqu'à ce que 5 secondes se soient écoulées, puis affiche la valeur finale.

📊5 secondes à se disputer un cœur de CPUNombre compté en 5 secondes
Première tâche nice 0Seconde tâche
nice 0 vs nice 0
Deux tâches de même poids.
0250 000500 000750 0001 million
nice 0497 59648.8%
nice 0522 04051.2%
nice 0 vs nice 10
Seule la seconde tâche tourne en nice 10.
0250 000500 000750 0001 million
nice 0979 97190.1%
nice 10107 6719.9%
nice 0 vs nice 19
Seule la seconde tâche tourne en nice 19.
0250 000500 000750 0001 million
nice 0909 89598.6%
nice 1913 0101.4%
Chiffres relevés le 17 octobre 2026 sur un serveur AlmaLinux 9, les deux tâches étant liées à un cœur de CPU et exécutées simultanément pendant 5 secondes.

Deux tâches en nice 0 se sont partagé le temps à parts égales, nice 10 en a utilisé environ 10 % et nice 19 seulement 1,4 %. C'est conforme aux rapports calculés à partir des poids du noyau (1024 : 110 donne 90,3 : 9,7, et 1024 : 15 donne 98,6 : 1,4).

Lancée seule sur le même cœur, la tâche en nice 19 a compté environ 650 000 à 1 140 000 fois en 5 secondes. Sans personne à qui céder, même nice 19 utilise pleinement le CPU ; la charge du serveur (load average) était de 3 à 5 pendant le test.

5️⃣ ionice : céder le disque et vérifier l'ordonnanceur

nice ne fixe que la part de CPU : pour les tâches qui lisent et écrivent longtemps sur le disque, comme les sauvegardes, on cède aussi son tour sur le disque avec ionice. Avec -c3 (idle), la tâche n'est servie que lorsqu'aucun autre programme n'utilise le disque.

ionice -c3 bash -c 'ionice -p $$'
idle
ionice -p $$
none: prio 0

Un processus sans classe définie s'affiche comme [none] ; selon la documentation du noyau, il est traité en best-effort et sa priorité est calculée à partir de la valeur nice du CPU.

Les classes ionice n'ont d'effet que si l'ordonnanceur du disque les prend en charge ; la documentation du noyau cite bfq et mq-deadline comme ordonnanceurs compatibles. Celui affiché entre crochets est l'ordonnanceur en service.

cat /sys/block/nvme0n1/queue/scheduler
[none] mq-deadline kyber bfq

Le disque NVMe du serveur de test utilise [none] : selon la documentation officielle, ionice peut donc rester sans effet, et l'effet n'a pas été mesuré séparément. Le nom du disque se vérifie avec lsblk.

6️⃣ Où utiliser nice : sauvegardes · cron · wp-cli

Ajoutez nice aux tâches longues mais pas urgentes. La compression d'une sauvegarde sollicite à la fois le CPU et le disque : on indique donc nice et ionice ensemble.

nice -n 19 ionice -c3 tar czf backup.tgz /home/example

Si une tâche déjà en cours ralentit le serveur, repérez son PID dans top puis augmentez sa valeur avec renice ; pour les tâches cron quotidiennes, placez nice devant la commande.

0 3 * * * nice -n 10 /usr/local/bin/backup.sh

Sur un serveur WordPress, si vous lancez de grosses tâches wp-cli comme un rechercher-remplacer ou la régénération des images avec nice -n 10, c'est php-fpm, qui traite les requêtes des visiteurs, qui obtient le CPU en premier quand il est occupé.

nice -n 10 wp media regenerate --yes

À l'inverse, n'augmentez pas la valeur nice de php-fpm ni du serveur web lui-même. Si les processus qui répondent aux visiteurs cèdent leur place, les pages répondent plus lentement quand le CPU est occupé.

🔢 FAQ & contenus recommandés

Pour les processus normaux, top affiche PR comme 20 plus la valeur nice. Un processus lancé avec nice 5 est apparu avec PR 25 et NI 5, tandis que la colonne PRI de ps, calculée autrement, affichait 14 pour ce même processus.

nice ajoute la valeur indiquée à la valeur nice actuelle. [nice -n 5 nice -n 3 nice] affiche 8, contrairement à renice -n, qui fixe la valeur indiquée.

En ajoutant [Nice=] dans la section [Service] du fichier d'unité, vous fixez la valeur nice des processus lancés par ce service. Selon la documentation officielle de systemd.exec, elle va de -20 à 19.

🧭 Processus et planification : contenus recommandés 11 articles · 4 références
🗂️ Processus et planification
📄 Commande ps 📄 Commande top 📄 Commande nice sous Linux 📄 Commande kill 📄 Commande killall 📄 Arrière-plan & premier plan 📄 Commande uptime
📄 Configurer crontab
📋 WP CLI : installation et configuration 📄 WP-Cron(wp-cron.php) 📄 Trouver les compositions synchronisées : WP-CLI
📡 GNU Coreutils nice invocation 📡 renice(1) Linux manual page 📡 Block io priorities (documentation du noyau) 📡 sched_prio_to_weight (source du noyau)
Vérifier les processus avec la commande ps
Linux · Processus
Commande ps (commande de processus)
La commande ps affiche les processus en cours d'exécution.
Lire l'article →Contenu actuel
Commande TOP sous Linux : interface en ligne de commande (CLI)
Linux · Processus
Commande top sous Linux (vérifier l'utilisation du CPU et de la mémoire)
La commande Linux top affiche l'état du système en cours d'exécution, et son nom signifie table of processes.
Lire l'article →Contenu actuel
Commande nice sous Linux : barres mesurées de nice 0 contre nice 0·10·19 se disputant un cœur de CPU pendant 5 secondes
Linux · Processus
Commande nice sous Linux : définir la priorité, la modifier avec renice et mesurer la part de CPU en cas de concurrence
La commande nice de Linux définit la valeur nice (de -20 à 19), qui détermine la part de CPU qu'un programme cède aux autres lorsqu'il s'exécute.
Lire l'article →Contenu actuel
Interface en ligne de commande Linux (Command Line Interface, CLI)
Linux · Processus
Commande kill sous Linux [kill -9 PID]
La commande Linux kill met fin à un processus en cours.
Lire l'article →Contenu actuel
Vérifier la version de la commande Linux killall
Linux · Processus
Commande killall sous Linux : installation, utilisation et options
La commande Linux killall met fin d'un coup à des processus donnés.
Lire l'article →Contenu actuel
Image Linux
Linux · Processus
Arrière-plan (background) & premier plan (foreground) sous Linux : contrôler les processus
Sous Linux, les processus fonctionnent selon deux modes : arrière-plan (background) et premier plan (foreground).
Lire l'article →Contenu actuel
Bases de Linux (The Linux Foundation)
Linux · Charge du serveur
Commande uptime sous Linux (temps de fonctionnement du serveur & charge moyenne sur 1, 5 et 15 minutes)
La commande Linux uptime indique la charge moyenne du système et depuis combien de temps le serveur fonctionne.
Lire l'article →Contenu actuel

ℹ️ Mention d'affiliation
Le contenu de ce site contient des liens d'affiliation. Lorsqu'un visiteur achète un produit ou un service via l'un de ces liens, le site perçoit une commission du vendeur. Le montant payé par l'acheteur(il baisse lors des promotions ↓), lui, n'augmente pas. Les prix, remises et stocks indiqués correspondent à la date de rédaction et peuvent différer ; vérifiez-les donc auprès du vendeur avant d'acheter. Les produits sont choisis et évalués selon nos propres critères, et les commissions n'influencent ni l'ordre de présentation ni le contenu des évaluations.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Prouvez que vous êtes humain : 4   +   8   =