天天看點

Linux性能測試 iostat指令

Linux系統出現了性能問題,一般我們可以通過top、iostat、free、vmstat等指令 來檢視初步定位問題。其中iostat可以給我們提供豐富的IO狀态資料。

執行 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,就表示要顯示所有分區和裝置的資訊

顯示示例:

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參數我們可以獲得更多統計資訊。

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部分狀态值:

4. 常見用法

$iostat -d -k 1 10        #檢視TPS和吞吐量資訊

iostat -d -x -k 1 10      #檢視裝置使用率(%util)、響應時間(await)

iostat -c 1 10            #檢視cpu狀态

5. 執行個體分析

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

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

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

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

繼續閱讀