Pourquoi Ubuntu 16.04 définit-il tous les planificateurs d'E / S de lecteur sur «date limite»?

17

Je viens d'installer Xubuntu 16.04-64bit sur une deuxième partition sur mon ordinateur portable. J'ai remarqué que cela semblait parfois un peu lent, j'ai donc vérifié quel planificateur d'E / S il utilisait pour ce lecteur, qui s'avère être deadlinepour tous les lecteurs. J'ai quelques SSD et disques durs, donc je sais que la "date limite" est la meilleure pour les SSD et les cfqdisques durs.

J'ai démarré en 14.04 sur une autre partition et il utilise cfqpour les disques rotatifs et deadlinepour le SSD, comme il se doit. J'ai également vérifié /etc/udev/rules.dsi la version 14.04 utilisait une règle pour configurer le type de lecteur, mais elle n'était pas là, donc je suppose que le noyau le fait.

Je me demande donc si c'est un bug ou utilise-t-il "date limite" pour tout maintenant?

Mise à jour: Le commentaire que j'ai écrit sur /etc/udev/rules.d était une erreur. En fait, j'utilise une règle udev pour changer le planificateur (comme la réponse ci-dessous) en fonction du type de rotation depuis que j'ai commencé à utiliser un SSD, il y a quelques années. Je suppose que j'ai juste oublié ... de vieillir. Quoi qu'il en soit, l'une des références que j'ai utilisées était le wiki d'optimisation des disques SSD Debian .

Ne serait-ce pas une bonne idée s'il était inclus? Juste une suggestion!

curt54
la source

Réponses:

6

Avec la sortie de 14.04, le planificateur par défaut du noyau 3.13 est passé de CFQ à Deadline .

Il n'y a plus de noyau de serveur séparé et le sheduler CFQ n'est pas adapté à de nombreux scénarios d'utilisation de serveur, par exemple les délais d'expiration d'écriture KVM . Il y a même des régressions de performances sur le bureau avec des périphériques USB .

NGRhodes
la source
1
Merci pour la lecture, très éclairante! Le problème USB que j'ai souvent eu avec les cartes SD et avec la tablette Android de TWRP. Dans ce dernier, il se bloquerait à la fin pendant plusieurs minutes. Le problème KVM n'apparaît jamais sur mes invités VB car ils sont sur mon SSD w / Deadline.
curt54
32

L'équipe du noyau Ubuntu exécute régulièrement de nombreuses analyses de différentes charges de travail simulées sur différents systèmes de fichiers et planificateurs d'E / S pour se faire une idée du meilleur choix de planificateur d'E / S générique. La réponse générale est qu'il n'y a pas de choix parfait de planificateur d'E / S pour une configuration générique sur tous les différents types d'installations pour tous les différents types de supports. Les points saillants à retenir sont:

  1. Les systèmes sont en train de passer au SSD, donc aucun délai ou délai n'est préférable pour ceux-ci; noop a moins de temps processeur que l'échéance.

  2. CFQ vs Deadline est un appel difficile. CFQ permet une plus grande flexibilité. Cependant, nous avons constaté que pour une gamme plus large d'opérations d'E / S simulées, l'échéance offrait des latences plus faibles et un débit légèrement plus élevé que CFQ.

  3. Je compare régulièrement les noyaux (chaque test du noyau prend plus de 3 jours) pour une gamme de systèmes de fichiers et d'ordonnanceurs d'E / S. À partir de cela, et d'autres données assorties, nous essayons de prendre une décision éclairée sur le meilleur choix, voir:

http://kernel.ubuntu.com/~cking/fs-tests/

Il y a des avantages / inconvénients à tous les planificateurs d'E / S, donc toute valeur par défaut n'est pas parfaite et l'équipe du noyau Ubuntu est toujours prête à avoir une entrée dans le choix par défaut si des données et des raisons convaincantes nous montrent qu'il faut changer autrement.

Colin Ian King
la source
5
Nous sommes passés à l'utilisation de CFQ par défaut pour le noyau Ubuntu Zesty 4.10 et avons également activé le nouveau CONFIG_BLK_WBT_MQ (limitation de l'écriture différée en plusieurs files) car cela résout les problèmes d'écriture différée du cache sale avec des périphériques lents tels que les périphériques flash.
Colin Ian King
1
Allons-nous peut-être voir BFQ par défaut maintenant qu'il est dans le noyau 4.12?
JauntyDoe
Nous évaluerons cela pour 4.12 / 4.13, j'ai aussi fait des tests précoces avec kyber mais je les reverrai une fois 4.12 sorti cette semaine.
Colin Ian King
En principe, cette question concerne uniquement le noyau 16.04, mais elle revient toujours dans la recherche :-). Voici donc une mise à jour plus récente: Ubuntu est revenu à CFQ, correspondant à la valeur par défaut en amont, dans Ubuntu 17.04 (zesty) à 18.10 (cosmic) .
sourcejedi
1
Mise à jour supplémentaire: Linux a désactivé WBT lors de l'utilisation de CFQ ou BFQ (au moins par défaut), car il ne fonctionne pas bien ensemble. 2) Si vous souhaitez évaluer le problème résolu par WBT, je pense que vous devez être conscient que le problème varie selon les appareils (différents firmwares). Dans vos résultats de référence, je ne trouve même pas quel type d'appareil a été utilisé. 3) Je suis curieux de savoir ce que WBT résout. Si vous regardez la lettre d'accompagnement sur la v2 de l'ensemble de correctifs WBT, WBT est conçu pour gérer les écritures tamponnées sur flash rapide , qui peuvent avoir des files d'attente très profondes, et éviter de laisser les lecteurs affamés sur le même appareil.
sourcejedi
9

Je ne sais pas pourquoi les développeurs ont décidé de choisir deadlinecomme planificateur par défaut, c'est peut-être parce que la plupart des nouveaux ordinateurs sont livrés avec un SSD, sur lequel normalement les systèmes sont installés. Vous pouvez définir le planificateur manuellement de cette façon, au cas où vous ne l'auriez pas déjà installé ... installer gksu:

Ouvrez un terminal et exécutez:

sudo apt install gksu  

Exécutez ensuite cette commande:

gksudo gedit /etc/udev/rules.d/60-schedulers.rules  

Collez le texte suivant dans le fichier vide et enregistrez le fichier modifié.

# set cfq scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="cfq"

# set deadline scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"  

Redémarrez le système d'exploitation et vous utilisez maintenant les planificateurs optimaux pour les disques durs et SSD.

cl-netbox
la source
Oui, c'est ce que j'utilisais, selon ma mise à jour dans la question. Mais je pense que, comme il est courant aujourd'hui d'avoir les deux types de lecteurs, cette règle sera incluse dans toutes les distributions Linux.
curt54