IOPS 的含义与前提
IOPS(每秒输入输出操作数)统计的是单位时间内完成的 IO 请求数量,不做大小区分:一次 4KB 随机读与一次 1MB 顺序写都算一个 IO。因此 IOPS 高只说明请求处理得快,不代表搬的数据多。存储设备的能力还受队列深度约束:队列浅时并发不足,IOPS 上不去;队列深时 IOPS 提升但平均时延变长。所以规范的做法是把 IOPS 与 IO 大小、读写下比例、顺序随机比例、队列深度、时延分布一并给出,其中最关键的参考指标往往是特定负载下能达到的时延上限,而不是峰值 IOPS。
测量时必须说明的条件
| 条件 | 作用 | 忽略的后果 |
|---|---|---|
| IO 大小 | 决定是并发能力还是带宽能力受限 | 小 IO 与大 IO 结果不可比 |
| 读写比例 | 写涉及缓存、校验与垃圾回收 | 纯读结果会明显高估写密集场景 |
| 顺序随机比例 | 机械盘与闪存对此极度敏感 | 顺序结果无法代表数据库负载 |
| 队列深度 | 决定并发压力的大小 | 浅队列下测不出设备上限 |
| 时延分布 | 反映尾部时延与稳定性 | 平均值会掩盖长尾抖动 |
基本信息
| 计量单位 | 次每秒,常以千次(K)为单位表述 |
|---|---|
| 适用负载 | 小随机读写并发型负载,如数据库与虚拟化 |
| 不适用负载 | 大块顺序访问,此类应以带宽衡量 |
| 合理测法 | 固定其他变量,逐步提高队列深度观察 IOPS 与时延的变化 |
| 验收口径 | 在业务时延目标内能达到的 IOPS,而不是设备峰值 |
典型使用场景
- 数据库容量与性能规划:按事务并发与日志落盘量估算所需 IOPS
- 虚拟化主机选型:按虚拟机数量与平均 IO 密度估算整体需求
- 阵列池配置:确定闪存与容量盘的比例,保证热点层能承接峰值
- 性能问题定位:对比业务实测吞吐与设备能力上限,判断瓶颈层级
- 采购验收:按约定负载条件测试,避免两边对同一数字有不同理解
把 IOPS 换算成带宽需要乘以 IO 大小,把带宽换算成 IOPS 需要除以 IO 大小。两种口径混谈是容量规划出错最常见的原因:4KB 与 64KB 之间差了十几倍。
闪存设备在队列加深后 IOPS 上升但时延随之上升,存在性能与响应的取舍点。业务能接受的最大时延决定了可用的队列深度,这比标称峰值更能决定实际可用能力。