xen multi page io ring

今年的Xen summit里,intel介绍了io性能调优方面的两个点,一个是multi page io ring,  更大的max_segment,另一个per-block lock。

里面说的vm里面的io 性能损耗比原生的差了26%, 通过第一个点的调优,能够提高17%,加上第二点的优化,能提高到24%,这样的话,vm里面的io性能几乎认为没损耗。

ctrix在今年3月份的时候给了个patch,实现了multi page io ring,这个patch主要的工作是对blkback, blkfront的修改,并没有包括下游路劲的修改。

先来说下io ring在vm io这块的作用和主要代码逻辑

VM的blkfront里面,会去申请一个shared io ring, 目前是一个page size, 通过grant_table做授权,告诉host,怎样拿到这个shared io ring.

host的blkback会去根据这个读到的grant_table授权项去做映射,把io ring映射到host addr。

io ring的结构包括了req, rsp, 简单的生产者消费者模式,blkfront是req的生产者,rsp的消费者,blkback是req的消费者,rsp的生产者,分别有着各自的id,来记录当前的生产消费记录。

blkfront通过往shared io ring里面去扔req, blkback从里面拿出req, 经过处理交给下游。这就是我们通常看到的io ring, citrix的patch也是针对这部分逻辑进行的修改。

在下游,还有另外一个io ring存在,做着类似的工作, 那就是blktap -> tapdisk2

tapdisk2通过打开一个字符设备blktap,并且mmap到字符设备上,从而获得了blktap设备里面创建的shared io ring的地址

所以如果要想改实现multi page io ring, 除了citrix的patch,还需要一个blktap和tapdisk2的patch

看了citrix patch,会发现使用了multi page io ring,就需要使用到多个授权项 ring_ref[], 在ring_ref的消息通知上会有点小小的麻烦。

后面先把citrix的patch做backport, 并完成blktap,tapdisk2的patch,再考虑下inel提出的那几点改进如更大的max_segment

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值