Aller au contenu principal

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