私はUbuntuではありませんが、Fedoraでやったことがあなたを助けるかもしれません。
BFQはblk-mq(マルチキューブロックIOキューイングメカニズム)スケジューラです。したがって、起動時にblk-mqを有効にし、/ etc / default / grubファイルを編集してに追加するscsi_mod.use_blk_mq=1
必要がありますGRUB_CMDLINE_LINUX
。これは私のgrubファイルです。例:
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"
その後、grubを更新する必要があります。Fedoraでは使用する必要がありますがsudo grub2-mkconfig -o /path/to/grub.cfg
、これはブート方法によって異なります。Ubuntuでは、次を実行できます。
sudo update-grub
再起動し、これを取得した場合:
cat /sys/block/sda/queue/scheduler
[mq-deadline] none
おそらく、あなたのカーネルはモジュールとしてBFQでコンパイルされており、これはKyberにも当てはまります。
sudo modprobe bfq
sudo cat /sys/block/sda/queue/scheduler
[mq-deadline] bfq none
/etc/modules-load.d/bfq.conf
を含むファイルを追加することで、ブート時に追加できますbfq
。
blk_mqを有効にすると非blk_mqスケジューラーを使用できなくなるため、noop cfqと非mq deadlineが失われることに注意することが重要です。
どうやらblk_mqスケジューリングシステムはgrubでエレベーターフラグをサポートしていないようです。代わりに、udevルールを使用して、よりきめ細かな制御を提供することができます。
/etc/udev/rules.d/60-scheduler.rules
存在しない場合は作成し、追加します:
ACTION=="add|change", KERNEL=="sd*[!0-9]|sr*", ATTR{queue/scheduler}="bfq"
必要に応じてここで指摘したように、属性を使用してudevルールで回転(HDD)デバイスと非回転(SSD)デバイスを区別できますATTR{queue/rotational}
。BFQ開発者のPaolo ValenteはLinuxCon Europeで、BFQが低遅延の保証という点でスケジューラnoop
やdeadline
スケジューラよりも優れた選択肢であり、SSDでも使用することをお勧めしていることに注意してください。
Paoloの比較:https : //www.youtube.com/watch?v=1cjZeaCXIyM&feature=youtu.be
保存して、リロードしてトリガーしudev rules
ます:
sudo udevadm control --reload
sudo udevadm trigger