Windows性能監(jiān)控工具-xperf

關(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)的一個內(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)控時間等;下面我想向大家介紹xperf是如何監(jiān)控系統(tǒng)資源。

1案例分析

對于KDV1000和PCMT這兩款在windows下運(yùn)行的產(chǎn)品,在編高能力級別的視頻時耗用資源較高,比如KDV1000在第一路編720P/30HP,解1080P/30HP,第二路解H264/H239/SXGA@5HP時,耗用CPU竟達(dá)90%。

xperf工具有以下幾個特征:

1.工具本身具有權(quán)威性,而且是免費(fèi)的;

2.工具本身耗用資源少(只要是監(jiān)控肯定會有資源耗用);

3.工具能長時間監(jiān)控,有專業(yè)的圖形分析;

4.支持命令行使用,方便結(jié)合其他腳本使用;

所以xperf是非常值得推廣的。

2解決過程

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

第一條命令會收集多個種類的內(nèi)核事件,base是(PROC_THREAD、LOADER、DISK_IO、HARD_FAULTS、PROFILE和MEMIFO)所有內(nèi)核事件的集合,并將數(shù)據(jù)記錄到一個名為kernel.etl的日志文件中,這個文件一般在C盤根目錄下。

第二條命令就是將內(nèi)核事件收集到trace.etl這個文件中。

第三條命令就是使用xperfview這個工具將trace.etl使用圖形化工具展現(xiàn)出來。

下面引出以下幾個問題:

內(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é)束時間和結(jié)果

FILE_IO_INIT:文件操作系統(tǒng)(create/open/close/read/write)

HARD_FAULTS:硬件分頁錯誤

FILENAME: FileName (e.g.,FileName create/delete/rundown)

SPLIT_IO:分裂I/O

REGISTRY:注冊表的更改記錄

DRIVERS:驅(qū)動事件

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文件,如下圖:

監(jiān)控圖

這三個圖分別是CPU使用率,進(jìn)程的CPU使用率,線程的CPU使用率隨著時間的變化而變化的趨勢圖,那么我們可以對上圖進(jìn)行如下操作:

1.在圖上點(diǎn)擊右鍵選擇Summary Table查看CPU使用列表詳情。

詳情

備注:硬盤讀寫速度不是很好的話,建議大家使用Simple Summary Table。

詳圖

打開的列表詳情包含了在監(jiān)控性能的這段時間內(nèi)整個系統(tǒng)的平均cpu使用率以及每個進(jìn)程使用的平均CPU率以及改進(jìn)程下調(diào)用模塊的CPU使用率。

2.我們還可以對相應(yīng)的曲線進(jìn)行配色如圖,只需雙擊下圖的CPU#中的CPU 0,就會彈出Color框,點(diǎn)擊相應(yīng)的顏色后即可:

color選擇

3.可以通過拉選范圍對圖形的局部進(jìn)行分析可以做如下操作:放大選擇范圍,克隆選擇范圍,放棄放大,全選,選擇指定范圍

select zoom

4.選擇指定顯示的參數(shù)如下圖,只顯示4核CPU中的CPU1和CPU3

CPU select

5.選擇任意兩張圖表合并對比,這樣就能相互聯(lián)系的看待問題;

Step1:右擊圖表,選擇Overlay Graph然后選擇需要合并的父項(xiàng)及子項(xiàng)。

Overlay Graph

Step2:合并后如下圖所示:

Merge

2.3xperf使用中遇到的問題

Q1:Xperf支持的操作系統(tǒng):

支持WINDOWS

VISTA, Windows Server 2008以及更高的操作系統(tǒng),由于歷史遺留問題,WINDOWS XP和WINDOWS Server 2003對WPT的支持不好,內(nèi)核在開發(fā)的時候沒有考慮到未來的程序性能調(diào)試的復(fù)雜度,所以xperf不支持WINDOWS XP和WINDOWS Server 2003。

Q2:Xperf收集數(shù)據(jù)時,一定要注意文件大小,而且讀etl文件時對硬盤的讀寫速度要求也比較高,綜合以上,實(shí)踐中得出的建議監(jiān)控時間為1小時,那很多時候拷機(jī)項(xiàng)的時間都是好幾個小時的,這時候我們可以通過批處理來完成連續(xù)監(jiān)控,且每個文件都收集1小時的,然而批處理沒有sleep的用法,但這也很容易解決我們可以在批處理中調(diào)用VBS,VBS文件中簡單的寫上一句WScript.Sleep 3600即可。

Q3:由于數(shù)據(jù)收集你的硬盤也很有可能會爆,所以在監(jiān)控之前先預(yù)估下硬盤大小是否支持。

3解決結(jié)果

使用Xperf工具很專業(yè)的解決了我們PCMT以及KDV1000的CPU監(jiān)控需求,為我們基于WINDOWS上的終端提供了保障。

4總結(jié)

難能可貴的是該工具的權(quán)威性,專業(yè)性,穩(wěn)定性還有它是免費(fèi)的。所以很希望推薦大家使用這款工具。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容