Je ne suis pas dans Ubuntu, mais ce que j'ai fait à Fedora peut vous aider.
BFQ est un planificateur blk-mq (Multi-Queue Block IO Queuing Mechanism), vous devez donc activer blk-mq au démarrage, modifier votre fichier / etc / default / grub et l'ajouter scsi_mod.use_blk_mq=1
à votre GRUB_CMDLINE_LINUX
, c'est mon fichier grub, comme un 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 être le cas également pour Kyber.
sudo modprobe bfq
sudo cat /sys/block/sda/queue/scheduler
[mq-deadline] bfq none
Vous pouvez l'ajouter au démarrage en ajoutant un /etc/modules-load.d/bfq.conf
fichier contenant bfq
.
Il est important de noter que l'activation de blk_mq rend impossible l'utilisation d'ordonnanceurs non blk_mq, vous perdrez donc noop cfq et l'échéance non mq
Apparemment, le système de planification blk_mq ne prend pas en charge les indicateurs d'ascenseur dans grub, les règles udev peuvent être utilisées à la place, avec en prime d'offrir un contrôle plus granuleux.
Créez /etc/udev/rules.d/60-scheduler.rules
s'il n'existait pas et ajoutez:
ACTION=="add|change", KERNEL=="sd*[!0-9]|sr*", ATTR{queue/scheduler}="bfq"
Comme indiqué ici, si nécessaire, vous pouvez distinguer les périphériques rotatifs (HDD) et non rotatifs (SSD) dans les règles udev en utilisant l'attribut ATTR{queue/rotational}
. Sachez que Paolo Valente, développeur BFQ, a souligné dans LinuxCon Europe que BFQ peut être un meilleur choix que le noop
ou les deadline
planificateurs en termes de garanties de faible latence, ce qui est un bon conseil pour l'utiliser également pour les SSD.
Comparaison de Paolo: https://www.youtube.com/watch?v=1cjZeaCXIyM&feature=youtu.be
Enregistrez-le, rechargez et déclenchez udev rules
:
sudo udevadm control --reload
sudo udevadm trigger
ACTION=="add|change", SUBSYSTEM=="block", DRIVERS=="sd|sr", ATTR{queue/scheduler}!="bfq", ATTR{queue/scheduler}="bfq"
cela évite la correspondance des motifs avec les noms des appareils, ce qui rend la correspondance plus précise. Il ne correspondra pas aux périphériques de partition car ils n'ont pas l'attribut "queue / scheduler".Pour étendre la grande réponse de RomuloPBenedetti :
Vous pouvez tester si le planificateur bfq est réellement disponible sur un périphérique particulier en utilisant la
PROGRAM=="/bin/grep -E -q '(^|[[:space:]])bfq($|[[:space:]])' '$sys$devpath/queue/scheduler'"
règle udev. Cela remplacera effectivementDRIVERS=="sd|sr"
et ne se déclenchera pas si on a oubliéscsi_mod.use_blk_mq=1
Anecdotes:
PROGRAM
- Exécuter un programme pour déterminer s'il y a correspondance; la clé est vraie si le programme revient avec succès; Si aucun chemin absolu n'est donné, le programme devrait vivre dans / lib / udev.$sys
- Le point de montage sysfs (/sys
).$devpath
- Le chemin de développement du périphérique (/ devices / pci / ...).la source