好久之前就列出了性能學習的計劃,xmind畫了一大坨東東,只是一直沒有真正實施起來,如今作個開篇吧。ios
iostat做爲io性能分析的利器,早就想仔細看看了,列出經常使用參數說明:ide
參數說明:性能
-d 查看io設備的統計信息學習
-c 查看CPU相關的統計信息:spa
%user 用戶態消耗的時間orm
%nice 用戶進程空間中被調整過nice的進程消耗的時間隊列
%sys 內核態消耗的時間進程
%idle 空閒實現文檔
-x 查看io設備詳細的統計信息:it
rrqm/s: 每秒進行 merge 的讀操做數目。即 delta(rmerge)/s
wrqm/s: 每秒進行 merge 的寫操做數目。即 delta(wmerge)/s
r/s: 每秒完成的讀 I/O 設備次數。即 delta(rio)/s
w/s: 每秒完成的寫 I/O 設備次數。即 delta(wio)/s
rsec/s: 每秒讀扇區數。即 delta(rsect)/s
wsec/s: 每秒寫扇區數。即 delta(wsect)/s
rkB/s: 每秒讀K字節數。是 rsect/s 的一半,由於每扇區大小爲512字節。(須要計算)
wkB/s: 每秒寫K字節數。是 wsect/s 的一半。(須要計算)
avgrq-sz: 平均每次設備I/O操做的數據大小 (扇區)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O隊列長度。即 delta(aveq)/s/1000 (由於aveq的單位爲毫秒)。
await: 平均每次設備I/O操做的等待時間 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次設備I/O操做的服務時間 (毫秒)。即 delta(use)/delta(rio+wio)
%util: 一秒中有百分之多少的時間用於 I/O 操做,或者說一秒中有多少時間 I/O 隊列是非空的。即 delta(use)/s/1000 (由於use的單位爲毫秒)
做爲硬件白癡我對avgqu-sz中的io隊列的實現方式感興趣,查了一些文檔發現io隊列應該是在OS層的東東,並非由硬盤自己來控制的,理論上硬盤操做都是串行的,若是作raid就至關因而在並行,可是應該是說io隊列的消費速度快了,整個存儲的傳輸效率和容錯性都提高了。不知道對io隊列的理解是否正確?有待進一步研究。
另外mac下如何查看nice值呢,top命令裏沒有說明如何顯示,ps xl卻是能夠。
準備分析一個線上系統來驗證一些想法,由於這個系統的IO壓力仍是比較大的,並且突發性很強,因此,用這個系統來分析系統IO的性能是個不錯的選擇,下週開搞,在補充完這個學習筆記吧。