-
Notifications
You must be signed in to change notification settings - Fork 13
distri_021
(本wiki中的相关链接:Linux Block Layer中的I/O队列和调度器)
用于替代原先的块IO调度层,用多Queue代替单Queue,并且取消了电梯调度算法。
(本wiki中的相关链接:Linux NVMe Driver、 从内核空间到用户空间(FUSE / VFIO / SPDK / DPDK ...))
内核NVMe驱动中,SQ和CQ是多个,和核数相等。而SPDK中,用了SPDK库的每个用户应用都有一个专门的SQ,有SPDK从内核空间映射绑定给应用。类似SPDK,NVMeDirect[1]也是在用户空间管理多个Queue。
[1] H. Kim, Y.-S. Lee, and J.-S. Kim, “NVMeDirect: A User-space I/O Framework for Application-specific Optimization on NVMe SSDs,” Hotstorage, 2016.
(本wiki中的相关链接:关于virtio)
当前QEMU的virtio-blk-data-plane支持了multiple virtqueue。但QEMU的存储IO还并不是真正的multi-queue,因为不支持IOthread始终是一个,这比较难以修改,因为QEMU的block layer不易改成multiple IOthread,比如qcow2不是线程安全的,强行修改可能会导致qcow2更新数据时出现元数据不一致的情况[1]。但是,在raw格式上应该是没有问题的,虽然主线QEMU没有这个功能,但有一篇论文[2]做了这个工作。
[1] https://www.youtube.com/watch?v=KVD9FVlbqmY
[2] T. Y. Kim, D. H. Kang, D. Lee, and Y. I. Eom, “Improving performance by bridging the semantic gap between multi-queue SSD and I/O virtualization framework,” IEEE Symp. Mass Storage Syst. Technol., vol. 2015–Augus, 2015.
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
Wiki: wiki.jcix.top ~聚沙成塔~ Blog: blog.jcix.top