Red Hat 弃用了 Red Hat Enterprise Linux 7 中可用的 I/O 调度程序,并引入了四个新的 I/O 调度程序,如下所示,

运行以下命令检查 RHEL8 和 RHEL9 中可用的调度程序

# dmesg | grep -i scheduler

[    0.507104] io scheduler mq-deadline registered

[    0.507105] io scheduler kyber registered

[    0.507123] io scheduler bfq registered

1. none实现先进先出(FIFO)调度算法。它通过一个简单的最后命中缓存在通用块层合并请求。

2. mq-deadline 尝试从请求到达调度程序的点为请求提供有保证的延迟。 mq-deadline 调度程序将排队的 I/O 请求分类为读取或写入批处理,然后按递增的逻辑块寻址logical block addressing (LBA) 顺序调度它们执行。默认情况下,读取批处理优先于写入批处理,因为应用程序更有可能阻塞读取 I/O 操作。在 mq-deadline 处理一个批处理之后,它会检查写入操作已经耗尽处理器时间的时间,并根据需要安排下一个读取或写入批处理。

此调度程序适用于大多数用例,尤其是那些读操作比写操作更频繁的用例。

3. kyber 它适用于快速设备。调度程序调整自身以实现延迟目标。您可以为读取和同步写入请求配置目标延迟。

4. bfq针对桌面系统和交互式任务。 bfq 调度程序确保单个应用程序永远不会使用所有带宽。实际上,存储设备总是像空闲一样响应。复制大文件时系统不会无响应。在其默认配置中,bfq 专注于提供最低延迟而不是实现最大吞吐量。

bfq 基于 cfq 代码。它不会在固定的时间片内将磁盘授予每个进程,而是分配以扇区数衡量的预算给进程。