Não estou no Ubuntu, mas o que fiz no Fedora pode ajudá-lo.
O BFQ é um scheduler blk-mq (Multi-Queue Block IO Queuing Mechanism), então você precisa ativar o blk-mq no momento da inicialização, editar seu arquivo / etc / default / grub e adicionar scsi_mod.use_blk_mq=1
ao seu GRUB_CMDLINE_LINUX
, este é o meu arquivo grub, como exemplo:
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"
Depois disso, você deve atualizar seu grub, se eu não estiver errado, no Ubuntu é:
sudo update-grub
Reinicie, e se você conseguir isso:
cat /sys/block/sda/queue/scheduler
[mq-deadline] none
Provavelmente seu kernel foi compilado com BFQ como um módulo , e este também pode ser o caso do Kyber.
sudo modprobe bfq
sudo cat /sys/block/sda/queue/scheduler
[mq-deadline] bfq none
Você pode adicioná-lo no momento da inicialização adicionando um arquivo /etc/modules-load.d/bfq.conf
contendo bfq
.
É importante notar que habilitar o blk_mq torna impossível usar planejadores não blk_mq, então você perderá noop cfq e o prazo não mq
Aparentemente, o sistema de agendamento blk_mq não está suportando sinalizadores de elevador no grub, as regras do udev podem ser usadas no lugar, com um bônus de oferecer um controle mais granulado.
Crie /etc/udev/rules.d/60-scheduler.rules
se ele não existir e adicione:
ACTION=="add|change", KERNEL=="sd*[!0-9]|sr*", ATTR{queue/scheduler}="bfq"
Como apontado aqui , se necessário, você pode distinguir entre dispositivos rotacionais (HDDs) e não-rotacionais (SSDs) em dev regras usando o atributo ATTR{queue/rotational}
. Esteja ciente de que Paolo Valente
, BFQ
developer, apontou na LinuxCon Europe que o BFQ pode ser uma escolha melhor do que NOOP
ou DEADLINE
em termos de garantias de baixa latência, o que aconselha a usá-lo também em SSDs.
Comparação de Paolo: link
Salve e recarregue e acione udev rules
:
sudo udevadm control --reload
sudo udevadm trigger