Présentation générale
Dans l’écosystème Linux, piloter avec précision les mécanismes d’ordonnancement et les priorités d’exécution constitue un levier indispensable pour garantir des temps de réponse minimaux sur les charges critiques. Ce guide pratique détaille l’exploitation de l’utilitaire chrt, fourni par la suite util-linux, afin d’appréhender et d’implémenter les algorithmes temps réel (SCHED_FIFO et SCHED_RR). À travers un atelier pas à pas sous Ubuntu, nous aborderons le déploiement des paquets requis, la manipulation dynamique des priorités de processus en tâche de fond et les méthodes d’inspection associées.
Inspection des politiques d’ordonnancement et plages de priorité disponibles
Avant de manipuler l’ordonnanceur, assurons-nous que notre système dispose des binaires nécessaires en installant ou mettant à niveau les paquets util-linux et procps.

Le programme chrt permet d’interroger et de modifier les attributs d’ordonnancement en temps réel associés aux threads du noyau.
L’argument -m fournit un inventaire complet des classes prises en charge par le noyau actif, accompagné des valeurs limites d’échelonnement admissibles.
⚙️ [Paramètres essentiels]
-m : Répertorie l’ensemble des politiques gérées ainsi que leurs bornes d’échelonnement (min/max).-p : Cible un identifiant de processus (PID) pour inspecter ou réassigner sa priorité.-f : Bascule le processus sous la politique temps réel premier entré, premier sorti (SCHED_FIFO).-r : Enclenche l’ordonnancement temps réel circulaire avec quantum de temps (SCHED_RR).-o : Rétablit l’ordonnancement conventionnel en temps partagé (SCHED_OTHER).-b : Configure le traitement par lots sans préemption agressive (SCHED_BATCH).-i : Relègue le thread au niveau des tâches de fond de très faible priorité (SCHED_IDLE).-d : Mobilise le modèle basé sur les échéances strictes (SCHED_DEADLINE).

Analyse de la politique par défaut d’un processus actif
Pour mener à bien nos manipulations sans perturber le système hôte, lançons un processus d’attente passif en tâche de fond pour une durée de 600 secondes à l’aide de sleep 600 &.

Afin de manipuler aisément cet identifiant lors des commandes suivantes, sauvegardons le PID de ce dernier travail en arrière-plan dans une variable shell via l’instruction TARGET_PID=$!.

L’état d’ordonnancement de notre cible peut être vérifié immédiatement à l’aide du commutateur chrt -p.
Le retour console confirme l’assignation du régime standard SCHED_OTHER (temps partagé CFS par défaut), assorti d’une priorité de base fixée à 0.

En exploitant les colonnes personnalisées de la commande ps via -o, examinons conjointement la classe d’ordonnancement (CLS), l’échelon temps réel (RTPRIO) et la priorité interne du noyau (PRI).
Comme attendu pour la classe standard TS (Time Sharing), le champ RTPRIO reste inactif (matérialisé par -) tandis que la priorité conventionnelle PRI affiche la valeur usuelle 19.

Transition vers les régimes temps réel SCHED_FIFO et SCHED_RR
Basculez le processus cible sous le régime FIFO en exécutant sudo chrt -f -p 50 $TARGET_PID, ce qui lui confère une priorité absolue de 50.
Modifier l’accès direct aux cycles CPU pouvant évincer les tâches système critiques, l’élévation de privilèges via sudo demeure obligatoire.

Contrôlez l’efficacité du changement en relançant chrt -p.
Le verdict confirme sans ambiguïté la prise en compte de la politique SCHED_FIFO et l’enregistrement du niveau d’urgence temps réel à 50.

Modifiez à présent le mode opératoire vers un modèle circulaire via sudo chrt -r -p 30 $TARGET_PID, tout en ajustant l’échelon de priorité à 30.
Contrairement au mode FIFO qui s’exécute sans interruption jusqu’à blocage, la variante SCHED_RR distribue équitablement le processeur par tranches de temps (time slices) prédéfinies entre threads de priorité équivalente.

Interrogez à nouveau le gestionnaire de processus via ps avec les commutateurs -o pour valider l’impact au niveau du sous-système de calcul.
La table affiche désormais le label RR pour la classe, un indicateur RTPRIO calé sur 30 et une priorité noyau recalibrée à 70 (reflétant la convention d’ordonnancement interne de Linux).

Démarrage direct en temps réel et libération des ressources
Pour initialiser un binaire d’emblée sous contrainte temps réel sans attendre son instanciation, lancez sudo chrt -r 25 sleep 300 &, appliquant directement le modèle SCHED_RR au niveau de priorité 25.
L’utilitaire chrt s’avère particulièrement polyvalent : au-delà de la reprogrammation à chaud, il orchestre nativement le lancement d’exécutables avec l’environnement d’ordonnancement voulu.

Passez en revue les instances actives à l’aide du filtre ps -eo pid,cls,rtprio,comm | grep '[s]leep'.
L’analyse confirme que notre premier thread ainsi que la nouvelle instance partagent tous deux la classe RR, opérant harmonieusement aux niveaux hiérarchiques respectifs de 30 et 25.

Terminez l’atelier en purgeant les tâches d’arrière-plan résiduelles à l’aide de l’enchaînement kill -9 $TARGET_PID && pkill -f 'sleep 300'.
Les deux processus d’essai sont immédiatement révoqués, restituant la machine hôte dans son état initial sans déchet mémoire.

Cette mise en pratique a mis en lumière la puissance de chrt pour superviser et gouverner les politiques d’ordonnancement temps réel au sein du noyau Linux.
Ces mécanismes offrent aux administrateurs un contrôle déterminant pour optimiser les traitements multimédias, les passerelles réseau ou tout composant exigeant une latence strictement bornée.