Block multi-queue
目录
blk-mq属于Linux Storage Stack中的Block Layer。
在如今的低延迟、高吞吐的新型存储设备下,原有的为HDD实现的单队列I/O框架成为了存储系统的瓶颈。单队列I/O框架一方面锁竞争导致其多核扩展性较差,同时会带来远程内存访问的问题,另外也无法充分利用如今支持多硬件队列的高性能存储设备,如SSD的优势。因此blk-mq框架提出了多软件队列-多硬件队列的I/O模型。首先每个核一个软件队列,提升了软件队列一层的扩展性(可以各自进行请求调度、聚合),然后不同的软件队列映射到不同的硬件队列中,充分利用硬件中的并行I/O能力。
传统单队列框架存在的问题
现在的多队列框架
TODO: 目前硬件队列和软件队列的映射关系是如何确定的?有什么限制吗?
一些研究
- blk-mq 存在这样的问题:Software Queue只能对应一个Hardware Queue,这样子的话,在单个core上同时运行延迟敏感型应用和吞吐敏感型应用时,吞吐敏感型应用会把队列阻塞住,产生Head of Line现象,导致延迟敏感型应用的延迟表现非常糟糕。在这样的背景下,blk-switch[1]优化了Software Queue和Hardware Queue的对应关系:每个应用类别有自己的Software Queue,对于吞吐敏感型应用,还可以将自己的请求转发到别的核上的Hardware queue来处理。
参考资料
- kernel docs
- SYSTOR’13 Linux Block I/O
- Multi-queue 架构分析
- Linux Multi-Queue Block IO Queueing Mechanism (blk-mq) Details
- High Performance Storage with blk-mq and scsi-mq
相关文献
[1] J. Hwang, M. Vuppalapati, S. Peter, and R. Agarwal, “Rearchitecting Linux Storage Stack for µs Latency and High Throughput,” presented at the 15th {USENIX} Symposium on Operating Systems Design and Implementation ({OSDI} 21), 2021, pp. 113–128 [Online]. Available: https://www.usenix.org/conference/osdi21/presentation/hwang. [Accessed: 23-Jul-2021]
提到本笔记的相关内容
OSDI'21 存储类文章
在OSDI’21的Storage Track中,Session Chairs是:Dushyanth Narayanan和 Gala Yadgar。Dushyanth Narayanan是微软Holographic Storage Device for the Cloud项目和FaRM项目中的Senior Principal Researcher(高级首席研究员)。Holographic Storage(全息存储)看起来是下一代的归档型存储,FaRM项目则和RDMA、分布式一致性有关。Gala Yadgar是来自以色列理工大学的副教授,看个人介绍也是一个纯粹做存储系统的学者。