linux io storage stack之我的理解

出自:https://www.thomas-krenn.com/de/wikiDE/images/e/e0/Linux-storage-stack-diagram_v4.10.png

一、block层

block层在加入了blk-mq之后,发生了很大的变化。由于blk-mq的加入,在smp中能够有效利用多硬件队列的储存设备的高并发特性,之前io performance瓶颈在于储存设备,随着pci-e ssd的出现,瓶颈转移到了linux kernel中,kernel中由于存在锁的争用,导致开销非常大,严重影响了io performance,具体可以参考:https://lwn.net/Articles/552904/和http://kernel.dk/blk-mq.pdf。blk-mq通过多软件队列解决了这个问题:每个cpu(非ht出来的cpu)分配一个软件队列,同时每个软件队列对应一个block层硬件队列(block层的概念),block层硬件队列再map到存储外设的硬件dispatch队列。这样的话,就消除了锁的争用,提高performance。

随着blk-mq的加入,对kernel代码的影响主要是3个方面:1)nvme等block下层驱动可以进行简化。一些功能可以替换成blk-mq层的实现,比如软件队列到硬件队列的map,trequest分配时使用的tag的维护。2)block层上层使用block层api方式发生改变。通过blk_mq_make_request进入到blk-mq进行bio的处理,同时也绕过了io schduler。3)block层本身的变化。主要包括blk-mq io scheduler的加入,dm和multi path的修改。

二、


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值