第 3 章 设置磁盘调度程序
磁盘调度程序负责对提交至存储设备的 I/O 请求进行排序。您可以通过几种不同方式配置调度程序:
- 使用 TuneD 设置调度程序,如使用 TuneD 设置磁盘调度程序 中所述。
-
使用
udev规则设置调度程序,如使用udev规则设置磁盘调度程序 中所述。 - 在运行中的系统上临时更改调度程序,如临时性 为特定磁盘 设置调度程序 中所述。
在 Red Hat Enterprise Linux 中,块设备只支持多队列调度。这可让块层性能针对使用快速固态驱动器(SSD)和多核系统进行正常扩展。
3.1. 可用磁盘调度程序 复制链接链接已复制到粘贴板!
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 层的每个 I/O 请求的延迟来实现延迟目标。您可以为读取配置目标延迟,如 cache-misses 和同步写入请求。此调度程序适用于快速设备,如 NVMe、SSD 或其他低延迟设备。
- 默认磁盘调度程序
- 块设备使用默认的磁盘调度程序,除非您指定了另一个调度程序。
具体来说,对于非易失性内存 Express (NVMe)块设备,默认调度程序为 none,红帽建议不更改它。
内核会根据设备类型选择默认磁盘调度程序。自动选择调度程序通常是最佳设置。如果您需要不同的调度程序,请使用 udev 规则或 TuneD 应用程序来配置它。匹配所选设备并只为那些设备切换调度程序。