当前位置:文档之家› 性能测试工具xperf初步认识

性能测试工具xperf初步认识

性能测试工具xperf初步认识(1)收藏
虽然平时测试真正去关注性能的时候不是很多,但这也正是不足,性能测试基本是任何软件产品测试必过的一关,因此能灵活使用一些性能分析工具是必须具备的能力。

最近同事推荐一款微软提供的性能测试工具xperf.据说很多OEM厂商要整机产品都通过所谓的Velocity项目,即由xperf把关,性能满足要求方可放出.
在使用这个工具之前,以下基础知识是需要先掌握的.
1、xperf工具来源
xperf是Windows Performance Tools Kit中的一个工具,这一系列强大的工具包主要针对操作系统启动阶段和关闭阶段进行底层的日志捕捉和性能分析.可以比较容易的发现启动和关闭过程中的主要瓶颈(比如加载特定驱动程序缓慢,访问特定文件出现问题等等),最新版本是 4.1.1.1,可以在/whdc/system/sysperf/perftools.mspx 免费下载到。

2、xperf工具介绍
xperf并不只一个工具,是一套工具集,这些工具目前包含一个xperf 跟踪捕获工具、一个xperfview 虚拟化工具(也称为性能分析器)和一个xbootmgr 启动跟踪捕获工具。

这些工具用于分析大量的性能问题,包括应用程序启动次数、启动问题、延迟的过程调用和中断活动(DPC 和ISR)、系统响应问题、应用程序资源利用和中断风暴。

3、xperf工具运行原理
xperf是在Event Tracing for Windows (ETW) 基础结构上生成的。

ETW 允许Windows 和应用程序有效地生成事件。

可以在任意时间启用和禁用事件,无
需重新启动系统或进程。

ETW 收集被请求的内核事件,并将其保存到一个或多个文件名为"trace files" 或者"traces" 的文件中。

这些内核事件提供了关于系统操作的大量详细信息。

用于捕获和分析的最重要和最有用的内核事件是:上下文切换、中断、DPC、进程和线程的创建和销毁、磁盘I/O、硬故障、处理器P 状态转换、寄存器操作,以及许多其他操作。

下一篇将从实际应用的角度慢慢去剖析这个工具的作用。

~~~~~~~~~~~~believe yourself ,nothing is impossible, write in 12.23.2008 by vivilorne~~~~~~~~~~~~~
性能测试工具xperf之系统启动(2)收藏
1.安装:
在网站/whdc/system/sysperf/perftools.mspx上下载你需要的最新版本,我下载的是WPT Kit, v.4.1.1 - x64 version,xperf_x64.msi。

安装非常简单,双击安装包,安装过程选择你喜欢的安装方式(我选择典型安装),其余全部默认。

安装位置默认安装在:C:\Program Files\Microsoft Windows Performance Toolkit\。

安装完成察看该目录可发现如下三个重要的工具:
Xbootmgr.exe 启动跟踪捕获工具
Xperf.exe 主要用于事件跟踪捕获
xperfview.exe 是一个可视化的性能分析器。

安装完成可在这里/en-us/library/cc305187.aspx察看帮助了解其使用方法。

2、系统启动性能分析:
常常会发现系统使用一段时间后,启动越来越慢,那么想知道到底是什么原因引起的问题吗?系统启动过程中到底经历了哪些步骤呢?到底是磁盘碎片太多,还是装了什么不好的软件导致的呢?
1)使用xbootmgr工具搜集启动的信息
以管理员身份运行cmd.exe,定位到C:\Program Files\Microsoft Windows Performance Toolkit\,输入命令:xbootmgr.exe -trace boot,命令执行后,vista 系统会自动重启,收集系统启动相关信息,重启完成后会弹出提示框让你等一两分钟,然后会发现在C:\Program Files\Microsoft Windows Performance Toolkit\目录下生成启动相关信息的日志文件boot_BASE+CSWITCH_1.etl
2)分析启动过程和性能
同样以管理员身份运行cmd.exe,定位到C:\Program Files\Microsoft Windows Performance Toolkit\,输入命令:xperf -i "boot_BASE+CSWITCH_1.etl" -o systemboot.xml -a boot,开始分析,同时在安装目录下生成systemboot.xml文件。

也可以不输出xml文件,xperf -i "boot_BASE+CSWITCH_1.etl" -a boot直接在命令行下分析。

发现没有,这个xml文件要分析起来还是比较费事的,而我们的xperfview.exe这个工具却还没有用上,ok,用它来看看。

输入命令:xperfview.exe "boot_BASE+CSWITCH_1.etl",可以发现xperfview分析完成之后生成了下方的图片。

将cup利用率,磁盘读写,磁盘利用率,启动时进程运行情况,服务运行情况,winlogon进程启动情况,都以图表的形式列出来,这样分析就简单多了。

下面分别来分析系统启动过程中的各个状态:
a)CPU使用:
从下图1中可以详细的看到在系统启动的各个时间段cpu占用情况,由于本机是双核cpu所以看到的是两条曲线。

可以看出系统启动过程中我的cpu 占用比较高,甚至达到100%,系统总的启动时间为170s
b)Disk I/O 读写
从下图2显示的是系统启动过程中磁盘读写情况,红色表示读,蓝色表示写,可以看出系统启动读磁盘比较多,交替的会有少量写的情况。

c)磁盘利用率(disk utilization)
下图3显示的是磁盘读写过程中磁盘的利用率,可以看出我的系统启动过程中大部分时间磁盘利用率都在100%,是vista系统启动过程中读写太频繁,还是有什么东西在作怪呢?
d)进程启动时间(process lifetimes)
图4是系统启动过程中启动了哪些进程,各个进程的启动时机和生命周期。

这个也是大家需要主要分析的地方,有可能就是这里面的一个进程导致你系统启动慢。

system和idle是系统最先启动的系统态进程,在真正的用户态进程启动是从smss.exe开始的,在这之前主要是windows内核和执行体包括运行在内核的各种驱动程序的启动时间,我的机器还好,仅花了不到十秒时间,有的系统装的东西太多,跑得太久,可能会花上上百秒的时间。

关注进程可以发现红色表示开始启动时间,蓝色表示启动完成。

结合下图5可以详细的分析每一个阶段,进程做的事情。

e) 下图5显示的是进程的磁盘利用率(disk utilization process)
如果要关注某一个阶段的进程读写情况,可以选中对应的时间段的详情,我这里选择系统刚启动这段时间,鼠标右键选择:Detail Graph,将详细列出各个磁盘的访问频度,如下图:
本机系统盘刚开始部分访问比较频繁,这是比较正常的,系统启动要读写windows相关目录的文件。

还可以在disk utilization process图中鼠标右键选择Summary Table,xperfview会以一个报表的形式显示这个时间段的进程操作情况。

f)服务启动一览(service)
通过图7的表可以系统启动过程中各个服务的启动顺序和时间,例如你可以查看杀毒软件的服务什么时候启动的,什么时候开始保护系统的。

g)系统登陆相关(winlogon)
如果想了解,系统登陆整个过程,和相关细节,可以查看winlogon图表。

由于我的机子整个启动过程还比较正常,所以没有发现什么问题,但是通过分析可以了解整个系统的启动过程,也是很美妙的事情。

相关主题