根据 phoronix 的说法,BFQ 在性能上的表现是基本超出预期的。而根据 CNX Software 的说法,最新内核中 BFQ 的性能再度得到了提升,同时还解决了很多问题。

于是我们尝试启用一下这个玩意好了。

photo_2019-08-15_11-52-24.jpg

首先查看你的目前 scheduler 是啥:

cat /sys/block/sda/queue/scheduler

如果你和我一样是 NVME 设备的话,那就得用:

cat /sys/block/nvme0n1/queue/scheduler

你可以看到结果一般是:

mq-deadline [none]

所以着手启用吧!

根据 Ubuntu Wiki,修改 Grub 文件可以开启额外的调度支持:

vim /etc/default/grub

增加:

scsi_mod.use_blk_mq=1

然后更新你的 Grub

sudo update-grub 

之后修改规则:

vim /etc/udev/rules.d/60-schedulers.rules

增加:

# set deadline scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0",ATTR{queue/scheduler}="deadline"
# set bfq scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"
# set mq-deadline scheduler for non-rotating nvme-disks
ACTION=="add|change", KERNEL=="nvme[0-9]n1", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="bfq"

重启电脑就可以看到了:

选区_176.png

如果你使用了 TLP 的话,最好在 TLP 的配置里也修改一下:

vim /etc/default/tlp

参考:
NVME Enable BFQ Scheduler at boot?