我們可以用iostat 命令來監視系統輸入/輸出、設備負載,這通過觀察與它們的平均傳送速率相關的物理磁盤的活動時間
來實現。iostat 命令生成的報告可以用來更改系統配置,從而更好地平衡物理磁盤和適配器之間的輸入/輸出負載。當Linux系
統出現性能問題時,用iostat工具查看進程IO請求下發的數量、系統處理IO請求的耗時,進而分析進程與操作系統的交互過程
中IO方面是否存在瓶頸。
一、基本使用
安裝命令: yum install sysstat
輸入命令后會自動安裝,依賴包沒有安裝時會提示,輸入“ y ”即可。
1.iostat語法
用法:iostat [ 選項 ] [ <時間間隔> [ 次數 ] ]
參數 | 描述 |
-c | 顯示CPU使用情況 |
-d | 顯示磁盤使用情況 |
-N | 顯示磁盤陣列(LVM)信息 |
-n | 顯示NFS使用情況 |
-k | 輸出結果以KB為單位顯示 |
-m | 輸出結果以MB為單位顯示 |
-t | 報告每秒向終端讀取/寫入的字符數和CPU信息 |
-V | 顯示版本信息 |
-x | 顯示詳細的統計信息 |
-p | 顯示磁盤和分區的情況 |
2.單獨執行iostat命令
由 iostat 命令生成的第一份報告提供了關於自從系統被引導后的時間統計信息,后繼的每一份報告都包含自上一次
報告以來的時間。第一行依次顯示系統版本信息、主機名、當前日期、CPU位數和CPU個數。
avg-cpu:總體cpu使用情況統計信息,對於多核cpu,這里為所有cpu的平均值。重點關注iowait值,表示CPU用於
等待io請求的完成時間,各參數介紹如下:
%user:CPU處在用戶模式下的時間百分比
%nice:CPU處在帶NICE值的用戶模式下的時間百分比
%system:CPU處在系統模式下的時間百分比
%iowait:CPU等待輸入輸出完成時間的百分比
%steal:管理程序維護另一個虛擬處理器時,虛擬CPU的無意識等待時間百分比
%idle:CPU空閑時間百分比
Device:各磁盤設備的IO統計信息,參數介紹如下:
tps:該設備每秒的傳輸次數(Indicate the number of transfers per second that were issued to the device)。
“一次傳輸”意思是“一次I/O請求”,多個邏輯請求可能會被合並為“一次I/O請求”,“一次傳輸”請求的大小是未知的。
kB_read/s:每秒從設備(drive expressed)讀取的數據量
kB_wrtn/s:每秒向設備(drive expressed)寫入的數據量
kB_read:讀取的數據總量
kB_wrtn:寫入的數據總量
二、幾種常見用法
1. iostat -c 1 5 查看CPU狀態,指定時間間隔為1秒,總共顯示5次。
如果%iowait的值過高,表示硬盤存在I/O瓶頸,%idle值高,表示CPU較空閑,如果%idle值高但系統響應
慢時,有可能是CPU等待分配內存,此時應加大內存容量。%idle值如果持續低於10,那么系統的CPU處理能
力相對較低,表明系統中最需要解決的資源是CPU。
2. iostat -d sda 查看指定磁盤信息
3. iostat -d -k 1 5 查看TPS和吞吐量信息
三、獲取更詳細的IO統計信息
我們可以使用命令 iostat -x -d -k 1 5 來查看設備響應率(%util)和響應時間(await)。
rrqm/s:每秒這個設備相關的讀取請求有多少被Merge了(當系統調用需要讀取數據的時候,VFS將請求發到各個FS,
如果FS發現不同的讀取請求讀取的是相同Block的數據,FS會將這個請求合並Merge)
wrqm/s:每秒這個設備相關的寫入請求有多少被Merge了
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)
rkB/s:每秒讀數據量(kB為單位)
wkB/s:每秒寫數據量(kB為單位)
avgrq-sz:平均每次IO操作的數據量(扇區數為單位)
avgqu-sz:平均等待處理的IO請求隊列長度
await:每一個IO請求的處理的平均時間(毫秒為單位)。這里可以理解為IO的響應時間,一般地系統IO響應時間
應該低於5ms,如果大於10ms就比較大了。
r_await:讀取請求的平均時間(毫秒為單位)
w_await:寫入請求的平均時間(毫秒為單位)
svctm:平均每次IO請求的處理時間(毫秒為單位)
%util:在統計時間內所有處理IO時間,除以總共統計時間。例如,如果統計間隔1秒,該設備有0.8秒在處理IO,
而0.2秒閑置,那么該設備的%util = 0.8/1 = 80%,所以該參數暗示了設備的繁忙程度。一般地,如果該參數是
100%表示設備已經接近滿負荷運行了(當然如果是多磁盤,即使%util是100%,因為磁盤的並發能力,所以磁
盤使用未必就到了瓶頸)。