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