Une exploration technique approfondie des Schedulers Linux et de la gestion des ressources

Schedulers Linux: Explication Technique

Dans le monde du système d'exploitation Linux, la gestion des processus est une composante fondamentale de la performance du système. Les schedulers ou ordonnanceurs, jouent un rôle crucial dans ce cadre. Nous allons passer en revue les différentes options disponibles pour les schedulers, ainsi que la façon d'ajuster les priorités des processus avec nice et renice. Ensuite, nous explorerons comment surveiller l'utilisation des ressources d'E/S.

Les schedulers sont des composants du noyau Linux qui gèrent la répartition des processus sur les processeurs du système. Il existe trois principaux types de schedulers dans le noyau Linux : Completely Fair Scheduler (CFS), Deadline Scheduler, et NOOP Scheduler.

1. Completely Fair Scheduler (CFS)

CFS est l'ordonnanceur par défaut du noyau Linux. Il utilise une mesure appelée "vruntime", qui est le temps pendant lequel un processus a été autorisé à s'exécuter sur le CPU. Les processus avec le "vruntime" le plus faible sont exécutés en premier.

Pour vérifier si CFS est votre ordonnanceur par défaut, utilisez la commande suivante :

cat /sys/block/{le disque concerné}/queue/scheduler

Et pour le définir comme ordonnanceur par défaut :

echo cfq | tee /sys/block/{le disque concerné}/queue/scheduler

2. Deadline Scheduler

Deadline Scheduler est conçu pour les systèmes temps réel ou pour les applications qui nécessitent des réponses dans un délai précis.

Pour le définir comme ordonnanceur par défaut :

echo deadline | tee /sys/block/{le disque concerné}/queue/scheduler

3. NOOP Scheduler

NOOP Scheduler est une simple file d'attente FIFO qui est souvent utilisée pour les systèmes de stockage qui n'ont pas de coût de recherche d'E/S, comme les disques SSD.

Pour le définir comme ordonnanceur par défaut :

echo noop | tee /sys/block/{le disque concerné}/queue/scheduler

Renicing et Priorité d'E/S

Renicing

La commande renice permet de modifier la priorité d'un processus. Par exemple, pour diminuer la priorité d'un processus avec un PID spécifique :

renice +5 -p {PID}

Priorité d'E/S

ionice est une commande utilisée dans les systèmes d'exploitation de type Unix, comme Linux, pour contrôler la priorité d'accès au disque de chaque processus. Cette commande permet de manipuler les priorités d'E/S (entrée/sortie) de ces processus, ce qui peut être particulièrement utile pour optimiser la performance du système.

L'ordonnanceur d'E/S du noyau Linux a trois classes de priorité :

  • I/O en temps réel (Real Time, -c1) : Cette classe est attribuée aux processus qui doivent avoir un accès prioritaire aux ressources d'E/S. Les processus en temps réel sont toujours servis en premier.
  • Best-effort (Effort optimal, -