xperf工具集的介绍


转自 iteam的共享空间 的日志

xperf 是Windows Performance Tools Kit中的一个工具,这一系列强大的工具包主要针对操作系统启动阶段和关闭阶段进行底层的日志捕捉和性能分析.可以比较容易的发现启动和关闭过程中的主要瓶颈(比如加载特定驱动程序缓慢,访问特定文件出现问题等等)

最近有不少朋友用了这个工具进行了优化,但是也需要注意一些问题:

1)??在进行任何优化操作之前,充分评估风险,避免数据遗失。

2) 有些优化涉及到主分区表的碎片整理,这一步需要非常的谨慎,有一些碎片整理工具根Vista存在兼容性问题,可能会导致MFT损坏。建议上网查找一些兼容Vista的磁盘碎片整理工具。

xperf工具集的介绍

Windows Performance Tools (WPT) Kit 包含若干性能分析工具,这些工具对于 Windows SDK for Windows Server 2008 和 .NET Framework 3.5 而言是新工具。WPT Kit 对许多人员都很有用,包括系统构建者、硬件制造商、驱动程序开发人员和常规应用程序开发人员。这些工具用于测量和分析 Windows Vista、Windows Server 2008 和更高版本上的系统和应用程序的性能。

这些工具目前包含一个 xperf 跟踪捕获工具、一个 xperfview 虚拟化工具(也称为性能分析器)和一个 xbootmgr 启动跟踪捕获工具。这些工具用于分析大量的性能问题,包括应用程序启动次数、启动问题、延迟的过程调用和中断活动(DPC 和 ISR)、系统响应问题、应用程序资源利用和中断风暴。MSI 包含这些工具,其位于 SDK bin 文件夹中(每个体系结构都有一个此文件夹)。

这些工具是在 Event Tracing for Windows (ETW) 基础结构上生成的。ETW 允许 Windows 和应用程序有效地生成事件。可以在任意时间启用和禁用事件,无需重新启动系统或进程。ETW 收集被请求的内核事件,并将其保存到一个或多个文件名为 "trace files" 或者 "traces" 的文件中。

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

如果我需要收集的是Boot阶段的数据。??

用管理员模式启动 cmd.exe,然后进入 Microsoft Windows Performance Toolkit 安装目录,输入下面的命令:??

xbootmgr.exe -trace boot??

输入这个命令以后,xbootmgr 会自动重启系统,然后开始收集相关的启动信息数据。重启完成以后,xbootmgr 会等待 explorer 全部启动完成以后,生成一个日志文件(扩展名是:etl)到 Microsoft Windows Performance Toolkit 安装目录下面。下面我们需要对这个文件进行分析。??

分析的过程有很多方法,最简单的方法就是进入命令行模式,切换到 Microsoft Windows Performance Toolkit 安装目录下,输入 xperf -i boot_BASE+CSWITCH_1.etl -o boot.xml -a boot 命令自动分析,然后输出一个 xml 的报告文件。这个??

下面我要说的是一个更细致的分析过程。??

1、打开 etl 文件:使用 xperfview boot_BASE+CSWITCH_1.etl 命令,会调用 xperfview 工具对 etl 文件进行详细的解析。etl 文件是 Microsoft Windows Performance Toolkit 原始的性能数据文件,里面记录了所有收集到的数据。

2、xperfview 解析完成以后,会看到类似于下方的图片:

点击查看原大图片

3、找到 process lifetimes 分类(如上图),会发现到50多秒的时候,系统里面的第一个用户态进程smss.exe才启动(进程ID:748),之前的时间都花费在 system 上。换句话说,运行在内核态的各种驱动程序,包括 Windows 内核和执行体用了 50 多秒才完成启动子系统之前的初始化动作,这个时间花费的也太长了。??

由于初始化 Windows 内核和执行体等动作用了 50 多秒,这个非常的不正常,因为我们需要看看在这50秒内的详情。??

在 Disk Utilization by process 里面,选择 0-50 秒这个时间段:

点击查看原大图片

4、然后点击鼠标右键,选择 Detail Graph,会出现下面的图:

点击查看原大图片

在这个图片里面,可以看在 0-50 秒内磁盘访问最高的区域是什么,C盘中间部分的访问频度非常的高。更细致的数值分析就需要使用另外一张报表了。??

5、在 Disk Utilization by process 里面,还是选择 0-50 秒这个时间段:点击鼠标右键,选择 Summary Table,xprefview 会显示如下图所示的报告,这个报告对于分析性能分析来说,会显得会更为直观一点。

这张图标给了我们一个非常详细的性能分析和解释数据。在 0-50 秒时间内,system 进程花费了 42445587.434 us 的时间,其中,花费最多的时间是在处理 MFT 表的时候,尽然用了近10秒的时间。

Vista之家小贴士:什么是$MFT,什么是MFT?

NTFS是自Windows NT开始引入的文件系统,它具有许多新特性。NTFS中,卷中所有存放的数据均在一个叫$MFT的文件中,叫主文件表(Master File Table)。而$MFT则由文件记录(File Record)数组构成。File Record的大小一般是固定的,通常情况下均为1KB,这个概念相当于Linux中的inode。File Record在$MFT文件中物理上是连续的,且从0开始编号。$MFT仅供File System本身组织、架构文件系统使用,这在NTFS中称为元数据(Metadata)。

6、根据上面的数据,我们已经找到了在启动最开始的50秒时间内,有10秒钟的时间花费在了出来MFT表上面,另外,读取一些字体文件的时间也非常的慢。??

7、知道数值以后,后面就是优化过程了。根据 xperf 给出的数据初步判断:开机慢的原因和文件IO速度变慢是相关的。有人会问,而影响文件IO速度慢的原因有很多,但是请注意一点,在前50秒内,由于没有任何的用户态进程介入,因此IO速度慢的原因就很简单了,大部分原因是因为磁盘碎片导致的,也有可能是由于硬盘坏道导致的。根据 xperf 的数据,处理MFT表用了10秒钟时间,如果能够把MFT的处理时间加快,同时减小碎片数量,系统的启动速度就能加快不少了(Vista之家提示:Vista自带的磁盘碎片整理是不支持MFT整理的,而DiskKeeper这样的软件虽然支持但是很容易造成磁盘分区表损害,慎之慎之)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值