iostat 中的 %util 指標說明
- 2020 年 2 月 1 日
- 筆記
判斷磁碟極限性能誤區:只通過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/