第 3 章 设置磁盘调度程序
磁盘调度程序负责对提交至存储设备的 I/O 请求进行排序。您可以通过几种不同方式配置调度程序:
- 使用 TuneD 设置调度程序。
-
使用
udev设置调度程序。 - 临时更改正在运行的系统上的调度程序。
在 Red Hat Enterprise Linux 中,块设备只支持多队列调度。这可让块层性能针对使用快速固态驱动器(SSD)和多核系统进行正常扩展。
3.1. 可用磁盘调度程序 复制链接链接已复制到粘贴板!
选择适当的磁盘调度程序会显著影响系统性能、响应速度和 I/O 操作效率。评估每个调度程序的特征,以为您的特定工作负载和硬件选择最合适的选项。
Red Hat Enterprise Linux 支持以下多队列磁盘调度程序:
none- 实施第一出 (FIFO) 调度算法。它将请求合并到通用块层,并通过一个简单的最近缓存来合并。
mq-deadline尝试为来自请求到达调度程序的请求提供保证延迟。
mq-deadline调度程序将排队的 I/O 请求分为读取或写入批处理。之后,它会以增加的逻辑块寻址(LBA)顺序调度它们。默认情况下,读取批处理的优先级高于写入批处理,因为应用程序在读取 I/O 操作中获得块。处理批处理后,mq-deadline检查写入不足。然后,它会相应地调度下一个读取或写入批处理。此调度程序适用于大多数用例,特别是那些写入操作是异步的。
bfq以桌面系统和互动任务为目标。
bfq调度程序可确保任何单个应用程序都不会使用所有带宽。实际上,存储设备总是像它们处于空闲时一样进行响应。在其默认配置中,bfq注重提供最低延迟,而不是达到最大吞吐量。BFQ基于cfq代码。调度程序为每个进程分配一个扇区的预算,而不是为每个进程分配固定时间片段。在复制大型文件时,这个调度程序不适用于系统无响应。kyber- 调度程序通过在块 I/O 层中计算每个请求的延迟来实现延迟目标。您可以为读取配置目标延迟,如 cache-misses 和同步写入请求。此调度程序适用于快速设备,如 NVMe、SSD 或其他低延迟设备。
- 默认的磁盘调度程序
- 块设备使用默认的磁盘调度程序,除非您指定了另一个调度程序。
具体来说,对于 non-volatile Memory Express(NVMe)块设备,默认调度程序为 none,红帽建议不要更改它。
内核会根据设备类型选择默认磁盘调度程序。自动选择调度程序通常是最佳设置。如果您需要不同的调度程序,请使用 udev 规则或 TuneD 应用程序来配置它。匹配所选设备并只为那些设备切换调度程序。