Anticipatory scheduling

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

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[1]. 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[2]. 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[3].

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

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[6]. 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[modifier | modifier le code]

Notes[modifier | modifier le code]

  1. (en) L'article de la première partie des merges du noyau 2.6.33 sur le site lwn.net: "2.6.33 merge window part 1"
  2. (en) Article de Sitaram Iyer, "The Effect of Deceptive Idleness on Disk Schedulers"
  3. (en) Le message d'Andrew Morton du 23 janvier 2003 sur la liste de diffusion LKML: 2.5.59-mm5
  4. (en) Le message d'Andrew Morton du 20 février 2003 sur la liste de diffusion LKML: "IO scheduler benchmarking"
  5. (en) Publication de Sitaram Iyer et Peter Druschel du 6 juin 2001: "Anticipatory scheduling: A disk scheduling framework to overcome deceptive idleness in synchronous I/O"
  6. (en) Extrait de la Linux kernel Documentation par Nick Piggin