文档首页/ 云硬盘 EVS/ 常见问题/ 云硬盘性能问题/ 为什么云硬盘的I/O使用率已接近100%,但云硬盘的读IOPS没有达到IOPS上限
更新时间:2024-05-27 GMT+08:00

为什么云硬盘的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。