计算单个 HDD 的 IOPS - 我做错了什么?

计算单个 HDD 的 IOPS - 我做错了什么?

所以我知道没有标准化的方法来计算 HDD 的 IOPS,但从我读过的所有内容来看,最准确的公式之一如下:
IOP/ms = + {旋转延迟} + ({块大小} / {数据传输速率})

也就是每毫秒的 IO 数,或者我读的书上说的“磁盘服务时间”。旋转延迟也是按毫秒为单位计算的旋转次数的一半。

这是从 EMC 的书籍“信息存储和管理”中摘录的 - 可以说是一个相当可靠的来源,对吧?

将这个公式付诸实践,考虑一下希捷数据表

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

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

所以我的变量是:

  • 寻道时间= 9.5毫秒
  • 旋转潜伏期= (.5 / (7200rpm / 60)) = 0.004秒 = 4毫秒
  • 数据速率= 156MB/秒 = (0.156MB/毫秒 / 0.004MB) = 39

9.5毫秒+4毫秒+39=IO/毫秒52.5

1 / (52.5 * 0.001) = 19 IOPS

该驱动器的 19 IOPS 显然不正确,那么我做错了什么?

答案1

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

数据速率 = 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。

答案2

为什么要包括数据速率?

1 /(0.004 + 0.0095)~74 IOPS。

相关内容