iostat命令產(chǎn)生三類數(shù)據(jù)報(bào)表: cpu使用率囊拜、設(shè)備使用率遏乔、網(wǎng)絡(luò)文件系統(tǒng)使用匙握。下面先看一下前面兩個(gè)數(shù)據(jù)指標(biāo)的定義,以及如何幫助性能調(diào)優(yōu)上發(fā)現(xiàn)問題點(diǎn)派诬。
CPU使用率:
%user, 用戶態(tài)的代碼cpu執(zhí)行時(shí)間占比
%nice, 帶有nice優(yōu)先級(jí)的用戶態(tài)代碼cpu使用時(shí)間占比
%system,內(nèi)核態(tài)代碼cpu使用占比
%iowait, 等待外部io的過程中劳淆,cpu空閑的時(shí)間占比
%steal,管理程序維護(hù)另一個(gè)虛擬處理器時(shí)默赂,虛擬CPU的無意識(shí)等待時(shí)間百分比
%idle沛鸵,cpu空閑時(shí)間占比
設(shè)備使用率:
tps, transfer per second,每秒io 請(qǐng)求個(gè)數(shù)
blk_read/s 每秒讀的block的個(gè)數(shù)
blk_wrtn/s,每秒寫的block的個(gè)數(shù)
blk_read缆八,總共的讀的block的個(gè)數(shù)
blk_wrtn,總共的寫的block的個(gè)數(shù)
kb_read/s曲掰,每秒讀的kb個(gè)數(shù)
kb_wrtn/s,每秒寫的kb個(gè)數(shù)
mb_read/s,每秒讀的mb個(gè)數(shù)
mb_wrtn/s每秒寫的mb個(gè)數(shù)
mb_read奈辰,總共讀的mb個(gè)數(shù)
mb_wrtn,總共寫的mb個(gè)數(shù)
rrqm/s栏妖,read request mereded were queue , 每秒排隊(duì)的合并的讀請(qǐng)求
wrqm/s奖恰,每秒排隊(duì)的合并的寫請(qǐng)求
r/s吊趾,每秒發(fā)布的讀請(qǐng)求
w/s,每秒發(fā)布的寫請(qǐng)求
rsec/s瑟啃,每秒讀的扇區(qū)的個(gè)數(shù)
wsec/s论泛,每秒寫的扇區(qū)的個(gè)數(shù)
rKb/s,每秒讀的kb
wKb/s蛹屿,每秒寫的kb
avgrq-sz,發(fā)布的請(qǐng)求的平均大小屁奏,以扇區(qū)為單位
avggqu-sz,發(fā)布的請(qǐng)求的平均隊(duì)列大小
await,平均io的時(shí)間错负,包括在隊(duì)列中的時(shí)間坟瓢,和實(shí)際執(zhí)行的時(shí)間
utils,設(shè)備利用率勇边,如果接近100,說明設(shè)備負(fù)載飽和
案例1
? ? ? 上面這個(gè)案例折联,查看是磁盤sda的性能情況粥诫。io寫的指標(biāo)w_await,平均耗時(shí)6ms,讀平均耗時(shí)是5.33ms崭庸,磁盤使用率是1.04%怀浆,對(duì)于5200轉(zhuǎn)速的硬盤來講,這個(gè)性能數(shù)據(jù)看起來還可以怕享。但是有一個(gè)地方有問題:cpu花在內(nèi)核執(zhí)行時(shí)間占比居然達(dá)到37.89%执赡,超過用戶占比23.45%。如果該機(jī)器上函筋,還有別的程序在做io的事情沙合,也許還可理解,但是如果只有被監(jiān)測(cè)的目標(biāo)程序一個(gè)跌帐,可能需要分析原因了首懈。
? ? 有兩個(gè)指標(biāo)也可能提供了一些線索,w/s, wrqm/s谨敛,每秒寫的請(qǐng)求個(gè)數(shù)和每秒進(jìn)入寫隊(duì)列的請(qǐng)求個(gè)數(shù)究履。相對(duì)于wMB/s的0.14,每秒寫0.14MB脸狸,但是io寫的還是慢了最仑。剛才提了,如果硬盤是5200轉(zhuǎn)速的話炊甲,且有w_await佐證泥彤,單次io執(zhí)行的速度并不慢,所以得需要看一下應(yīng)用程序是如何進(jìn)行io的卿啡。比如如果應(yīng)用程序從用戶態(tài)copy到內(nèi)核態(tài)吟吝,然后再進(jìn)行真正io,或者在內(nèi)核態(tài)做了很多事情颈娜,都有可能導(dǎo)致這樣的情況剑逃。
案例2:
? ? 從這個(gè)圖中,我們可以看到揭鳞,磁盤使用率是飽和狀態(tài)炕贵,達(dá)到了100%梆奈,寫的平均耗時(shí)超過了871ms野崇,隊(duì)列中io請(qǐng)求個(gè)數(shù)超過1010,每秒寫81M的數(shù)據(jù)亩钟。因?yàn)榇疟P負(fù)荷飽和乓梨,io執(zhí)行時(shí)間過長鳖轰,導(dǎo)致CPU因?yàn)榈却齣o而空閑,空閑時(shí)間占比超過了47.89%扶镀。為了改善性能蕴侣,需要從應(yīng)用程序?qū)用嫦朕k法降低IO的數(shù)據(jù)量,比如數(shù)據(jù)緩存在內(nèi)存里(如page cache)臭觉、后臺(tái)異步方式落盤等等策略昆雀。
小結(jié)
? ? 對(duì)于io密集型的應(yīng)用或者任務(wù),需要密切關(guān)注io操作對(duì)性能的影響蝠筑。掌握iostat狞膘,理解背后的指標(biāo)意義,針對(duì)不同的類型的IO性能問題什乙,進(jìn)行分析挽封,對(duì)癥下藥找到不同的解決方案。