Anticipatory scheduling
# Anticipatory scheduling

L'Anticipatory scheduling («ordonnancement anticipé» en français), est un algorithme d'ordonnancement pour les entrée-sorties sur les disques durs d'un ordinateur qui était présent dans le noyau Linux jusqu'à la version 2.6.32. Son but est d'optimiser l'utilisation de ceux-ci en anticipant les opérations synchrones de lecture.

« L'oisiveté trompeuse » (deceiptive idleness en anglais) est une situation où un processus semble avoir terminé une opération de lecture sur disque dur alors qu'il est en train de traiter des données en préparation d'une autre opération de lecture. Cette situation provoque une réaction normale de l'ordonnanceur d'E/S qui va alors traiter les opérations d'E/S d'un autre processus, et cela se fait au détriment des performances des lectures synchrones et augmente la charge de travail. L'ordonnancement anticipé surmonte cela en effectuant une courte pause (quelques millisecondes) après une opération de lecture, en anticipant sur une autre requête de lecture proche dans le temps.

L'ordonnancement anticipé apporte une amélioration importante de l'utilisation des disques pour certaines utilisations. Dans certaines situations, le serveur web Apache connaît une hausse de performance de 71 % lorsque le noyau utilise l'ordonnancement anticipé.

L'ordonnanceur à anticipation du noyau Linux peut en revanche réduire les performances avec les disques utilisant la technologie TCQ, les disques à hautes performances, ainsi que les grappes RAID matérielles. L'ordonnanceur à anticipation fut l'ordonnanceur d'E/S par défaut du noyau Linux, de la version 2.6.0 à la version 2.6.18, à partir duquel il a été remplacé par l'ordonnanceur CFQ.

## Autres ordonnanceurs d'E/S

* CFQ
* Deadline scheduler
* NOOP scheduler
