Je viens dinstaller la version 4.12 du noyau Linux sur Ubuntu 17.04 en utilisant ukuu (Ubuntu Kernel Update Utility https://doc.ubuntu-fr.org/ubuntu_kernel_upgrade_utility ).
Le fait est que lorsque je vérifie les planificateurs dE / S disponibles, je ne parviens pas à trouver le BFQ ni le Kyber I / O scheduler:
cat /sys/class/block/sda/queue/scheduler > noop deadline [cfq]
Alors comment utiliser lun des nouveaux programmateurs de cette version Linux?
Réponse
Je « ne suis pas dans Ubuntu, mais ce que jai fait dans Fedora peut vous aider.
BFQ est un blk-mq (Multi-Queue Block IO Queuing Mechanism), vous devez donc activer blk-mq au démarrage, modifier votre fichier / etc / default / grub et ajouter scsi_mod.use_blk_mq=1
à votre GRUB_CMDLINE_LINUX
, voici mon fichier grub, par exemple:
GRUB_TIMEOUT=3 GRUB_DISTRIBUTOR="$(sed "s, release .*$,,g" /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=false GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="quiet vt.global_cursor_default=0 scsi_mod.use_blk_mq=1" GRUB_DISABLE_RECOVERY="true"
Après cela, vous devez mettre à jour votre grub. Sur Fedora, nous devons utiliser sudo grub2-mkconfig -o /path/to/grub.cfg
, qui varie en fonction de la méthode de démarrage . Sur Ubuntu, vous pouvez simplement exécuter:
sudo update-grub
Redémarrez, et si vous obtenez ceci:
cat /sys/block/sda/queue/scheduler [mq-deadline] none
Votre noyau a probablement été compilé avec BFQ en tant que module , et cela peut également être le cas pour Kyber.
sudo modprobe bfq sudo cat /sys/block/sda/queue/scheduler [mq-deadline] bfq none
Vous pouvez lajouter au démarrage en ajoutant un fichier /etc/modules-load.d/bfq.conf
contenant bfq
.
Il est important de noter que lactivation de blk_mq rend impossible lutilisation dordonnanceurs non blk_mq, vous perdrez donc noop cfq et le non mq date limite
Apparemment, le système de planification blk_mq ne prend pas en charge les indicateurs dascenseur dans grub, les règles udev peuvent être utilisées à la place, avec en prime un contrôle plus granuleux.
Créez /etc/udev/rules.d/60-scheduler.rules
sil nexistait pas et ajoutez:
ACTION=="add|change", KERNEL=="sd*[!0-9]|sr*", ATTR{queue/scheduler}="bfq"
Comme indiqué ici si nécessaire, vous pouvez faire la distinction entre la rotationa l (HDD) et les périphériques non rotatifs (SSD) dans les règles udev utilisant lattribut ATTR{queue/rotational}
. Sachez que Paolo Valente, développeur BFQ, a souligné dans LinuxCon Europe que BFQ peut être un meilleur choix que les planificateurs noop
ou deadline
en termes des garanties de faible latence, ce qui fait un bon conseil de l’utiliser également pour les SSD.
Comparaison de Paolo: https://www.youtube.com/watch?v=1cjZeaCXIyM&feature=youtu.be
Enregistrez-le, puis rechargez et déclenchez udev rules
:
sudo udevadm control --reload sudo udevadm trigger
Commentaires
Réponse
À Réponse de RomuloPBenedetti :
Vous pouvez tester si le planificateur bfq est réellement disponible sur un appareil particulier en utilisant PROGRAM=="/bin/grep -E -q "(^|[[:space:]])bfq($|[[:space:]])" "$sys$devpath/queue/scheduler""
dans la règle udev.Cela remplacera effectivement DRIVERS=="sd|sr"
et ne se déclenchera tout simplement pas si on oublie scsi_mod.use_blk_mq=1
Trivia:
-
PROGRAM
– Exécute un programme pour déterminer sil y a une correspondance; la clé est vraie si le programme retourne avec succès; Si aucun chemin absolu nest indiqué, le programme devrait vivre dans / lib / udev. -
$sys
– Le point de montage sysfs (/sys
). -
$devpath
– Le chemin de développement de lappareil (/ devices / pci / …).
ACTION=="add|change", SUBSYSTEM=="block", DRIVERS=="sd|sr", ATTR{queue/scheduler}!="bfq", ATTR{queue/scheduler}="bfq"
Elle évite la correspondance de motifs avec les noms dappareils, ce qui rend la correspondance plus précise. ' ne correspondra pas aux périphériques de partition, car ils ' nont pas la " file dattente / scheduler " attribut.echo bfq > /sys/block/sda/queue/scheduler
en tant que root. (sudo na pas fonctionné pour moi dans Ubuntu 18.04) Cela devrait le rendre effectif immédiatement.