Deadline scheduler
# Deadline scheduler

Le Deadline scheduler («ordonnanceur sur échéance» en français) est un ordonnanceur d'E/S pour le noyau Linux écrit par Jens Axboe.

## Vue d'ensemble

Le but du Deadline scheduler est de tenter de garantir un temps de réponse à une requête. Cela est réalisé en imposant une échéance à chaque opération d'E/S afin d'éviter une pénurie de ressources. Il gère deux files FIFO d'échéances en plus des files de requêtes (une de lecture, une d'écriture). Les files d'échéances sont triées par date d'expiration des échéances, tandis que les files de requêtes sont triées par numéro de secteur sur le disque de stockage.

Avant de traiter une requête, l'ordonnanceur décide quelle file utiliser. Les files de lecture ont une plus forte priorité, car les processus sont le plus souvent en attente sur des opérations de lecture. Ensuite, l'ordonnanceur vérifie si la première requête dans la file d'échéances a expiré, et la traite le cas échéant. Sinon, l'ordonnanceur traite un groupe de requêtes de la liste choisie. Dans les deux cas, l'ordonnanceur traite également un groupe de requêtes suivant celle choisie dans la liste. Ceci permet d'assurer au mieux les temps de réponse aux requêtes, tout en groupant ces dernières suivant les secteurs des disques à atteindre.

Par défaut, les requêtes de lecture ont une échéance de 500 millisecondes, et les requêtes d'écritures ont 5 secondes.

La documentation du noyau conseille l'utilisation de cet ordonnanceur pour les systèmes de base de données, spécialement dans les cas de systèmes à disques de hautes performances ou d'utilisation de disques supportant la technologie TCQ.

## Réglage

Chaque file d'E/S possède un ensemble de réglages d'ordonnancement qui lui est associée. Ces réglages contrôlent le comportement de l'ordonnanceur d'E/S. Ces réglages sont accessibles dans : /sys/block/périphérique/queue/iosched en supposant que sysfs est monté sur /sys.

## Autres ordonnanceurs d'E/S

* CFQ
* Anticipatory scheduling
* NOOP scheduler

## Sources

* (en) A Deadline I/O Scheduler
* (en) Jens Axboe, "Deadline IO scheduler tunables", Linux kernel documentation, 11 novembre 2002.
