iostat命令簡單使用


1.iostat使用范圍

iostat命令可以生成3種類型的報告:

(1)CPU使用情況的報告

(2)設備使用情況的報告

(3)網絡文件系統(NFS)使用情況的報告

 

2.每種報告的格式說明

關於CPU使用報告的格式解釋

%user:應用程序使用CPU的時間占比。

%nice:擁有高優先級的應用程序占用CPU的時間百分比。

默認情況下,所有應用程序的優先級一樣,所以CPU不會偏袒哪一個。但如果有的優先級高,CPU就會先

去執行它們,那么對於這群身份特殊的應用程序,我們用%nice來統計它們的CPU使用占比。

%system:內核程序使用CPU的時間占比。

%iowait:CPU花費了多少時間去等待磁盤IO。此時CPU是空閑的,什么事都不做。

%idle:CPU什么都不做,既沒有等待磁盤IO,也沒有做其他事情。完全空閑狀態。

%steal:之前管理程序服務於CPU1,突然CPU2跑來了,此時管理程序跟CPU1說:你等會哈,我先去服務CPU2,馬上回來。

此時,CPU1被強制置於等待狀態。CPU1等待的時間占比就是%steal。(個人理解)

 

關於設備使用報告的格式解釋:

tps:每秒發送給設備的傳輸數。這里的傳輸指的是:發給設備的一個I/O請求。

所以,tps的意思就是:每秒發給設備的I/O請求數。一個讀請求叫做一個I/0,一個寫請求也叫做一個I/O。

Blk_read/s:每秒從設備讀取的block數。每個block的大小是512字節,等於一個扇區的大小。

Blk_wrtn/s:每秒寫入到設備的block數。每個block的大小是512字節,等於一個扇區的大小。

Blk_read從該設備讀取的總block數。發出去的block數。

Blk_wrtn:寫入到該設備的總block數。拿進來的block數。

kB_read/s:每秒從設備讀取的千字節數。kilobytes。

kB_wrtn/s:每秒寫入到設備的千字節數。kilobytes。

kB_read:從設備讀取的總千字節數。kilobytes。發出去的數據量。

kB_wrtn:寫入到該設備的總千字節數。kilobytes。拿進來的數據量。

MB_read/s:每秒從該設備讀出去的兆字節數。megabytes。

MB_wrtn/s:每秒寫入到該設備的兆字節數。megabytes。

MB_read:從該設備讀出去的總兆字節數

MB_wrtn:寫入到該設備的總兆字節數

rrqm/s:沒有理解,會查找資料來補充。

wrqm/s:沒有理解,會查找資料來補充。

r/s:每秒發送給設備的讀請求數。(重要指標)

w/s:每秒發送給設備的寫請求數。(重要指標)

rsec/s:每秒從這個設備讀取了多少個扇區。

wsec/s:每秒寫入了多少個扇區到該設備。

rkB/s:每秒從設備讀取的千字節數。kilobytes。(與前面的kB_read/s一樣)

wkB/s:每秒寫入到設備的千字節數。kilobytes。(與前面的kB_write/s一樣)

rMB/s:與上面類似。

wMB/s:與上面類似。

avgrq-sz:所有發送給設備的請求,都有大小。這個參數用於表示所有請求的平均大小,以扇區為單位。

avgqu-sz:假如第1秒,設備前的請求隊列中有5個請求;第2秒,設備前的隊列中有4個請求;

第3秒,設備前的請求隊列中有3個請求,那么現在我來計算,設備前的隊列,平均每秒是多長:

5 + 4 + 3 / 3 = 4。也就是平均每秒都有4個請求在排隊。

await設備服務每個請求的平均時間。包括請求的排隊時間和實際服務時間。比如我去肯德基,

我的前面有4個人,排了15分鍾后,服務員開始給我服務。我點了漢堡和可樂,過

了5分鍾,服務員將漢堡和可樂交給了我,我拿着東西離開了。所以對於我這個人(請求),

肯德基的服務時間是20分鍾。單位是毫秒

svctm:這個字段會在將來的sysstat安裝包中移除。所以不需要關注。(我們的iostat來自於sysstat這個安裝包)

%util:沒有理解,會查找資料來補充。

 

關於網絡文件系統報告:

NFS客戶端會掛載NFS服務端分享的設備,我們可以在NFS客戶端上統計我們使用NFS的情況。

Filesystem:指的是網絡文件系統。可以用ip:目錄或hostname:目錄表示。

比如:10.10.10.10:/data/image或者img.example.com:/data/image

rBlk_nor/s:應用程序通過read()這個系統調用接口,從網絡文件系統中讀出來的block數,一個block的大小是512字節。

wBlk_nor/s:應用程序通過write()這個系統調用接口,寫入到網絡文件系統中的block數。

rBlk_dir/s:我們從某個打開的文件中讀取的block數。這個文件在網絡文件系統中,並且是以O_DIRECT標記打開的。

wBlk_dir/s:我們寫入到某個打開的文件中的block數。這個文件在網絡文件系統中,並且是以O_DIRECT標記打開的。

rBlk_svr/s:NFS客戶端通過NFS READ請求,從服務器讀取的block數

wBlk_svr/s:NFS客戶端通過NFS WRITE請求,寫入到服務器的block數

rkB_nor/s:應用程序通過read()這個系統調用接口,從網絡文件系統中讀出來千字節數。kilobytes。

wkB_nor/s:應用程序通過write()這個系統調用接口,寫入到網絡文件系統中的千字節數。kilobytes。

rkB_dir/s:我們從某個打開的文件中讀取的千字節數。這個文件在網絡文件系統中,並且是以O_DIRECT標記打開的。

wkB_dir/s:我們寫入到某個打開的文件中的千字節數。這個文件在網絡文件系統中,並且是以O_DIRECT標記打開的。

rkB_svr/s:NFS客戶端通過NFS READ請求,從服務器讀取的千字節數。

wkB_svr/s:NFS客戶端通過NFS WRITE請求,寫入到服務器的千字節數。

rMB_nor/s:同上,只是改了下單位。

wMB_nor/s:同上,只是改了下單位。

rMB_dir/s:同上,只是改了下單位。

wMB_dir/s:同上,只是改了下單位。

rMB_svr/s:同上,只是改了下單位。

wMB_svr/s:同上,只是改了下單位。

ops/s:每秒向文件系統發起的操作數。

rops/s:每秒向文件系統發起的讀操作數。

wops/s:每秒向文件系統發起的寫操作數。

總的來說,套路就是:block數,千字節數,兆字節數。

 

3.命令選項

iostat -c  只顯示CPU使用情況

iostat -d  只顯示設備使用情況

iostat -n  只顯示網絡文件系統使用情況

iostat -k  以千字節顯示,沒有加k時,是以block數顯示的

iostat -m   以兆字節顯示,沒有加m時,是以block數顯示的

iostat -N  查看LVM2時比較有用

iostat -j { ID | LABEL | PATH | UUID} [ device | ALL ]  沒理解,待查資料。

iostat -p [ { device | ALL } ]  顯示塊設備的統計信息以及它的分區的統計信息,比如sda塊設備和它的分區sda1。

iostat -t  顯示每次打印的時間

iostat -V   打印sysstat的版本

iostat -x  展示擴展統計數據,需要參考/proc/diskstat文件和/proc/partions文件

iostat -y  忽略第一次報告(第一次統計數據是從系統啟動后算起的),從第二次開始顯示

iostat -z  忽略那些在取樣期間,沒有任何活動的設備統計數據。也就是說,如果設備沒有任何寫入和讀取,那么無須統計它的數據

 

4.注意事項

/proc文件系統必須要掛載上,iostat才可以工作。

svctm:平均服務時間,這個字段以后將沒有意義。因為I/O統計數據是在block層計算的,我們並不知道磁盤驅動器什么時候開始處理一個請求

 

5.附加文件

/proc/stat包含系統統計數據。

/proc/uptime包含系統運行時間。

/proc/diskstats包含磁盤統計數據。

/sys包含塊設備的統計數據。

/proc/self/mountstats包含網絡文件系統的統計數據。

/dev/disk包含持久設備名

 

6.其余參考命令

sar

pidstat

mpstat

vmstat


免責聲明!

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



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