iostat 中的 %util 指標說明

判斷磁碟極限性能誤區:只通過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)有沒有哪個指標可以衡量硬碟設備的飽和程度呢?很遺憾,沒有。

參考文章:

【1】容易被誤讀的IOSTAT:http://linuxperf.com/?p=156

【2】深入理解iostat:https://bean-li.github.io/dive-into-iostat/