关于IO时延你被骗了多久?

转载 2015年07月08日 22:38:48


每秒执行1000IO,平均每个IO的执行耗费了1000ms/1000IOPS=1ms,所以每个IO的平均时延就是1ms,天经地义,这有什么不对呢?

假设A发送IOBAB之间的路径上有多个处理模块,比如,应用同步调用POSIX接口比如read()后进入阻塞态,后续执行路径进入内核态,首先进入VFS模块来查出IO的符号底层承载实体,比如是某个文件,如果是默认的buffer io则进入page cache管理模块搜索cache,未命中或者用了dio模式,则会继续进入FS查询出块地址,继而进入块层,这一层有软raid、多路径、远程复制、lvm等模块,如果对应的目标并没有纳入这些模块,则继续往下进入io scheduler,最后到scsi协议栈,在经历scsi设备驱动、scsi协议栈核心层、host驱动之后,io请求被发送到host控制器,走出主机到外部网络,最后还要经历一系列的外部网络协议、部件,最终到达磁盘,返回数据要经历相反的过程,从而被应用受到,这一去一回所耗费的时间,是很可观的,这段时间就是IO的时延。

从应用到磁盘,这段路径的时延几乎是固定的,不可变的,每个模块处理每个IO所耗费的时间基本固定,模块数量也固定一般不会绕过,所以这段时间可以被称为固定时延,每个IO的时延决不可能低于这个值。我们来假设这个固定时延是比如10ms

但是,如果应用到磁盘之间有多条路可以并发的话,事情就变的有意思了。如图所示,整个IO执行路径可以分为串行阶段和并行阶段。哪里可以并行呢?如果HBA有多条链路连接到switch,存储系统也有多条路连接到switch,图中存在4条通路,IOHBA驱动队列下发到存储的时候,一次可以下发4个而不是1个,也就是同一个时刻,会有4IO同时在路径上流动。假设在整个10ms的时间内,从HBA到存储控制器缓存会耗费4ms的话,那么如果同一个4ms内,有4IO同时被下发,那么4ms内会有4IO执行完毕,而不是只有1个,这样算来,每个IOHBA到存储缓存平均只耗费了1ms而不是原来的4ms。整条路径的IO时延便会从原来的10ms下降6ms+1ms=7ms。是否看出了猫腻?

单个IO从应用到存储的缓存到底耗费了7ms还是10ms?答案是依然耗费了10ms,单个IO的平均时延依然是10ms。应用层所关心的是单个IO从发出到返回耗费的时间。至于7ms,则是障眼法,其利用了空间维度上的并发性,属于空分复用手段,其提升的只能是吞吐量,而不是单个IO的时延的受益。并发越大,吞吐量越大。

优化真时延,只能减少IO路径上的模块数量,或者优化每个模块的处理时间。NVMe就是这么干的,直接把SCSI协议栈割掉,采用轻量级协议栈,降低真时延。此外,提升吞吐量方面,NVMe协议采用了多个发送和完成队列,对应多个核心,多核心同时执行,空分复用,再加上底层Flash设备的并发度非常高,同一时刻每个芯片均可以执行一个或者多个IO,提升并发度,提升吞吐量。此外,新版的Linux内核的块层队列也被替换为多队列,从更顶层就开始并发,进一步提升吞吐量。

如果将并发阶段的假时延称为“可变时延”的话,那么,单个IO的时延应该=固定时延+可变时延×并发度,这才是真时延。而不少厂商在实际公布的结果中并没有×并发度,让人误以为时延很牛,其实压根不是那回事。下次你再碰到厂商的销售售前向你忽悠时延的时候,大可以问一下他,你这个参数是真时延还是假时延?我保准你问10个人9个被你问倒,咋样,出逼格了吧?

跟着冬瓜哥学习存储知识,保持逼格,永不过时,学到的都是你自己的。本文算是个饭前开胃菜,本周下半周瓜哥会发一篇超级大餐,请留好你的胃口。

转载地址 http://mp.weixin.qq.com/s?__biz=MzAwNzU3NzQ0MA==&mid=209278369&idx=1&sn=7749ac30973791946d0d2fae5513e49b#rd

相关文章推荐

系统磁盘IO性能参数解释

再好的算法、实现。最终还是要来进行IO 使用的是传统的机械硬盘,存储大数据时还行,但是数据库内容获取就实在是差到一个境界了。特此进行一番探索:     磁盘 性能: 在了解磁盘 I/...

iostat和iowait详细解说--查看磁盘瓶颈

iostat和iowait详细解说 %iowait并不能反应磁盘瓶颈 iowait实际测量的是cpu时间: %iowait = (cpu idle time)/(all cp...

磁盘IO满负荷性能分析

磁盘IO满负荷性能分析   2011-06-26 22:30:59|  分类: linux优化 |举报 |字号 订阅 磁盘IO满负荷性能分析(一)     ...
  • haiross
  • haiross
  • 2015年01月27日 16:50
  • 5756

SQL Server 和HBA 卡 队列深度

SQL Server 和HBA 卡 队列深度

时延、IOPS、带宽等词具体是个神马意思?

剪辑自: http://www.violin-memory.com/blog/the-fundamental-characteristics-of-storage/Storage for DBAs: ...
  • BaiWfg2
  • BaiWfg2
  • 2016年10月25日 17:24
  • 632

我竟然被骗了,原来我也是个好人

我竟然被骗了,原来我也是个好人 作者:小王子    撰写日期:2011.10.29          现在开始进入正题啦!国庆在山东待了几天最后还是要回学校了,在临走的那个晚上喝了很多的56度的...

有些事我们被骗了快20年

1、小时候看课本说月球上能看到长城 ——事实上如同人从50米外的距离看一根头发丝…… 2、几个科学家小时候的故事 牛顿同志和苹果的故事 —— 关于牛顿和他的苹果是伏尔泰编的,据...

zencart刷淘宝信誉 被骗了 多情自古空余恨

zencart刷淘宝信誉 坑爹啊 这个是标题党 不要点击
  • zhlgen
  • zhlgen
  • 2013年07月03日 16:51
  • 432

给大家一个举报骗子QQ的软件,再也不怕qq上被骗了

一些骗子仗着自己有点头脑,到处去坑蒙拐骗,一不小心就容易掉进他们的圈套,真是可恶至极。        小编这里给大家带来一款举报骗子QQ的神器,10分钟最低可以举报1000次,让骗子无处遁形,就让腾讯...

全世界32条谣言 你被骗了多少

知道我OUT了,希望更OUT的可以看见 全世界32条谣言 你被骗了多少 1、小时候看课本说月球上能看到长城 ——事实上如同人从50米外的距离看一根头发丝…… 2、几个科学家小时候的故事 牛顿同志和苹果...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于IO时延你被骗了多久?
举报原因:
原因补充:

(最多只允许输入30个字)