根据冬瓜哥两周前的那篇文章《IO时延你被骗了多久》(请进入公众号主页,点击右上角头像,进入后点击“查看历史消息”获取所有文章列表)中的结论,整条IO路径上,有些地方并发,有些地方串行,串行的地方虽然每次只能发送一条IO,但是只要处理速度够快,就不会拖慢并发的地方,就像一条高速路,并出10条慢速路的话,整体流量是匹配的。
那么,如何知道整条IO路径上的并发度呢?从底层倒是可以一层一层的算出来,比如,SSD上的Flash颗粒有多少个die,每个die有多少个plane,每个plane有多少个block,每个block同一时刻只能访问一个page,这就是最终的制约了,block间可以并行,plane、die,都可以并行,多个flash颗粒挂到同一个通道上,通道是串行的,但是如果速率足够高,多个flash颗粒间也可以并行。前端sata接口是串行的,但是速率也足够高。出了SSD,到了SATA或者SAS控制器,再去看一下控制器内部的并行处,然后到驱动,协议栈,上层,一路算下来,就可以知道并行度了,然后一段一段的计算出来。
但是,冬瓜哥有个更好的办法,这就像爱迪生把灯泡放到水里测出灯泡体积,而他的助手则使用微积分去算灯泡体积一样,后者虽然逼格高,但是已经无人喝彩。冬瓜哥算IO路径上并发度的方法就是,先确保系统中只有一个线程访问对应的底层存储系统,而且使用同步IO,也就是比如fio这种测试工具,将其worker数量设置为1,qd设置为1,io方式为sync。这样可以测出系统路径上的固有时延(这个概念请参考之前的文章)。然后,采用多个线程,比如8线程,同时QD加大,比如到32,测得此时系统的整体IOPS。然后,IOPS取倒数,测出假时延,然后用固有时延除以假时延,就可以测出当前IO路径上的等效并发数。之所以等效,是因为整体路径上有地方串行,有地方并行,有地方并行高,有地方并行低。
利用这种方式,就可以分分钟测出IO路径的整体等效并发度了。
本文转载须全文转载,包括二维码和所有图片文字,并注明出自 “ 大话存储 ” 公众号。长按识别二维码关注 “ 大话存储 ” 获取业界最高逼格的存储知识。 看了好的请点赞/转发/红包,平时群里发红包装逼,不如把红包猛烈的砸向冬瓜哥吧!冬瓜哥后续会有更多高逼格的东西出炉。大话存储,只出精品。
长按图片发红包:
支付宝扫码发红包:
长按扫码关注“大话存储”
强赠冬瓜哥真容:
(请注意,冬瓜哥不是西瓜哥,这是两个人,很多人给混淆了,冬瓜哥很早就叫冬瓜了,某菊花司的某人2年前参考鄙人昵称在业界混淆视听,现在以至于很多人认为大话存储为那人所著,其目的一开始就是在冬瓜哥离开某菊之后消除冬瓜哥在某菊和业界的影响力,菊花黑寡妇作风是改不了了,冬瓜哥有图为证当年某人是怎么搅混水的)