异步化IO

背景:

          随着存储计算分离的项目进一步推进,IO异步成为了一件必须要做的事情了。随着存储内容分发到远端集中存储(盘古集群),IO lateny平均也需要300-400us,更不用说对于长尾访问,网络抖动,IO集中的情况,有时IO Latency可达到1ms。IO异步化是我们改进延时的一种方式。

实现过程:

          总体采用的异步回调的方式,但是由于应用层,与底层存储用的并不是相同线程池,这个过程意味着多次线程切换。同时呢,为了防止“异步地狱”等问题,我们也自己封装了promise和future,使得回调逻辑可以看得更加清楚。

一些问题:

        在调用异步回调的函数中,对于很多栈变量的生命周期都不好把控,暂时是通过ptr承接栈变量,控制好变量的生命周期,但是之前很多小的栈变量都通过new的方式产生,对性能必然有些影响。

      同步接口的实现,是否通过异步wait来实现。如果不通过异步来实现,同时保留两套接口,那么代码可读性和可维护性就会差很多。但是用异步实现同步,可能会造成死锁的问题。同时同步也可能会有性能的下降,对于全内存等场景,其实是不可接受的。

      异步IO之后,底层IO吞吐上去了,但是不可避免的IODepth也上去了,也造成了单次IO Latency延时的增长。尽管总延时会有下降。但是延时和吞吐都好,才是最好的。

 

除了这些之外,总体来说,要上上下下改好多接口呀。。。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值