Linux I/O 调度器详解(上)
1. 多队列 I/O 调度器概述
在 Linux 系统中,单队列 I/O 调度器自内核 5.0 版本起已被弃用。尽管可以禁用多队列调度器并恢复使用单队列调度器,但最新内核版本默认采用多队列调度器。多队列调度器主要有以下四种:
- MQ - deadline
- Budget Fair Queuing (BFQ)
- Kyber
- None
这些调度器将 I/O 请求映射到多个队列,由分布在多个 CPU 核心上的内核线程处理。
2. MQ - deadline 调度器:保证服务开始时间
MQ - deadline 调度器,顾名思义,为 I/O 请求设定了服务期限。由于其面向延迟的设计,常用于对延迟敏感的工作负载。因其高性能,也被用于多队列设备。
2.1 主要目标
确保每个请求都有指定的服务开始时间,通过为所有 I/O 操作设置期限,防止请求被忽视。
2.2 使用的队列
- Sorted 队列 :该队列中的读写操作按要访问的扇区编号排序。
- Deadline 队列 :这是一个标准的先进先出 (FIFO) 队列,包含按截止时间排序的请求。为防止请求饥饿,调度器为读写请求分别使用不同的 Deadline 队列,并为每个 I/O 请求分配过期时间。
2.3 工作逻辑
- 调度器将每个 I/O 请求同时放入 Sorted 队列和
超级会员免费看
订阅专栏 解锁全文
940

被折叠的 条评论
为什么被折叠?



