用xperf查看系统启动过程

背景

一直想了解windows启动时,执行了哪些操作,调用了哪些函数,好对系统启动进行优化工作。有什么好的方法或者工具可以帮助了解。这就是今天故事所要介绍的主角-Xperf。

Xperf是一个先进的故障调试工具,可深入调试各种性能问题,其高度是Perfmon无法企及的。它是产品套件Windows性能工具包(Windows Performance Toolkit ,WPT)的一部分,而WPT则属于微软软件开发包(Microsoft Software Development Kit ,SDK)。Xperf是Windows事件跟踪系统(Event Tracing for Windows,ETW)的补充。ETW则是服务器操作系统的一个内置组件,提供详细的系统性能和系统数据。

问题

了解操作系统启动慢的原因,加快系统启动速度。

Xperf工具还能够处理诸多问题,如系统响应问题、启动缓慢、高CPU和磁盘利用率、应用程序延迟及响应缓慢等。它支持在x86、x64和IA-64等平台上的跨平台使用时CPU占用低于2.5%,同时每秒能收集超过20000个系统事件。

 

依赖

  1. Microsoft .NET Framework 4
  2. Windows软件开发包

安装时选择Windows性能套件(Windows Performance Toolkit)和Windows调试工具(Debugging Tools for Windows)这两个选项,如图1所示。

用xperf查看系统启动过程_第1张图片

                             图1:Windows SDK的安装选项

默认安装目录:C:\Program Files\Microsoft Windows Performance Toolkit

步骤

应用场景

关注系统启动速度,收集Boot阶段数据

启动程序,数集数据

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

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

默认文件名为:boot_BASE+CSWITCH_1.etl

数据分析

1. 打开etl文件,输入命令:xperfview boot_BASE+CSWITCH_1.etl ,生成下方图片:

用xperf查看系统启动过程_第2张图片

2. 找到 process lifetimes 分类(如上图),

用xperf查看系统启动过程_第3张图片

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

由于初始化 Windows 内核和执行体等动作用了 50 多秒,这个非常的不正常,因为我们需要看看在这50秒内的详情。
在 Disk Utilization by process 里面,选择 0-50 秒这个时间段:

用xperf查看系统启动过程_第4张图片

 

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

 

用xperf查看系统启动过程_第5张图片

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

用xperf查看系统启动过程_第6张图片

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

系统优化

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

 

引用:玩转微软官方性能分析工具xperf,追查Vista开机慢之根源

你可能感兴趣的:(XP)