Linux iostat命令使用

Linux系統出現了性能問題,通常咱們能夠經過top、iostat、free、vmstat等命令 來查看初步定位問題。其中iostat能夠給咱們提供豐富的IO狀態數據。ios

1. 基本使用express

$iostat -d -k 1 10併發

參數 -d 表示,顯示設備(磁盤)使用狀態;-k某些使用block爲單位的列強制使用Kilobytes爲單位;1 10表示,數據顯示每隔1秒刷新一次,共顯示10次。性能

$iostat-d -k 110
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 39.2921.141.4444133980729990031
sda1 0.000.000.001623523
sda2 1.321.434.542983427394827104
sda3 6.300.8524.9517816289520725244
sda5 0.850.463.40954350370970116
sda6 0.000.000.00550236
sda7 0.000.000.004060
sda8 0.000.000.004060
sda9 0.000.000.004060
sda10 60.6818.3571.433830022631490928140

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 327.555159.18102.045056100
sda1 0.000.000.0000

ps:該設備每秒的傳輸次數(Indicate the number of transfers per second that were issued to the device.)。「一次傳輸」意思是「一次I/O請求」。多個邏輯請求可能會被合併爲「一次I/O請求」。「一次傳輸」請求的大小是未知的。code

kB_read/s:每秒從設備(drive expressed)讀取的數據量;kB_wrtn/s:每秒向設備(drive expressed)寫入的數據量;kB_read:讀取的總數據量;kB_wrtn:寫入 的總數量數據量;這些單位都爲Kilobytes。requests

上面的例子中,咱們能夠看到磁盤sda以及它的各個分區的統計數據,當時統計的磁盤總TPS是39.29,下面是各個分區的TPS。(由於是瞬間 值,因此總TPS並不嚴格等於各個分區TPS的總和)it

2. -x 參數io

使用-x參數咱們能夠得到更多統計信息。sed

iostat -d -x -k 110Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 1.5628.317.8031.4942.512.9221.261.461.160.030.792.6210.28Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 2.0020.00381.007.0012320.00216.006160.00108.0032.311.754.502.1784.20

rrqm/s:每秒這個設備相關的讀取請求有多少被Merge了(當系統調用須要讀取數據的 時候,VFS將請求發到各個FS,若是FS發現不一樣的讀取請求讀取的是相同Block的數據,FS會將這個請求合併Merge);wrqm/s:每秒這個 設備相關的寫入請求有多少被Merge了。request

rsec/s:每秒讀取的扇區數;wsec/: 每秒寫入的扇區數。r/s:The number of read requests that were issued to the device per second;w/s:The number of write requests that were issued to the device per second;

await:每個IO請求的處理的平均時間(單位是ms)。這裏能夠理解爲IO的響應時 間,通常地系統IO響應時間應該低於5ms,若是大於10ms就比較大了。

%util:在統計時間內全部處理IO時間,除以總共統計時間。例如,若是統計間隔1秒,該 設備有0.8秒在處理IO,而0.2秒閒置,那麼該設備的%util = 0.8/1 = 80%,因此該參數暗示了設備的繁忙程度。通常地,若是該參數是100%表示設備已經接近滿負荷運行了(固然若是是多磁盤,即便%util是100%,因 爲磁盤的併發能力,因此磁盤使用未必就到了瓶頸)。

3. -c 參數

iostat還能夠用來獲取cpu部分狀態值:

iostat -c 110
avg-cpu: %user%nice%sys%iowait%idle1.980.000.3511.4586.22
avg-cpu: %user%nice%sys%iowait%idle1.620.000.2534.4663.67

4. 常見用法

$iostat -d -k 1 10 #查看TPS和吞吐量信息
iostat -d -x -k 1 10 #查看設備使用率(%util)、響應時間(await)
iostat -c 1 10 #查看cpu狀態

5. 實例分析

$iostat -d -k 1 |grep sda10
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda10 60.7218.9571.533956376471493241908
sda10 299.024266.67129.414352132
sda10 483.844589.904117.1745444076
sda10 218.003360.00100.003360100
sda10 546.008784.00124.008784124
sda10 827.0013232.00136.0013232136
上面看到,磁盤每秒傳輸次數平均約400;每秒磁盤讀取約5MB,寫入約1MB。

iostat -d -x -k 1Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 1.5628.317.8431.5043.653.1621.821.581.190.030.802.6110.29
sda 1.9824.75419.806.9313465.35253.476732.67126.7332.152.004.702.0085.25
sda 3.0641.84444.9054.0814204.082048.987102.041024.4932.572.104.211.8592.24

能夠看到磁盤的平均響應時間<5ms,磁盤使用率>80。磁盤響應正常,可是已經很繁忙了。

相關文章
相關標籤/搜索