在存储领域,IOPS也被称为Throughput(吞吐量),即每秒钟的I/O数量,如果知道每个I/O的平均大小,那么就可以算出这些I/O总共产生了多大的数据量,即Bandwidth(带宽)。因此,IOPS * I/O size = Bandwidth。
下面这张图显示了VNX(EMC的中端存储)的MAX IOPS = 20w,MAX Bandwidth = 12GB/s,根据公式:
IOPS * I/O size = Bandwidth ->
20w * 4KB / 1024(MB) /1024(GB) = 0.7629GB/s,带宽连1GB/s都没到,为什么?
提示:这里A假设i/o size = 4KB是合理的,因为在存储领域有个不成文的规定,只要以IOPS来描述,那么就代表是小I/O(<32KB),以Bandwidth来描述,那就是大I/O(>32KB)。
你可以假设 IOPS 是用4KB I/O算的,但你不能假设带宽也是用 4KB I/O 来算的,所以乘以 4KB 来算带宽是错的。如果你乘以64KB,那答案就很接近了(12.207GB/s)。
有人会疑问,根据下图,带宽不是与 IOPS 成反比的吗?也就是说,当I/O是 64KB 的时候,IOPS就不可能达到20w啦,所以乘以20w也是不合理的。
这张图有个前提,那就是对Response Time有一定要求。解释下:为什么VNX只能支持20w IOPS? 而不是25w? 测试人员必然是定了一个阈值,一旦超越了这个阈值就不能提升IOPS了。如果这个阈值是Response Time就很好理解了。假设采用【4KB,随机】I/O测试,此类I/O通常是OLTP这种应用产生的,而这种应用对Response Time的要求相对较高。于是测试人员就设置阈值 Response Time = 20ms,然后开始用测试软件生成 I/O workload,当IOPS达到20w时,可能Response Time恰好是20ms,再多就超过20ms了。为什么要以Response Time为阈值,因为它是最能说明生产系统是否能正常工作的一个参数。假设测试人员继续提升IOPS到25w,此时Response Time 或许 = 40ms,即便VNX的CPU、I/O模块、内存等组件依然有余量,但40ms的Response Time对于一个OLTP系统来讲已经是不可接受的了,那这多出的5w IOPS又有什么意义呢?
同理,如果用64K测试,同样Response Time = 20ms,那么必然是达不到20w IOPS的。但不要忘记了,吃带宽的应用,比如备份、OLAP、视频流等,它们对Response Time的要求可没 OLTP 那么高,可能100ms都是可以接受的。如此一来,测试人员就可以提升阈值Response Time = 100ms,从而提升IOPS,就有可能达到20w,因为Response Time的要求变了。