我在教程中看到了不同的 IO 调度程序,例如 cfq、noop,但是当我在 Linux 上测试时,我没有看到它们。
$ cat /sys/block/sda/queue/scheduler
[mq-deadline] none
$ uname -r
5.13.0-27-generic
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.3 LTS
Release: 20.04
Codename: focal
我想知道我是否可以做更多事情来查看更多调度程序。任何想法?
更新:
根据建议,我看到以下 IOSCHED 值
$ grep IOSCHED /boot/config-5.13.0-27-generic
CONFIG_MQ_IOSCHED_DEADLINE=y
CONFIG_MQ_IOSCHED_KYBER=m
CONFIG_IOSCHED_BFQ=m
CONFIG_BFQ_GROUP_IOSCHED=y
此外,还有两个模块/lib/modules
:
$ ls /lib/modules/5.13.0-27-generic/kernel/block/
bfq.ko kyber-iosched.ko
当我加载模块时,我在列表中看不到 bfq。
$ cat /sys/block/sda/queue/scheduler
[mq-deadline] none
$ sudo modprobe kyber-iosched bfq
$ cat /sys/block/sda/queue/scheduler
[mq-deadline] kyber none
这是正确的输出吗?
答案1
在大多数发行版内核中,都可以使用其他调度程序,但需要加载它们;例如
sudo modprobe kyber-iosched
sudo modprobe bfq
将加载 Kyber 和 BFQ I/O 调度程序(请参阅block/Kconfig.iosched
了解详细信息),然后应该可以选择它们:
$ cat /sys/block/sda/queue/scheduler
[mq-deadline] kyber bfq none
查看内核文件 ( )的内容/lib/modules/$(uname -r)/kernel/block
和设置。IOSCHED
.config
/boot/config-$(uname -r)