Question Qu'est-ce que cela signifie quand Linux n'a pas de planificateur d'E / S


J'ai quelques machines virtuelles exécutant l'image Ubuntu basée sur le nuage 14.04-1 version LTS. Je voulais voir les performances IO de différents ordonnanceurs IO sur la VM, alors je suis allé à /sys/block/<drive>/queue/scheduler sur le système d'exploitation invité pour modifier le planificateur d'E / S. Habituellement, il devrait y avoir cfq, deadline, ou noop choisir. Mais ce que j'ai vu c'est none. Cela signifie-t-il que Canonical a supprimé le planificateur d'E / S dans l'image en nuage ou le planificateur none voici le renommé noop planificateur? et que se passe-t-il si nous n'avons pas de planificateur d'E / S dans le système? Toutes les demandes io ont été directement envoyées à l'hôte dans l'ordre FIFO?

Merci d'avoir fait la lumière!


5
2018-05-20 15:45


origine


Votre serveur fonctionne-t-il sous l'hyperviseur KVM? - mvillar
Dans la plupart des cas, aucun ou aucun opérateur en tant que planificateur ne convient aux ordinateurs virtuels, car la planification est déjà effectuée au moins une couche en dessous, au niveau du noyau de l'hyperviseur. - Spooler


Réponses:


De ce wiki de Debian:

Planificateur d'E / S basse latence

(Cette étape n'est pas nécessaire pour les SSD utilisant le protocole NVMe au lieu de SATA, qui contournent le planificateur d'E / S traditionnel et utilisent le blk-mq module à la place.)

Le planificateur d'E / S par défaut met en file d'attente les données afin de minimiser les recherches sur les disques durs, ce qui n'est pas nécessaire pour les disques SSD. Ainsi, utilisez le "deadline" Un planificateur garantissant que les transactions en masse ne ralentissent pas les petites transactions sysfsutils et

echo "block/sdX/queue/scheduler = deadline" >> /etc/sysfs.conf

(ajustez sdX en fonction de votre SSD) redémarrez ou

echo deadline > /sys/block/sdX/queue/scheduler

Donc, la réponse est: none n'est pas un alias pour noop. none signifie "le planificateur n'est pas utilisé".


5
2017-11-20 16:29



Je ne sais pas comment la citation vous amène à votre conclusion que noop n'est pas none. Pourriez-vous élaborer? - hot2use
Comme je le sais, noop prend encore quelques décisions de planification (comme la fusion de demandes), tandis que None signifie aucun du tout. - Ha Son Hai


Il semble que sur les noyaux> = 3.13 none n'est pas un alias de noop plus. Il est montré quand le blk-mq Cadre I / O est en cours d'utilisation; cela signifie un contournement complet des anciens ordonnanceurs, comme blk-mq (pour le moment) aucun ordonnanceur à sélectionner.

Sur les noyaux précédents, none est vraiment un alias mal documenté pour noop. Voir ici pour plus de détails.


13
2018-05-20 17:25



Voir une autre réponse pour la même question ici. - Siu Ching Pong -Asuka Kenji-
Il semble que sur les noyaux> 3.13 none s'affiche lorsque le blk-mq I / O Framework est en cours d'utilisation. Alors oui, avec de tels noyaux, none signifie un contournement complet des anciens ordonnanceurs, comme blk-mq n'a pas du tout de programmateurs à sélectionner. J'ai mis à jour ma réponse. - shodanshok


La réponse acceptée est incorrecte. None n'est pas un alias pour noop.

Aucun simplement parce qu'aucun programmateur n'est en cours d'utilisation. Les SSD utilisant le protocole NVMe au lieu de SATA contournent le planificateur d'E / S traditionnel.


3
2017-09-27 14:58



@ MichaelHampton: S'il vous plaît voir ma réponse ici, et La réponse de Sheridp ici. - Siu Ching Pong -Asuka Kenji-


Les machines virtuelles invitées disposent de périphériques d’E / S virtuels fournis par l’hyperviseur. Par conséquent, la planification réelle du périphérique d'E / S est effectuée par le noyau de l'hyperviseur. Les invités transmettent directement toutes les E / S du périphérique à l'hyperviseur sans planification.


2
2017-09-27 19:30