Non sono su Ubuntu, ma quello che ho fatto in Fedora potrebbe esserti di aiuto.
BFQ è uno scheduler blk-mq (Meccanismo di accodamento IO a blocchi multi-coda), quindi è necessario abilitare blk-mq all'avvio, modificare il file / etc / default / grub e aggiungere scsi_mod.use_blk_mq=1
al proprio GRUB_CMDLINE_LINUX
, questo è il mio file grub, come un esempio:
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"
Successivamente, è necessario aggiornare grub. Su Fedora dobbiamo usare sudo grub2-mkconfig -o /path/to/grub.cfg
, che varia a seconda del metodo di avvio . Su Ubuntu, puoi semplicemente eseguire:
sudo update-grub
Riavvia e se ottieni questo:
cat /sys/block/sda/queue/scheduler
[mq-deadline] none
Probabilmente il tuo kernel è stato compilato con BFQ come modulo , e questo può valere anche per Kyber.
sudo modprobe bfq
sudo cat /sys/block/sda/queue/scheduler
[mq-deadline] bfq none
Puoi aggiungerlo all'avvio aggiungendo un /etc/modules-load.d/bfq.conf
file contenente bfq
.
È importante notare che abilitando blk_mq diventa impossibile utilizzare gli scheduler non blk_mq, quindi perderai noop cfq e la scadenza non mq
Apparentemente il sistema di pianificazione blk_mq non supporta i flag dell'ascensore in grub, al suo posto si possono usare le regole udev, con il vantaggio di offrire un controllo più dettagliato.
Crea /etc/udev/rules.d/60-scheduler.rules
se non esistesse e aggiungi:
ACTION=="add|change", KERNEL=="sd*[!0-9]|sr*", ATTR{queue/scheduler}="bfq"
Come indicato qui, se necessario, è possibile distinguere tra dispositivi rotazionali (HDD) e non rotazionali (SSD) nelle regole udev utilizzando l'attributo ATTR{queue/rotational}
. Essere consapevoli del fatto che Paolo Valente, BFQ sviluppatore, ha sottolineato in LinuxCon Europa, che BFQ può essere una scelta migliore rispetto al noop
o deadline
scheduler in termini di garanzie a bassa latenza, ciò che rende un buon consiglio di usarlo per gli SSD troppo.
Confronto di Paolo: https://www.youtube.com/watch?v=1cjZeaCXIyM&feature=youtu.be
Salvalo, ricarica e attiva udev rules
:
sudo udevadm control --reload
sudo udevadm trigger