判断磁盘极限性能误区:只通过iostat 中的 %util 指标确定磁盘是否达到带宽或iops极限

背景:

    在判断磁盘是否达到极限性能时,总有人通过 iostat -x 中的 %util 指标来确认磁盘是否带宽带宽或IOPS瓶颈,其实这是不对的,特做如下说明:

结论:

    iostat 中的 %util 基本已经没有任何作用了,svctm也没什么参考意义

    磁盘是否达到真正极限瓶颈,需要参考通过fio等工具压测出的极限带宽和IOPS值

%util与硬盘设备饱和度

    %util表示该设备有I/O(即非空闲)的时间比率,不考虑I/O有多少,只考虑有没有。

    由于现代硬盘设备都有并行处理多个I/O请求的能力,所以%util即使达到100%也不意味着设备饱和了。

    举个简化的例子:某硬盘处理单个I/O需要0.1秒,有能力同时处理10个I/O请求,那么当10个I/O请求依次顺序提交的时候,需要1秒才能全部完成,在1秒的采样周期里%util达到100%;而如果10个I/O请求一次性提交的话,0.1秒就全部完成,在1秒的采样周期里%util只有10%。可见,即使%util高达100%,硬盘也仍然有可能还有余力处理更多的I/O请求,即没有达到饱和状态。

    那么iostat(1)有没有哪个指标可以衡量硬盘设备的饱和程度呢?很遗憾,没有。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐