第 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 应用程序来配置它。匹配所选设备并只为那些设备切换调度程序。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部