SSD固件技术

多队列绑核与中断聚合:NVMe 并行调度在 Gen4 平台上的取舍

2026-07-03NVMe多队列 / 队列绑核 / 中断聚合

以 CORE 7 系列 J750/J770 的 1,500 KIOPS 随机读目标为参照,拆解队列数量、绑核方式、doorbell 写入与中断聚合窗口之间的相互制约。

每条命令只有不到一微秒

NVMe 规范允许最多 65535 对 SQ/CQ,但一块盘实际能用满多少队列,取决于主控内部有几条彼此独立的命令处理流水线。CORE 7 系列的 J750 与 J770 走 PCIe 4.0 x4 链路,4KB 随机读的规划目标是 1,500 KIOPS,平均下来每条命令的端到端处理预算不足 0.7 µs。在这个尺度上,任何跨核共享的资源——一把 FTL 映射表的锁、一段被多核轮询的完成队列内存——都会直接变成吞吐天花板,而不是可以留到后期调优的细节。

三个真正的开销点

第一个是 doorbell。主机每提交一批命令都要写一次 doorbell 寄存器,高 IOPS 下这些 MMIO 写会占用上行事务,固件侧必须按批读取 SQ 条目而不是逐条响应。第二个是映射表访问的局部性,随机负载的 LBA 分布决定映射页命中率,绑核策略若把相邻 LBA 分散到不同核,缓存局部性就被打散。第三个是完成路径:中断聚合能显著降低主机 CPU 的中断次数,但每一次聚合都在等待窗口里累加延迟。

QD1 延迟与高队列深度吞吐的对立

J750/J770 规划的 QD1 平均延迟指标是读 65 µs、写 10 µs,写侧的数字来自掉电保护支撑下的回写缓存。这组数字只有在聚合窗口接近关闭时才成立。工程上不追求单一配置通吃:元数据与日志这类延迟敏感负载用极短窗口,而顺序读 7,400 MB/s、顺序写 5,500 MB/s 的带宽型负载允许更激进的聚合。固件把两种模式做成运行时可切换的 QoS 档位,而不是编译期常量。

当前验证状态

调度相关测试跑在内部工程平台 JH-E4U-C 上,两款产品仍处于产品定义/EVT 阶段,上面这些数字都是规划目标而非实测承诺。当前重点是把队列数、绑核方式与聚合窗口三者做成正交的可配置项,使不同服务器平台上的实测结果能够直接回灌到默认参数表,而不必每次改动固件重新编译。

キーワード
NVMe多队列队列绑核中断聚合doorbellQoS档位J750J770企业级SSD