
# 为什么云硬盘的I/O使用率已接近100%，但云硬盘的读IOPS没有达到IOPS上限
**问题现象：**
单块500GiB的超高IO磁盘，磁盘I/O使用率为99.94%时，磁盘的读IOPS只有12000，没有达到磁盘的IOPS上限。
**原因说明：**
- **磁盘I/O使用率达到100%，不能代表磁盘的IOPS也达到上限。**
  磁盘I/O使用率，用于统计测量对象在测量周期内提交读取或写入操作的占比，不能代表磁盘的I/O性能数据，仅代表磁盘的繁忙程度。
  由于云硬盘具有可以并行处理多个I/O请求的能力，因此当磁盘的I/O使用率达到100%时，也不表示达到了磁盘的瓶颈。例如：某个云硬盘处理单个I/O请求需要0.1秒，且可以同时处理10个I/O请求，那么当10个I/O请求依次按顺序（串行）提交时，需要1秒才可以全部完成，则在1秒的采样周期中，磁盘的I/O使用率达到了100%；而如果10个I/O请求一次性全部（并行）提交时，需要0.1秒就可以全部完成，则在1秒的采样周期中，磁盘的I/O使用率仅达到10%。由此可见，即使磁盘的I/O使用率达到100%，磁盘仍然有余力可以处理更多的I/O请求，即没有达到饱和状态。
  
- **磁盘的读IOPS没有达到IOPS上限的原因**
  对于500GiB的超高IO磁盘，其IOPS性能上限=min (单个云硬盘最大IOPS, 单个云硬盘最小IOPS + 每GiB云硬盘的IOPS × 云硬盘容量 ) = min (50000, 1800 + 50 × 500 ) = 26800
  磁盘的读IOPS，用于统计每秒从测量对象读取数据的请求次数。IOPS实际是由时延控制的，目前在数据块大小为4KiB的情况下，超高IO磁盘的单队列访问时延为1ms，那么在单队列场景下，1秒可以处理的IOPS为1000，即当IOPS为12000时，队列深度大约为12，如果要达到IOPS上限26800，则队列深度大约需要达到26。
  
 
