Linux性能測試 iostat命令


Linux系統出現了性能問題,一般我們可以通過top、iostat、free、vmstat等命令 來查看初步定位問題。其中iostat可以給我們提供豐富的IO狀態數據。
iostat 由 Red Hat Enterprise Linux AS 發布。同時 iostat 也是 Sysstat 的一部分,可以下載到,網址是 http://perso.wanadoo.fr/sebastien.godard/ 
執行 iostat 命令可以從系統啟動之后的 CPU 平均時間,類似於 uptime。除此之外,iostat 還對創建一個服務器磁盤子系統的活動報告。該報告包含兩部分:CPU 使用情況和磁盤使用 情況。

1. 基本使用
iostat [-c|-d] [-k] [-t] [間隔描述] [檢測次數]
參 數:
-c : 僅顯示cpu的狀態
-d : 僅顯示存儲設備的狀態,不可以和-c一起使用
-k : 默認顯示的是讀入讀出的block信息,用-k可以改成KB大小來顯示
-t  : 顯示日期
-p device | ALL : device為某個設備或者某個分區,如果使用ALL,就表示要顯示所有分區和設備的信息

顯示示例:

avg-cpu:  %user   %nice    %sys %iowait   %idle
4.55    0.00    0.63    0.26   94.56

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
cciss/c0d0       30.11        68.20        67.13 1232784060 1213452142
cciss/c0d0p1      0.00         0.00         0.00       2531          2
cciss/c0d0p2     83.78        68.18        67.11 1232572011 1213204536
dm-0              1.06         0.60         4.07   10873201   73555720
dm-1             82.50        67.42        62.23 1218704309 1124966656
dm-2              0.21         0.18         0.83    3199605   14929540
dm-3              0.00         0.00         0.00        372        224

CPU 占用情況包括四塊內容 
%user:顯示user level (applications)時,CPU的占用情況。 
%nice:顯示user level在 nice priority 時,CPU 的占用情況。 
%sys:  顯示 system level (kernel)時,CPU 的占用情況。 
%idle: 顯示CPU 空閑時間所占比例。

磁盤使用報告分成以下幾個部分: 
Device: 塊設備的名字 
tps: 該設備每秒 I/O 傳輸的次數。多個 I/O 請求可以組合為一個,每個 I/O 請求傳輸的字節數不同,因此可以將多個 I/O 請求合並為一個。 
Blk_read/s, Blk_wrtn/s: 表示從該設備每秒讀寫的數據塊數量。塊的大小可以不同,如1024, 2048 或 4048 字節,這取決於 partition 的大小。 
Blk_read, Blk_wrtn: 指示自從系統啟動之后數據塊讀/寫的合計數。也可以查看這幾個文件/proc/stat,/proc/partitions,/proc/diskstats的內容。


2. -x 參數
使用-x參數我們可以獲得更多統計信息。

iostat -d -x -k 1 10
Device:    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.56  28.31  7.80 31.49   42.51    2.92    21.26     1.46     1.16     0.03    0.79   2.62  10.28
Device:    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.00  20.00 381.00  7.00 12320.00  216.00  6160.00   108.00    32.31     1.75    4.50   2.17  84.20

rrqm/s:每秒這個設備相關的讀取請求有多少被Merge了(當系統調用需要讀取數據的 時候,VFS將請求發到各個FS,如果FS發現不同的讀取請求讀取的是相同Block的數據,FS會將這個請求合並Merge);wrqm/s:每秒這個 設備相關的寫入請求有多少被Merge了。
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請求的處理的平均時間(單位是微秒)。這里可以理解為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 1 10
avg-cpu:  %user   %nice    %sys %iowait   %idle
           1.98    0.00    0.35   11.45   86.22
avg-cpu:  %user   %nice    %sys %iowait   %idle
           1.62    0.00    0.25   34.46   63.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.72        18.95        71.53  395637647 1493241908
sda10           299.02      4266.67       129.41       4352        132
sda10           483.84      4589.90      4117.17       4544       4076
sda10           218.00      3360.00       100.00       3360        100
sda10           546.00      8784.00       124.00       8784        124
sda10           827.00     13232.00       136.00      13232        136

上面看到,磁盤每秒傳輸次數平均約400;每秒磁盤讀取約5MB,寫入約1MB。

iostat -d -x -k 1
Device:    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.56  28.31  7.84 31.50   43.65    3.16    21.82     1.58     1.19     0.03    0.80   2.61  10.29
sda          1.98  24.75 419.80  6.93 13465.35  253.47  6732.67   126.73    32.15     2.00    4.70   2.00  85.25
sda          3.06  41.84 444.90 54.08 14204.08 2048.98  7102.04  1024.49    32.57     2.10    4.21   1.85  92.24

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

如果想要對iostat檢查多此,每次之間的間隔一定數量的秒數,這樣就可以查看每幾秒鍾之內的io統計數 據,這對性能的測試才具有實際意義:

$> iostat -d 2 3
表示沒量秒鍾檢查一次,一共檢查三次
avg-cpu:  %user   %nice    %sys %iowait   %idle
4.55    0.00    0.63    0.26   94.56

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
cciss/c0d0       30.11        68.20        67.13 1232900288 1213456210
cciss/c0d0p1      0.00         0.00         0.00       2531          2
cciss/c0d0p2     83.78        68.19        67.11 1232688239 1213208604
dm-0              1.06         0.60         4.07   10873201   73558008
dm-1             82.50        67.42        62.23 1218820537 1124967604
dm-2              0.21         0.18         0.83    3199605   14930372
dm-3              0.00         0.00         0.00        372        224

avg-cpu:  %user   %nice    %sys %iowait   %idle
0.00    0.00    0.63    0.00   99.37

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
cciss/c0d0        1.02         0.00        63.27          0        124
cciss/c0d0p1      0.00         0.00         0.00          0          0
cciss/c0d0p2     15.82         0.00        63.27          0        124
dm-0             15.82         0.00        63.27          0        124
dm-1              0.00         0.00         0.00          0          0
dm-2              0.00         0.00         0.00          0          0
dm-3              0.00         0.00         0.00          0          0

avg-cpu:  %user   %nice    %sys %iowait   %idle
0.00    0.00    0.32    0.00   99.68

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
cciss/c0d0        3.06         0.00        26.53          0         52
cciss/c0d0p1      0.00         0.00         0.00          0          0
cciss/c0d0p2      6.63         0.00        26.53          0         52
dm-0              0.00         0.00         0.00          0          0
dm-1              6.63         0.00        26.53          0         52
dm-2              0.00         0.00         0.00          0          0
dm-3              0.00         0.00         0.00          0          0

其中每一次的統計都是上 一次的統計時間到這次的統計時間之間的統計數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM