Windows性能监控工具-xperf

关键词:

Windows性能监控xperfKDV1000

摘要:

Xperf是一款系统级工具,是产品套件Windows性能工具包(Windows Performance Toolkit,WPT)的一部分,而WPT则属于微软软件开发包(Microsoft Software Development Kit,SDK)。Xperf是Windows事件跟踪系统(Event Tracing for Windows,ETW)的补充。ETW则是服务器操作系统的一个内置组件,提供详细的系统性能和系统数据。

补充:WPT包含三款工具(xperf、xperfview、GPU):

Xperf:使用CMD命令行工作。包括性能监控开始,收集,和打开等。

XperfView:这是为Xperf的采样文件可视化显示的工具,可以绘制各种资源使用曲线,并用任

意方式组织数据,排序。

GPUView:不做介绍。

案例描述

我们公司有KDV1000和PCMT都是基于windows系统的,但是对于windows系统的监控工具却不多,有的工具不权威,有的工具又有他的局限性,比如工具本身的资源占用情况和监控时间等;下面我想向大家介绍xperf是如何监控系统资源。

1案例分析

对于KDV1000和PCMT这两款在windows下运行的产品,在编高能力级别的视频时耗用资源较高,比如KDV1000在第一路编720P/30HP,解1080P/30HP,第二路解H264/H239/SXGA@5HP时,耗用CPU竟达90%。

xperf工具有以下几个特征:

1.工具本身具有权威性,而且是免费的;

2.工具本身耗用资源少(只要是监控肯定会有资源耗用);

3.工具能长时间监控,有专业的图形分析;

4.支持命令行使用,方便结合其他脚本使用;

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

2解决过程

2.1xperf安装

安装WPT之前首先安装Microsoft

.NET Framework 4。

文件请自行到网上下载。PS:注意查看系统是32位还是64位的,安装全部选择默认就可以。

2.2xperf使用

对于xperf的使用先介绍给例子:

以管理员权限打开DOS,输入以下命令:

xperf –on base

xperf –d trace.etl

xperf trace.etl

第一条命令会收集多个种类的内核事件,base是(PROC_THREAD、LOADER、DISK_IO、HARD_FAULTS、PROFILE和MEMIFO)所有内核事件的集合,并将数据记录到一个名为kernel.etl的日志文件中,这个文件一般在C盘根目录下。

第二条命令就是将内核事件收集到trace.etl这个文件中。

第三条命令就是使用xperfview这个工具将trace.etl使用图形化工具展现出来。

下面引出以下几个问题:

内核事件有哪些?

如何使用xperfview?

问题1:我们可以使用xperf –providers k获得内核事件列表,以及不同组所代表了不同内核事件的集合,内核事件列表如下文:

C:\windows\system32>xperf -providers k

Kernel Flags:

PROC_THREAD:记录进程的创建和删除

LOADER:记录内核模式和使用模式加载和卸载事件

PROFILE:捕获CPU采样的配置文件信息

CSWITCH:记录上下文切换()

COMPACT_CSWITCH:紧凑的上下文切换

DISPATCHER: CPU调度器

DPC: DPC事件

INTERRUPT:打断事件

SYSCALL:系统调用

PRIORITY:优先级变更事件

SPINLOCK:自旋锁的碰撞

ALPC:高级本地过程调用

PERF_COUNTER:进程项的性能计数器

DISK_IO: Disk I/O

DISK_IO_INIT: Disk I/O初始化

FILE_IO:文件系统操作的结束时间和结果

FILE_IO_INIT:文件操作系统(create/open/close/read/write)

HARD_FAULTS:硬件分页错误

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

SPLIT_IO:分裂I/O

REGISTRY:注册表的更改记录

DRIVERS:驱动事件

POWER:电源管理事件

NETWORKTRACE:网络事件(e.g., tcp/udp send/receive)

VIRT_ALLOC:虚拟分配保留和释放

MEMINFO:内存列表信息

ALL_FAULTS:所有的页面故障,包括硬上写,复制,需求零故障等

CONTMEMGEN:连续的内存生成器

POOL:跟踪池

CPU_CONFIG: NUMA拓扑结构,处理器组和处理器索引号映射。默认情况下,它始终处于启用状态。

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

总结:收集内核事件的通用命令公式如下:

Xperf -on [Kernel Flags| Kernel Groups]+ [KernelFlags| Kernel Groups]+…

问题2:如何使用xperfview

你可以使用命令将xperfview打开也可以直接找到程序安装目录将其打开。(直接在cmd中直接输入xperfview)

打开你保存好的etl文件,如下图:

Windows性能监控工具-xperf_第1张图片
监控图

这三个图分别是CPU使用率,进程的CPU使用率,线程的CPU使用率随着时间的变化而变化的趋势图,那么我们可以对上图进行如下操作:

1.在图上点击右键选择Summary Table查看CPU使用列表详情。

Windows性能监控工具-xperf_第2张图片
详情

备注:硬盘读写速度不是很好的话,建议大家使用Simple Summary Table。

Windows性能监控工具-xperf_第3张图片
详图

打开的列表详情包含了在监控性能的这段时间内整个系统的平均cpu使用率以及每个进程使用的平均CPU率以及改进程下调用模块的CPU使用率。

2.我们还可以对相应的曲线进行配色如图,只需双击下图的CPU#中的CPU 0,就会弹出Color框,点击相应的颜色后即可:

Windows性能监控工具-xperf_第4张图片
color选择

3.可以通过拉选范围对图形的局部进行分析可以做如下操作:放大选择范围,克隆选择范围,放弃放大,全选,选择指定范围

Windows性能监控工具-xperf_第5张图片
select zoom

4.选择指定显示的参数如下图,只显示4核CPU中的CPU1和CPU3

Windows性能监控工具-xperf_第6张图片
CPU select

5.选择任意两张图表合并对比,这样就能相互联系的看待问题;

Step1:右击图表,选择Overlay Graph然后选择需要合并的父项及子项。

Windows性能监控工具-xperf_第7张图片
Overlay Graph

Step2:合并后如下图所示:

Windows性能监控工具-xperf_第8张图片
Merge

2.3xperf使用中遇到的问题

Q1:Xperf支持的操作系统:

支持WINDOWS

VISTA, Windows Server 2008以及更高的操作系统,由于历史遗留问题,WINDOWS XP和WINDOWS Server 2003对WPT的支持不好,内核在开发的时候没有考虑到未来的程序性能调试的复杂度,所以xperf不支持WINDOWS XP和WINDOWS Server 2003。

Q2:Xperf收集数据时,一定要注意文件大小,而且读etl文件时对硬盘的读写速度要求也比较高,综合以上,实践中得出的建议监控时间为1小时,那很多时候拷机项的时间都是好几个小时的,这时候我们可以通过批处理来完成连续监控,且每个文件都收集1小时的,然而批处理没有sleep的用法,但这也很容易解决我们可以在批处理中调用VBS,VBS文件中简单的写上一句WScript.Sleep 3600即可。

Q3:由于数据收集你的硬盘也很有可能会爆,所以在监控之前先预估下硬盘大小是否支持。

3解决结果

使用Xperf工具很专业的解决了我们PCMT以及KDV1000的CPU监控需求,为我们基于WINDOWS上的终端提供了保障。

4总结

难能可贵的是该工具的权威性,专业性,稳定性还有它是免费的。所以很希望推荐大家使用这款工具。

你可能感兴趣的:(Windows性能监控工具-xperf)