Menu Close

第 10 章 设置磁盘调度程序

磁盘调度程序负责对提交至存储设备的 I/O 请求进行排序。

您可以通过几种不同方式配置调度程序:

注意

在 Red Hat Enterprise Linux 9 中,块设备只支持多队列调度。这可让块层性能针对使用快速固态驱动器(SSD)和多核系统进行正常扩展。

Red Hat Enterprise Linux 7 和更早的版本中的传统、单一队列调度程序已被删除。

10.1. 可用磁盘调度程序

Red Hat Enterprise Linux 9 中支持以下多队列磁盘调度程序:

none
实施第一出(FIFO)调度算法。它将请求合并到通用块层,并通过一个简单的最近缓存来合并。
mq-deadline

尝试为请求到达调度程序的时间点提供有保证的延迟。

mq-deadline 调度程序将排队的 I/O 请求分为读取或写入批处理,然后调度它们以增加逻辑块寻址(LBA)顺序执行。默认情况下,读取批处理的优先级高于写入批处理,因为应用程序更有可能阻止读 I/O 操作。在 mq-deadline 批处理后,它会检查写操作在处理器时间耗尽的时间,并根据情况调度下一个读取或写入批处理。

这个调度程序适用于大多数用例,特别是那些写入操作是异步的。

bfq

以桌面系统和互动任务为目标。

bfq 调度程序可确保任何单个应用程序都不会使用所有带宽。实际上,存储设备总是像它们处于闲置时一样进行响应。在其默认配置中,bfq 注重提供最低延迟,而不是达到最大吞吐量。

BFQ 基于 cfq 代码。它不会为每个进程授予固定时间片段,但会为进程分配一个扇区数衡量的 budget(预算)

在复制大型文件时,这个调度程序不适用。

kyber

调度程序调整自身,以通过计算提交到块 I/O 层的每个 I/O 请求的延迟来实现延迟目标。您可以为读取配置目标延迟,如 cache-misses 和同步写入请求。

此调度程序适用于快速设备,如 NVMe、SSD 或其他低延迟设备。