linux命令——iostat,linuxiostat
iostat——I/O statistics(輸入輸出統計)
1. 作用
即時列出整個CPU與介面裝置的I/O狀態。
2. 安裝
iostat屬於sysstat軟體包,可以用yum直接安裝:
yum install sysstat
3. 用法
iostat 【參數】【間隔秒數】【檢測次數】
參數:[-c | -d] [-k | -m] [-t] [-x]
-c:僅顯示CPU的狀態;
-d:僅顯示存放裝置的狀態,不可與-c一起用;
-k:預設顯示的是block單位,這裡可以改成KB為單位;
-m:與-k類似,這裡以MB為單位;
-t:顯示日期;
-x:顯示詳細資料。
4. 範例
4.1 iostat
avg-cpu: 總體cpu使用方式統計資訊,對於多核cpu,這裡為所有cpu的平均值
%user:CPU處在使用者模式下的時間百分比。
%nice:CPU處在帶NICE值的使用者模式下的時間百分比。
%system:CPU處在系統模式下的時間百分比。
%iowait:CPU等待輸入輸出完成時間的百分比。
%steal:管理程式維護另一個虛擬處理器時,虛擬CPU的無意識等待時間百分比。
%idle:CPU空閑時間百分比。
備忘: 對於cpu統計資訊一行,我們主要看iowait的值,它指示cpu用於等待io請求完成的時間。
如果%iowait的值過高,表示硬碟存在I/O瓶頸;%idle值高,表示CPU較空閑;
如果%idle值高但系統響應慢時,有可能是CPU等待分配記憶體,此時應加大記憶體容量。
%idle值如果持續低於10,那麼系統的CPU處理能力相對較低,表明系統中最需要解決的資源是CPU。
Device: 各磁碟裝置的IO統計資訊
tps:平均每秒的傳輸次數(Indicate the number of transfers per second that were issued to the device),與資料轉送“次數”有關,非容量。 “一次傳輸”意思是“一次I/O請求”。多個邏輯請求可能會被合并為“一次I/O請求”。“一次傳輸”請求的大小是未知的。
Blk_read/s:開機到現在平均每秒的讀扇區數量(一扇區為512bytes);
Blk_wrtn/s:開機到現在平均每秒的寫扇區數量;
Blk_read:開機到現在總共讀出來的扇區數量;
Blk_wrtn:開機到現在總共寫入的扇區數量。
4.2 iostat -c
僅顯示CPU的狀態:
4.3 iostat -d
僅顯示存放裝置的狀態:
4.4 iostat -k
以KB大小來顯示,相比以扇區數為單位,這裡的值為原值的一半(1KB=512bytes*2):
4.5 iostat -m
以MB大小來顯示:
4.6 iostat -t
顯示時間:
4.7 iostat 2 3
每2秒檢測一次,共檢測3次:
備忘:如果有檢測次數的情況,那麼第一次顯示的是從開機到現在的資料,第二次以後所顯示的資料則代表兩次檢測之間的系統傳輸值。
4.8 iostat -x
顯示更詳細的資訊:
屬性說明:
rrqm/s:每秒對該裝置的讀請求被合并次數,檔案系統會對讀取同塊(block)的請求進行合并;
wrqm/s:每秒對該裝置的寫請求被合并次數;
r/s:每秒完成的讀次數;
w/s:每秒完成的寫次數;
rsec/s:每秒讀取的扇區數;
wsec/s:每秒寫入的扇區數;
avgrq-sz:平均請求扇區的數量;
avgqu-sz:平均請求隊列的長度,隊列長度越短越好;
await:平均每次IO請求等待時間(包括等待時間和處理時間,毫秒為單位)。這裡可以理解為IO的回應時間,一般地系統IO回應時間應低於5ms,如果大於10ms就比較大了。一般情況下,await大於svctm,它們的差值越小,說明等待時間越短,幾乎沒有I/O等待,磁碟效能很好;反之差值越大,等待時間越長,系統上啟動並執行應用程式變慢;
svctm:平均每次IO請求的處理時間(毫秒為單位);
%util:採樣周期內用於IO操作的時間比率,即IO隊列非空的時間比。例如,如果統計間隔1秒,該裝置有0.8秒在處理IO,而0.2秒閑置,那麼該裝置的%util = 0.8/1 = 80%,所以該參數暗示了裝置的繁忙程度。一般地,如果該參數是100%表示裝置已經接近滿負荷運行了(當然如果是多磁碟,即使%util是100%,因為磁碟的並發能力,所以磁碟使用未必就到了瓶頸)。