所以我知道没有标准化的方法来计算 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。