Indispensable quand votre serveur Linux ralentit ! Maîtrisez la priorité des processus avec la commande nice

Présentation générale

Dans un environnement où les ressources du serveur sont limitées, l’exécution de tâches en arrière-plan ou de scripts de traitement par lots intensifs peut ralentir le temps de réponse des services critiques. Dans cet article, nous explorerons des conseils pratiques pour configurer la priorité d’ordonnancement du CPU et préserver la stabilité du système à l’aide des commandes nice et renice.

1. Vérification de la priorité des processus (NI/PR) et configuration de l’environnement de surveillance htop

Installez les paquets indispensables htop et procps pour les exercices pratiques de surveillance de la priorité des processus.

apt-get update -qq && apt-get install -y htop procps

La commande ps permet de vérifier les informations détaillées ainsi que la valeur de priorité des processus actuellement en cours d’exécution sur le système.
Dans les résultats affichés, NI correspond à la valeur nice réglable par l’utilisateur, et PRI indique la priorité réelle attribuée par l’ordonnanceur du noyau.
⚙️ [Options principales]

-e : Sélectionne et affiche tous les processus en cours d’exécution sur le système.
-o : Définit un format de sortie personnalisé pour les colonnes à afficher (pid, ni, pri, comm, etc.).
-u : Filtre et affiche uniquement les processus appartenant à un utilisateur spécifique.
-p : Interroge uniquement les processus correspondant au PID (identifiant de processus) spécifié.
-f : Affiche une liste au format complet incluant tous les détails des processus.

ps -eo pid,ni,pri,comm | head -n 15

2. Exécuter une tâche en arrière-plan avec une priorité basse à l’aide de la commande nice

Créez un répertoire de travail temporaire et déplacez-vous à cet endroit afin de générer et de gérer en toute sécurité les fichiers de test nécessaires à la manipulation.

mkdir -p /tmp/nice_demo && cd /tmp/nice_demo

Lancez une tâche de génération de fichier volumineux en arrière-plan (&) en réduisant sa priorité avec la commande nice, en lui attribuant une valeur nice de 10 afin de céder l’utilisation des ressources CPU.

nice -n 10 dd if=/dev/urandom of=/tmp/nice_demo/sample.dat bs=1M count=100 &

Associez la commande ps à grep pour vérifier le PID du processus dd en cours d’exécution ainsi que la valeur nice (NI) réellement appliquée, afin de confirmer qu’elle correspond à ce qui était prévu.

ps -eo pid,ni,comm | grep dd

3. Modifier en temps réel la priorité d’un processus en cours d’exécution avec la commande renice

Pour tester la modification de priorité en temps réel, lancez un processus sleep configuré pour attendre 300 secondes en arrière-plan (&).

sleep 300 &

Enregistrez dans la variable d’environnement TARGET_PID l’identifiant du dernier processus lancé en arrière-plan à l’aide de la variable spéciale $!.

TARGET_PID=$!

Vérifiez la valeur nice actuelle (NI) du processus cible avec la commande ps, et constatez qu’il s’exécute avec la valeur par défaut 0.

ps -p $TARGET_PID -o pid,ni,comm

Utilisez la commande renice pour modifier la valeur nice du processus cible déjà en cours d’exécution à 15, réduisant ainsi sa priorité.
La sortie confirme que l’ancienne priorité (old priority 0) a bien été remplacée par la nouvelle priorité (new priority 15).

renice 15 -p $TARGET_PID

Interrogez à nouveau le processus cible avec la commande ps pour vérifier que la valeur nice (NI) de 15 a été prise en compte immédiatement.

ps -p $TARGET_PID -o pid,ni,comm

Une fois l’exercice terminé, forcez l’arrêt du processus de test (kill -9) afin de libérer les ressources du système.

kill -9 $TARGET_PID

4. Attribution d’une priorité élevée (nice négatif) avec les privilèges root et points d’attention

Afin d’appliquer une valeur nice négative (-5), inaccessible à un utilisateur standard, lancez en arrière-plan (&) un processus avec une priorité augmentée en utilisant les privilèges d’administration sudo.
Un processus auquel est attribuée une valeur nice négative bénéficie d’une priorité d’exécution supérieure lors de l’ordonnancement CPU, lui permettant ainsi d’obtenir une part accrue des ressources système.

sudo nice -n -5 bash -c ’echo “High priority process running” && sleep 5’ &

Affichez les processus en cours d’exécution à l’aide de la commande ps pour vérifier que la valeur nice (NI) du processus cible (sleep) a bien été fixée à -5.
Dans le résultat, vous pouvez confirmer que, contrairement aux processus standards par défaut (0), une valeur nice négative (-5) est appliquée, traduisant un fonctionnement à priorité élevée.

ps -eo pid,ni,comm | grep -E ‘sleep|bash’ | tail -n 5

Nous avons passé en revue la manière d’ajuster la priorité des processus à l’aide de la commande nice, une méthode très utile lorsque votre serveur Linux ralentit.
Lorsque les ressources du serveur viennent à manquer, appliquez des priorités adaptées à la situation pour maintenir un système plus stable et plus fluide.