计算一个硬盘的IOPS – 我做错了什么?

所以我知道没有标准的方式来计算一个硬盘驱动器的IOPS,但从我读过的所有东西看来,其中一个最准确的公式是:
IOP / ms = + {旋转延迟} +({块大小} / {数据传输速率})

每毫秒IOs或者我一直在读的书叫做“磁盘服务时间”。 旋转等待时间也以毫秒为单位计算一次旋转的一半。

这是从EMC的“信息存储和pipe理”一书中拿出来的,这个可靠的来源是错误的。

把这个公式付诸实践考虑这个希捷数据表 。

我将计算ST3000DM001型号的IOPS,块大小为4kb:

  • 寻求平均(写)= 9.5 – 我将测量写入的IOPS
  • 主轴转速= 7200rpm
  • 平均数据速率= 156MB / s

所以我的variables是:

  • 寻找时间 = 9.5ms
  • 旋转潜伏期 =(0.5 /(7200rpm / 60))= 0.004s = 4ms
  • 数据速率 = 156MB / s =(0.156MB / ms / 0.004MB)= 39

9.5ms + 4ms + 39 = IO / ms 52.5

1 /(52.5 * 0.001)= 19 IOPS

19这个驱动器的IOPS显然是不正确的,所以我做错了什么?

你的基本公式是合理的,但是这个

数据速率= 156MB / s =(0.156MB / ms / 0.004MB)= 39

不可能是正确的。 您需要确定读取块所需的时间,这将是

4 KB / 156 MB/s = 2.5 * 10^-5s ( ~ 0.025 ms) 

由于这个值是微不足道的,所以你可以忽略它,因为你的经验法则近似,计算看起来像1 / 0.0135 ,导致约74 IOPS。

你为什么包括数据速率?

1 /(0.004 + 0.0095)〜74 IOPS。