Chapitre 4.4 - Priorités et Nice Values
Objectifs d'Apprentissage
À la fin de ce chapitre, vous serez capable de:
- Comprendre les priorités des processus
- Utiliser nice values
- Changer les priorités avec nice et renice
- Comprendre le scheduler Linux
Qu'est-ce que la Priorité?
La priorité d'un processus détermine son accès au CPU. Plus la priorité est élevée, plus le processus obtient de temps CPU.
Nice Values
Échelle
Nice values: -20 à +19
- -20: Priorité la plus élevée (root seulement)
- 0: Priorité par défaut
- +19: Priorité la plus basse
Règle:
- Plus bas = plus prioritaire
- Plus haut = moins prioritaire
Voir la Priorité
# Avec ps
ps -o pid,ni,comm
ps aux | head
# Colonne NI = Nice value
# Colonne PRI = Priorité réelle (calculée)
# Avec top
top
# Colonne NI affiche nice value
Changer la Priorité
nice - Au Démarrage
# Démarrage avec priorité basse
nice -n 10 commande
nice -n +10 commande # Même chose
# Démarrage avec priorité élevée (root)
sudo nice -n -10 commande
# Vérifier
ps -o pid,ni,comm | grep commande
renice - Processus Existant
# Changer priorité d'un processus
renice 10 PID
# Par utilisateur
sudo renice 10 -u user1
# Par groupe
sudo renice 10 -g developers
# Par processus et enfants
sudo renice 10 -p PID
Exemples:
# Processus gourmand en CPU → priorité basse
renice 15 $(pidof backup_script)
# Processus important → priorité élevée (root)
sudo renice -10 $(pidof critical_app)
Scheduler Linux (CFS)
Completely Fair Scheduler
Le scheduler Linux utilise les nice values pour équilibrer le temps CPU:
Fonctionnement:
- Plus bas nice = plus de temps CPU
- Équité entre processus de même priorité
- Prend en compte le temps déjà utilisé
Processus Temps Réel
chrt - Temps Réel
Pour processus nécessitant garantie de temps:
# Voir les politiques
chrt -m
# Définir politique FIFO
sudo chrt -f 50 commande
# -f: FIFO
# 50: Priorité (1-99)
# Définir politique Round-Robin
sudo chrt -r 50 commande
# Changer processus existant
sudo chrt -f -p 50 PID
Politiques:
- SCHED_FIFO: First In First Out
- SCHED_RR: Round Robin
- SCHED_OTHER: Normal (CFS)
Attention: Processus temps réel peuvent monopoliser le CPU!
Exemples Pratiques
Scénario 1: Backup de Nuit
# Lancer backup avec priorité très basse
nice -n 19 backup_script.sh &
# Ne perturbera pas les autres processus
Scénario 2: Processus Critique
# Augmenter priorité d'un processus important
sudo renice -10 $(pidof database_server)
# Obtiendra plus de temps CPU
Scénario 3: Équilibrage
# Plusieurs processus, équilibrer
renice 5 $(pidof app1)
renice 5 $(pidof app2)
renice 5 $(pidof app3)
# Tous avec même priorité
Monitoring des Priorités
top/htop
# Voir nice values
top
# Colonne NI
# Trier par priorité
# Dans top: appuyer sur 'r' puis entrer PID
ps avec Priorité
# Voir nice et priorité
ps -eo pid,ni,pri,comm
# Trier par priorité
ps -eo pid,ni,pri,comm --sort=-pri
Résumé
Dans ce chapitre, vous avez appris:
Nice values: -20 (élevé) à +19 (bas), 0 par défaut
Changer: nice (démarrage), renice (existant)
Scheduler: CFS équilibre selon nice values
Temps réel: chrt pour garanties temps réel
Monitoring: ps, top pour voir priorités
Pratique: Ajuster selon importance processus
Prochaines Étapes
Chapitre 4.5: Processus et Ressources
Chapitre 4.6: Jobs et Tâches en Arrière-Plan
Chapitre créé le: Décembre 2024