Comme l'a documenté /usr/src/linux/Documentation/block/switching-sched.txt
, le I/O scheduler sur un périphérique de bloc peut être modifiée lors de l'exécution. Il peut y avoir un temps de latence que le précédent planificateur de demandes sont vidées avant de mettre le nouveau planificateur de l'utiliser, mais il peut être changé sans problèmes, même lorsque l'appareil est soumis à une utilisation intensive.
# cat /sys/block/hda/queue/scheduler
noop deadline [cfq]
# echo anticipatory > /sys/block/hda/queue/scheduler
# cat /sys/block/hda/queue/scheduler
noop [deadline] cfq
Idéalement, il y aurait un seul programmateur pour satisfaire tous les besoins. Il ne semble pas exister encore. Le noyau n'a souvent pas assez de connaissances pour choisir le meilleur planificateur pour votre charge de travail:
-
noop
est souvent le meilleur choix pour mémoire adossés à des périphériques en mode bloc (p. ex. disques virtuels) et d'autres non-support rotatif (flash) où essayer de reprogrammer le I/O est un gaspillage de ressources
-
deadline
est un léger planificateur qui tente de placer une limite sur le temps de latence
-
cfq
tente de maintenir le système à l'échelle de l'équité de la bande passante e/S
La valeur par défaut est anticipatory
pendant une longue période, et il a reçu beaucoup de tuning, mais il a été retiré dans 2.6.33 (début 2010). cfq
devient la valeur par défaut de certains, tout à l'heure, que sa performance est raisonnable et de l'équité est un bon objectif pour les systèmes multi-utilisateurs (et même de simples postes de travail d'utilisateur). Pour certains scénarios -- les bases de données sont souvent utilisés à titre d'exemples, car ils ont tendance à ont déjà leur propre planification et de modèles d'accès, et qui sont souvent les plus importantes de service (alors, qui se soucie d'équité?) -- anticipatory
a une longue histoire d'être accordable pour de meilleures performances sur ces charges de travail, et deadline
très rapidement transmet toutes les demandes via le périphérique sous-jacent.