[论文解读] Improving Block-level Efficiency with scsi-mq
该论文评估了Linux内核的多队列块层(blk-mq)及其SCSI子系统重实现(scsi-mq)在生产级Lustre并行文件系统中对块级I/O效率的影响。使用搭载scsi-mq和缓存RAID存储阵列的3.18内核,研究显示SCSI写请求延迟降低了13.6%,CPU空闲时间增加了7倍,表明与传统的单队列块层相比,I/O效率和可扩展性有显著提升。
Current generation solid-state storage devices are exposing a new bottlenecks in the SCSI and block layers of the Linux kernel, where IO throughput is limited by lock contention, inefficient interrupt handling, and poor memory locality. To address these limitations, the Linux kernel block layer underwent a major rewrite with the blk-mq project to move from a single request queue to a multi-queue model. The Linux SCSI subsystem rework to make use of this new model, known as scsi-mq, has been merged into the Linux kernel and work is underway for dm-multipath support in the upcoming Linux 4.0 kernel. These pieces were necessary to make use of the multi-queue block layer in a Lustre parallel filesystem with high availability requirements. We undertook adding support of the 3.18 kernel to Lustre with scsi-mq and dm-multipath patches to evaluate the potential of these efficiency improvements. In this paper we evaluate the block-level performance of scsi-mq with backing storage hardware representative of a HPC-targerted Lustre filesystem. Our findings show that SCSI write request latency is reduced by as much as 13.6%. Additionally, when profiling the CPU usage of our prototype Lustre filesystem, we found that CPU idle time increased by a factor of 7 with Linux 3.18 and blk-mq as compared to a standard 2.6.32 Linux kernel. Our findings demonstrate increased efficiency of the multi-queue block layer even with disk-based caching storage arrays used in existing parallel filesystems.
研究动机与目标
- 评估Linux多队列块层(blk-mq)及其SCSI子系统集成(scsi-mq)在真实HPC存储环境中的性能优势。
- 评估blk-mq和scsi-mq带来的效率提升是否能在Lustre等生产级并行文件系统中转化为实际性能增益。
- 识别在使用缓存存储阵列处理高IOPS工作负载时,现有I/O栈中的可扩展性瓶颈。
- 研究多队列I/O对元数据和数据密集型文件系统工作负载中CPU利用率和延迟的影响。
- 探索scsi-mq在高可用、高吞吐量存储系统中对延迟敏感操作的改进潜力。
提出的方法
- 将Lustre文件系统移植到Linux 3.18内核,并通过自定义补丁启用scsi-mq和dm-multipath支持。
- 使用来自生产级Lustre文件系统的代表性I/O模式,测量块级I/O吞吐量和延迟。
- 通过采样堆栈跟踪对内核CPU使用率进行分析,以测量空闲时间并识别I/O路径中的性能瓶颈。
- 使用基于旋转介质的缓存RAID存储阵列,模拟HPC环境中常见的OST(对象存储目标)工作负载。
- 将基于旧版单队列块层(Linux 2.6.32)的结果与使用新多队列架构(Linux 3.18 + scsi-mq)的结果进行对比。
- 评估读写I/O工作负载,重点关注写延迟和CPU效率的改进。
实验结果
研究问题
- RQ1在真实HPC存储堆栈中,多队列块层(blk-mq)及其SCSI子系统实现(scsi-mq)在多大程度上降低了SCSI写请求延迟?
- RQ2在典型Lustre文件系统高I/O工作负载下,使用scsi-mq如何影响CPU利用率和空闲时间?
- RQ3当使用基于旋转介质的缓存存储阵列而非合成或SSD基准测试时,blk-mq和scsi-mq的性能提升是否依然可观测?
- RQ4尽管理论上多通道支持可提升并行性,为何SRP驱动中的多通道实现反而导致性能下降?
- RQ5在当前块层中,元数据操作(如恢复期间的日志重放)在多大程度上受I/O吞吐量和延迟的限制?
主要发现
- 与2.6.32内核中的传统块层相比,使用Linux 3.18内核搭配scsi-mq时,SCSI写请求延迟最高降低了13.6%。
- 在3.18内核中启用scsi-mq后,CPU空闲时间提高了7倍,表明I/O效率显著提升,CPU竞争明显减少。
- 即使在基于旋转介质的缓存存储阵列上,多队列块层仍表现出可测量的性能提升,这类硬件通常受I/O带宽限制。
- 尽管理论上多硬件队列可提升并行性,但SRP驱动中使用多通道反而导致性能下降,表明驱动设计与硬件并行性之间存在不匹配。
- 研究证实,传统块层的可扩展性受限于锁竞争、中断处理和缓存一致性问题,即使在真实的HPC存储工作负载下也是如此。
- 结果表明,元数据目标操作(如文件系统恢复期间的日志重放)可从低延迟、高吞吐量的I/O堆栈(如scsi-mq)中获得显著收益。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。