BFQスケジューラを有効にして使用する方法は?

BFQスケジューラを有効にして使用する方法は?

私はUkuu(Ubuntuカーネルアップデートユーティリティ)を使ってUbuntu 17.04にLinuxカーネルバージョン4.12をインストールしました。https://doc.ubuntu-fr.org/ubuntu_kernel_upgrade_utility)。

問題は、利用可能なI / Oスケジューラを確認するとBFQまたはKyber I / Oスケジューラが見つからないことです。

cat /sys/class/block/sda/queue/scheduler
> noop deadline [cfq]

それでは、今回のLinuxリリースの新しいスケジューラの1つをどのように使用しますか?

ベストアンサー1

私は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、カイバーも同様です。

sudo modprobe bfq
sudo cat /sys/block/sda/queue/scheduler
[mq-deadline] bfq none

/etc/modules-load.d/bfq.confinclude を追加するだけですbfq

blk_mqを有効にすると、blk_mq以外のスケジューラの使用が無効になり、noop cfqおよびmq以外の期限が失われます。

明らかに、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での使用に最適な推奨事項でもあります。

パウロの比較:https://www.youtube.com/watch?v=1cjZeaCXIyM&feature=youtu.be

保存して再ロードしてトリガしますudev rules

sudo udevadm control --reload
sudo udevadm trigger

おすすめ記事