85 votes

Sélection d'un planificateur d'E / S Linux

J'ai lu qu'il est soi-disant possible de changer le I/O scheduler pour un périphérique particulier sur un noyau en cours d'exécution par l'écriture dans /sys/block/[disque]/file/planificateur. Par exemple je peux voir sur mon système:

anon@anon:~$ cat /sys/block/sda/queue/scheduler 
noop anticipatory deadline [cfq]

que la valeur par défaut est complètement fair queuing planificateur. Ce que je me demande si il est possible d'utiliser en incluant tous les quatre planificateurs dans mon noyau personnalisé. Il semblerait qu'il n'y a pas beaucoup d'intérêt à avoir plus d'un planificateur compilé à moins que le noyau est assez intelligent pour choisir le bon planificateur pour le matériel correct, précisément 'noop' planificateur de pour flash drives et les uns les autres pour un disque dur traditionnel.

Est-ce le cas?

110voto

ephemient Points 87003

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.

7voto

MarkR Points 37178

L'objectif du support du noyau est de pouvoir les essayer sans redémarrer. vous pouvez ensuite exécuter des charges de travail de test via le système, mesurer les performances, puis en faire le standard pour votre application.

Sur le matériel moderne de niveau serveur, seul le noop semble être utile. Les autres semblent plus lents dans mes tests.

-3voto

user1198224 Points 138

Le noyau Linux ne modifie pas le planificateur d'E / S au moment de l'exécution. A ce jour, il est uniquement possible de modifier le planificateur d'E / S manuellement.

Le planificateur par défaut est choisi au démarrage en fonction du contenu du fichier situé dans /linux-2.6 /block/Kconfig.iosched .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X