微軟Xperf使用手冊(cè):監(jiān)控Windows性能新方案
IT管理員總是在不停地尋找新工具,從而使得自己的生活更簡(jiǎn)單(如果這些工具是免費(fèi)的,那就更好了)。下載工具時(shí)我通常都很細(xì)心,對(duì)于那些不需送貨但價(jià)格卻貴到“血腥”的工具更是謹(jǐn)慎。不過(guò),對(duì)于微軟最近在性能檢測(cè)領(lǐng)域提供的叫做Xperf的新工具,我感到高興和驚訝。
Xperf是一個(gè)先進(jìn)的故障調(diào)試工具,可深入調(diào)試各種性能問(wèn)題,其高度是Perfmon無(wú)法企及的。它是產(chǎn)品套件Windows性能工具包(Windows Performance Toolkit ,WPT)的一部分,而WPT則屬于微軟軟件開(kāi)發(fā)包(Microsoft Software Development Kit ,SDK)。Xperf是Windows事件跟蹤系統(tǒng)(Event Tracing for Windows,ETW)的補(bǔ)充。ETW則是服務(wù)器操作系統(tǒng)的一個(gè)內(nèi)置組件,提供詳細(xì)的系統(tǒng)性能和系統(tǒng)數(shù)據(jù)。
Xperf工具能夠處理諸多問(wèn)題,如系統(tǒng)響應(yīng)問(wèn)題、啟動(dòng)緩慢、高CPU和磁盤(pán)利用率、應(yīng)用程序延遲及響應(yīng)緩慢等。它支持在x86、x64和IA-64等平臺(tái)上的跨平臺(tái)使用時(shí)CPU占用低于2.5%,同時(shí)每秒能收集超過(guò)20000個(gè)系統(tǒng)事件。
換言之,這是一個(gè)你絕對(duì)會(huì)添加到工具箱中的工具。但在我們深入了解Xperf提供的諸多功能之前,我們首先通過(guò)一個(gè)簡(jiǎn)短的教程了解一下如何安裝Xperf,以及如何利用這個(gè)工具調(diào)試Windows的各種系統(tǒng)性能問(wèn)題。
安裝Xperf
正如前面提到的那樣,Windows性能工具包(WPT)隨著Windows軟件開(kāi)發(fā)包(SDK)一起發(fā)布。在安裝SDK之前,你必須首先安裝Microsoft .NET Framework 4。除非你想安裝整個(gè)高達(dá)4GB的SDK,否則你就只應(yīng)該選擇Windows性能套件(Windows Performance Toolkit)和Windows調(diào)試工具(Debugging Tools for Windows)這兩個(gè)選項(xiàng),如圖1所示。
你還應(yīng)該選擇可再分發(fā)包(Redistributable Package)下的WPT和調(diào)試工具(Debugging Tool)選項(xiàng),這樣以后你才可以單獨(dú)安裝使用某個(gè)工具,而不用被迫重新安裝SDK。安裝產(chǎn)生的Windows性能套件和調(diào)試工具可以在如下位置找到:
C:\Program Files\Microsoft SDKs\Windows\v7.1\Redist\Windows Performance Toolkit
圖1:Windows SDK的安裝選項(xiàng)
如果你在SDK的安裝過(guò)程中遇到問(wèn)題,你可以參考這個(gè)故障排除頁(yè)面尋求幫助,如清理AppData\Local\Temp目錄下的文件(我經(jīng)常需要這么做)。安裝完成后,系統(tǒng)會(huì)為WPT新建一個(gè)程序組,如圖2所示。相關(guān)的工具放在下面這個(gè)目錄中:
C:\Program Files\Microsoft Windows Performance Toolkit
圖2:Windows性能工具集程序組
配置和使用Xperf
在出問(wèn)題的服務(wù)器上安裝WPT(Xperf)之后,下一步就是開(kāi)始收集事件跟蹤信息。根據(jù)所遇的問(wèn)題的不同,你可以跟蹤并收集大量的事件。我們可以從下面這個(gè)Xperf的CLI命令開(kāi)始:
Xperf –on DiagEasy
這條命令會(huì)收集多個(gè)種類(lèi)的內(nèi)核事件,包括PROC_THREAD、LOADER、DISK_IO、 HARD_FAULTS、 DPC、 INTERRUPT、 CSWITCH 和 PERF_COUNTER,并將數(shù)據(jù)記錄到一個(gè)名為kernel.etl的日志文件中。想要列出所有種類(lèi)的內(nèi)核事件,使用下面這條命令:
Xperf –providers KG
注意:豐富的聯(lián)機(jī)幫助對(duì)每類(lèi)事件都做了詳細(xì)解釋
開(kāi)始收集事件數(shù)據(jù)后,讓服務(wù)器重現(xiàn)你準(zhǔn)備調(diào)試的問(wèn)題,然后使用如下命令結(jié)束收集:
Xperf –d trace.etl
這將合并緩存在kernel.etl中的數(shù)據(jù),并最終創(chuàng)建一個(gè)名為trace.etl的跟蹤日志文件。跟蹤日志文件既可以在出現(xiàn)問(wèn)題的服務(wù)器上進(jìn)行調(diào)試,也可以在另外一臺(tái)裝有WPT的服務(wù)器上進(jìn)行。要查看產(chǎn)生的圖形和圖表,使用下面這條命令:
Xperf trace.etl
跟蹤文件將被分兩步處理,產(chǎn)生各種圖表。默認(rèn)的圖形包括:
- 各CPU的使用率
- 各個(gè)進(jìn)程的CPU使用率
- 各個(gè)線程的CPU使用率
- CPU空閑狀態(tài)
- 磁盤(pán)I/O、磁盤(pán)使用率
- 各個(gè)進(jìn)程的磁盤(pán)使用率
- 進(jìn)程的生命周期
- DPC的CPU使用率
- 中斷的CPU使用率
- 硬件故障
- 其它常見(jiàn)事件
將鼠標(biāo)指針懸停在圖形的某一特定線上,你可以看到更多細(xì)節(jié),如占用所有CPU使用時(shí)間的進(jìn)程名字。舉個(gè)例子,在圖3中你可以清楚地看到殺毒程序Rtvscan.exe是如何占用CPU的。
圖3:CPU使用率-進(jìn)程圖
使用Xperf的另一個(gè)方便之處是你可以將某一特定時(shí)間范圍內(nèi)的圖形放大,從而更清晰地查看這一區(qū)域內(nèi)的圖形。圖4中,你可以看到在磁盤(pán)占用率這幅圖里,前60秒后出現(xiàn)了一個(gè)峰值。用鼠標(biāo)指針點(diǎn)擊并拖動(dòng)圖上的那個(gè)部分,然后右擊,選擇“放大所選區(qū)域”(Zoom To Selection),放大出現(xiàn)問(wèn)題的時(shí)間區(qū)域。這樣會(huì)產(chǎn)生一幅包含你指定時(shí)間區(qū)域的新圖。要回到原圖,右擊鼠標(biāo)然后選擇“取消放大”(Unzoom)。
圖4:Xperf的縮放功能
為了得到更加詳細(xì)的信息,你可以右擊圖形,然后選擇“匯總表”(Summary Table)。這會(huì)產(chǎn)生一個(gè)圖表,記錄所有與該圖形相關(guān)的計(jì)數(shù)器和數(shù)據(jù)。例如,圖5就展示了磁盤(pán)I/O圖的匯總表。表中***行清晰地顯示了Rtvscan.exe進(jìn)程進(jìn)行著大量的讀操作,這意味著它正在進(jìn)行病毒掃描。
圖5:磁盤(pán)I/O圖的磁盤(pán)匯總表
正如你看到的那樣,Xperf是一個(gè)非常強(qiáng)大且直觀的工具,能夠真正幫助你分析系統(tǒng)性能問(wèn)題。然而,我剛剛談到的僅僅是Xperf眾多功能中的冰山一角,該工具還適用于系統(tǒng)啟動(dòng)緩慢問(wèn)題的檢測(cè)、高內(nèi)核和中斷時(shí)間以及重點(diǎn)文件的分析等。每一項(xiàng)功能都值得單獨(dú)為其功能和好處進(jìn)行一番討論。
【編輯推薦】