您的位置:首页 > 职场人生

Windows Vista 性能分析:如何使用 xperf 获取精确的启动性能数据

2008-10-27 16:40 831 查看
最近偷懒一下,忙着内审的准备工作,贴一些老文章上来
作者就是大名鼎鼎的sreng的作者

张康宗(Smallfrogs)
http://www.KZTechs.com
最近一段时间,我笔记本上Windows Vista的启动速度越来越慢了,启动时候的滚动条需要滚数十圈才能完成,而到 Explorer 显示完桌面,系统启动全部完成,需要4分多钟,已经慢的不可忍受了。本想重装系统,但是重装的代价也太大了,我需要重新配置太多东西,于是乎我就想如果找到启动性能的关键瓶颈,对这个瓶颈进行优化以后应该能够解决一些问题。
要解决问题,就需要准确的收集相关的性能信息,我们知道,在Windows XP时代,可以使用 Bootvis 工具收集相关的信息。

Bootvis:一个专门用于收集和分析 Windows XP 启动速度的工具。曾经很不幸的被错误的认为是 Windows XP 的启动速度优化工具。
但是由于 Windows Vista 内核体系的变革,加上全新的引导模式的引入,BootVis 肯定是不能胜任的,看来需要找到一个更好的获取 Windows Vista 相关性能数据的办法了。
Microsoft Windows Performance Toolkit(简称xperf),一个全新的Windows 性能分析工具在这个时候走入我的视线。
Microsoft Windows Performance Toolkit 是微软最近一段时间内推荐的丈量 Windows 性能的一个全新的工具,适合于 Windows Vista 或更高版本。最新版本是 4.1.1.1,可以在 http://www.microsoft.com/whdc/system/sysperf/perftools.mspx 免费下载到。
安装 Microsoft Windows Performance Toolkit 的过程非常的简单,安装完成以后,就需要开始收集相关的性能数据了。本次我关注的是 Windows Vista 的启动速度,因此我需要收集的是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 的报告文件。这个
下面我要说的是一个更细致的分析过程。

打开 etl 文件:使用
xperfview boot_BASE+CSWITCH_1.etl
命令,会调用 xperfview 工具对 etl 文件进行详细的解析。etl 文件是 Microsoft Windows Performance Toolkit 原始的性能数据文件,里面记录了所有收集到的数据。
xperfview 解析完成以后,会看到类似于下方的图片:



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

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

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




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


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

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




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

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

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

在进行系统性能优化和分析的过程中,数据的收集是至关重要的。业界有很多性能数据收集工具,Microsoft也出了不少类似的软件,但是易用性都不是很好。Microsoft Windows Performance Toolkit 作为一款新型的面向于Windows Vista 或更高平台的性能工具,以其简单的操作和友好的界面,希望能够得到更多的使用和更广泛使用。

在本次的 Windows Vista 性能分析里面,我介绍了一个使用 xperf 对Windows Vista 启动速度进行分析的过程,在后续的 Windows Vista 性能分析系列BLOG文章里面,我还会持续关注在更多的和 Windows Vista 性能相关的话题上面,希望能够让大家对 Windows 性能有一个更好的认识。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vista 职场 休闲