關(guān)鍵詞:
Windows性能監(jiān)控xperfKDV1000
摘要:
Xperf是一款系統(tǒng)級工具很澄,是產(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)的一個(gè)內(nèi)置組件悦施,提供詳細(xì)的系統(tǒng)性能和系統(tǒng)數(shù)據(jù)并扇。
補(bǔ)充:WPT包含三款工具(xperf、xperfview抡诞、GPU):
Xperf:使用CMD命令行工作穷蛹。包括性能監(jiān)控開始,收集昼汗,和打開等肴熏。
XperfView:這是為Xperf的采樣文件可視化顯示的工具,可以繪制各種資源使用曲線顷窒,并用任
意方式組織數(shù)據(jù)蛙吏,排序。
GPUView:不做介紹鞋吉。
案例描述
我們公司有KDV1000和PCMT都是基于windows系統(tǒng)的鸦做,但是對于windows系統(tǒng)的監(jiān)控工具卻不多,有的工具不權(quán)威谓着,有的工具又有他的局限性泼诱,比如工具本身的資源占用情況和監(jiān)控時(shí)間等;下面我想向大家介紹xperf是如何監(jiān)控系統(tǒng)資源赊锚。
對于KDV1000和PCMT這兩款在windows下運(yùn)行的產(chǎn)品治筒,在編高能力級別的視頻時(shí)耗用資源較高,比如KDV1000在第一路編720P/30HP舷蒲,解1080P/30HP耸袜,第二路解H264/H239/SXGA@5HP時(shí),耗用CPU竟達(dá)90%牲平。
xperf工具有以下幾個(gè)特征:
1.工具本身具有權(quán)威性句灌,而且是免費(fèi)的;
2.工具本身耗用資源少(只要是監(jiān)控肯定會有資源耗用)欠拾;
3.工具能長時(shí)間監(jiān)控,有專業(yè)的圖形分析骗绕;
4.支持命令行使用藐窄,方便結(jié)合其他腳本使用;
所以xperf是非常值得推廣的酬土。
2.1xperf安裝
安裝WPT之前首先安裝Microsoft
.NET Framework 4荆忍。
文件請自行到網(wǎng)上下載。PS:注意查看系統(tǒng)是32位還是64位的,安裝全部選擇默認(rèn)就可以刹枉。
2.2xperf使用
對于xperf的使用先介紹給例子:
以管理員權(quán)限打開DOS叽唱,輸入以下命令:
xperf –on base
xperf –d trace.etl
xperf trace.etl
第一條命令會收集多個(gè)種類的內(nèi)核事件,base是(PROC_THREAD微宝、LOADER棺亭、DISK_IO、HARD_FAULTS蟋软、PROFILE和MEMIFO)所有內(nèi)核事件的集合镶摘,并將數(shù)據(jù)記錄到一個(gè)名為kernel.etl的日志文件中,這個(gè)文件一般在C盤根目錄下。
第二條命令就是將內(nèi)核事件收集到trace.etl這個(gè)文件中岳守。
第三條命令就是使用xperfview這個(gè)工具將trace.etl使用圖形化工具展現(xiàn)出來。
下面引出以下幾個(gè)問題:
內(nèi)核事件有哪些?
如何使用xperfview朱盐?
問題1:我們可以使用xperf –providers k獲得內(nèi)核事件列表台囱,以及不同組所代表了不同內(nèi)核事件的集合,內(nèi)核事件列表如下文:
C:\windows\system32>xperf -providers k
Kernel Flags:
PROC_THREAD:記錄進(jìn)程的創(chuàng)建和刪除
LOADER:記錄內(nèi)核模式和使用模式加載和卸載事件
PROFILE:捕獲CPU采樣的配置文件信息
CSWITCH:記錄上下文切換()
COMPACT_CSWITCH:緊湊的上下文切換
DISPATCHER: CPU調(diào)度器
DPC: DPC事件
INTERRUPT:打斷事件
SYSCALL:系統(tǒng)調(diào)用
PRIORITY:優(yōu)先級變更事件
SPINLOCK:自旋鎖的碰撞
ALPC:高級本地過程調(diào)用
PERF_COUNTER:進(jìn)程項(xiàng)的性能計(jì)數(shù)器
DISK_IO: Disk I/O
DISK_IO_INIT: Disk I/O初始化
FILE_IO:文件系統(tǒng)操作的結(jié)束時(shí)間和結(jié)果
FILE_IO_INIT:文件操作系統(tǒng)(create/open/close/read/write)
HARD_FAULTS:硬件分頁錯(cuò)誤
FILENAME: FileName (e.g.,FileName create/delete/rundown)
SPLIT_IO:分裂I/O
REGISTRY:注冊表的更改記錄
DRIVERS:驅(qū)動(dòng)事件
POWER:電源管理事件
NETWORKTRACE:網(wǎng)絡(luò)事件(e.g., tcp/udp send/receive)
VIRT_ALLOC:虛擬分配保留和釋放
MEMINFO:內(nèi)存列表信息
ALL_FAULTS:所有的頁面故障譬重,包括硬上寫拒逮,復(fù)制,需求零故障等
CONTMEMGEN:連續(xù)的內(nèi)存生成器
POOL:跟蹤池
CPU_CONFIG: NUMA拓?fù)浣Y(jié)構(gòu)害幅,處理器組和處理器索引號映射消恍。默認(rèn)情況下,它始終處于啟用狀態(tài)以现。
Kernel Groups:
Base:PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+PROFILE+MEMINFO
Diag:PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSW
ITCH+PERF_COUNTER+COMPACT_CSWITCH
DiagEasy:PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSW
ITCH+PERF_COUNTER
Latency:PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSW
ITCH+PROFILE
FileIO:PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+FILE_IO+FILE_IO_I
NIT
IOTrace:PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+CSWITCH
ResumeTrace:PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+PROFILE+POWER
SysProf:PROC_THREAD+LOADER+PROFILE
Network:PROC_THREAD+LOADER+NETWORKTRACE
總結(jié):收集內(nèi)核事件的通用命令公式如下:
Xperf -on [Kernel Flags| Kernel Groups]+ [KernelFlags| Kernel Groups]+…
問題2:如何使用xperfview
你可以使用命令將xperfview打開也可以直接找到程序安裝目錄將其打開狠怨。(直接在cmd中直接輸入xperfview)
打開你保存好的etl文件,如下圖:
這三個(gè)圖分別是CPU使用率邑遏,進(jìn)程的CPU使用率佣赖,線程的CPU使用率隨著時(shí)間的變化而變化的趨勢圖,那么我們可以對上圖進(jìn)行如下操作:
1.在圖上點(diǎn)擊右鍵選擇Summary Table查看CPU使用列表詳情记盒。
備注:硬盤讀寫速度不是很好的話憎蛤,建議大家使用Simple Summary Table。
打開的列表詳情包含了在監(jiān)控性能的這段時(shí)間內(nèi)整個(gè)系統(tǒng)的平均cpu使用率以及每個(gè)進(jìn)程使用的平均CPU率以及改進(jìn)程下調(diào)用模塊的CPU使用率纪吮。
2.我們還可以對相應(yīng)的曲線進(jìn)行配色如圖俩檬,只需雙擊下圖的CPU#中的CPU 0,就會彈出Color框碾盟,點(diǎn)擊相應(yīng)的顏色后即可:
3.可以通過拉選范圍對圖形的局部進(jìn)行分析可以做如下操作:放大選擇范圍棚辽,克隆選擇范圍,放棄放大冰肴,全選屈藐,選擇指定范圍
4.選擇指定顯示的參數(shù)如下圖榔组,只顯示4核CPU中的CPU1和CPU3
5.選擇任意兩張圖表合并對比,這樣就能相互聯(lián)系的看待問題联逻;
Step1:右擊圖表搓扯,選擇Overlay Graph然后選擇需要合并的父項(xiàng)及子項(xiàng)。
Step2:合并后如下圖所示:
2.3xperf使用中遇到的問題
Q1:Xperf支持的操作系統(tǒng):
支持WINDOWS
VISTA, Windows Server 2008以及更高的操作系統(tǒng)包归,由于歷史遺留問題锨推,WINDOWS XP和WINDOWS Server 2003對WPT的支持不好,內(nèi)核在開發(fā)的時(shí)候沒有考慮到未來的程序性能調(diào)試的復(fù)雜度箫踩,所以xperf不支持WINDOWS XP和WINDOWS Server 2003爱态。
Q2:Xperf收集數(shù)據(jù)時(shí),一定要注意文件大小境钟,而且讀etl文件時(shí)對硬盤的讀寫速度要求也比較高锦担,綜合以上,實(shí)踐中得出的建議監(jiān)控時(shí)間為1小時(shí)慨削,那很多時(shí)候拷機(jī)項(xiàng)的時(shí)間都是好幾個(gè)小時(shí)的洞渔,這時(shí)候我們可以通過批處理來完成連續(xù)監(jiān)控,且每個(gè)文件都收集1小時(shí)的缚态,然而批處理沒有sleep的用法磁椒,但這也很容易解決我們可以在批處理中調(diào)用VBS,VBS文件中簡單的寫上一句WScript.Sleep 3600即可玫芦。
Q3:由于數(shù)據(jù)收集你的硬盤也很有可能會爆浆熔,所以在監(jiān)控之前先預(yù)估下硬盤大小是否支持。
使用Xperf工具很專業(yè)的解決了我們PCMT以及KDV1000的CPU監(jiān)控需求桥帆,為我們基于WINDOWS上的終端提供了保障医增。
難能可貴的是該工具的權(quán)威性,專業(yè)性老虫,穩(wěn)定性還有它是免費(fèi)的叶骨。所以很希望推薦大家使用這款工具。