微软性能分析:如何知道启动过程何时完成?

微软性能分析:如何知道启动过程何时完成?

我让程序运行起来了,但我似乎不知道如何获取启动事件。我尝试了操作,但微软的文档严重不足。

我能够通过以下命令使用启动管理器:

xbootmgr -trace rebootCycle -noPrepReboot -traceFlags BASE+CSWITCH+DRIVERS+POWER+REGISTRY -resultPath C:\

这很有效,但我似乎无法找出启动系统需要多长时间。在 BootVis 中,这真的很容易,它会明确显示启动过程何时完成以及哪些内容占用了该处理时间。在 Microsoft Windows Performance Toolkit 的新版本中,这似乎不那么容易,但也许我遗漏了一些东西。

我如何知道启动过程何时完成?

更新:我越来越多地查看这些图表,但始终找不到确切的启动时间(不是自上次启动以来的时间,而是启动系统所用的时间)。有人真的用过这个工具吗?似乎根本没人对这个问题感兴趣!

更新 2:这里有一个截图,显示了在 BootVis 中它是多么简单:

替代文本

现在,当我运行xperf –i "boot_base+cswitch+compact_cswitch_1.etl" –o boot_1.xml –a boot“我收到以下错误:

替代文本

答案1

首先推荐一下Windows启动过程及性能分析的文档:

http://www.microsoft.com/whdc/system/sysperf/On-Off_Transition.mspx

它很长,但几乎描述了你需要知道的一切。趁此机会,看看 MSDN 上的 Xbootmgr 文档:

http://msdn.microsoft.com/hu-hu/library/cc526988(en-us).aspx

快速解决方法是:

  1. 运行 Xbootmgr 来捕获时间跟踪

    xbootmgr –trace boot -traceFlags base+cswitch+compact_cswitch
    

    (设置–traceFlags为此项会导致跟踪文件大小更小并且对启动性能的影响更小)

  2. 运行 Xperf 将跟踪文件处理为 XML

    xperf –i "boot_base+cswitch+compact_cswitch_1.etl" –o boot_1.xml –a boot
    

    其中-i代表输入文件,-o代表输出文件

  3. 使用 Internet Explorer 打开 XML 文件并接受安全警告,这样您就可以折叠并打开 XML 节点

    在此处输入图片描述

启动过程包括五个阶段:

  • 预SMSS
  • 短信服务
  • 初始化
  • 探索器初始化
  • 后探索者时期

ExplorerInit 的结束意味着桌面显示出来(Xperfview 中 ExplorerDesktopReady 标记)。用户可以与桌面交互,但系统仍然忙于启动后台服务和启动应用程序。

在最后一个阶段,PostExplorerPeriod Xperf 每 100 毫秒对系统进行一次采样,并检查其空闲率是否达到 80% 或更多。当系统累计空闲时间达到 10 秒(100 个时间片)时,PostExplorerPeriod 阶段结束。

因此,总启动时间是通过从时间结束后探索者时期(或来自通过启动后完成

那是29386 – 10000 = 19386 = 19.386如上图所示,

根据我的实验,Bootvis 的“启动完成”标记似乎等于 Xperfview 的 ExplorerStartMenuReady 标记。

在此处输入图片描述

注意:以上跟踪是在 VMware 中运行的 Windows XP 虚拟机上进行的。

答案2

您使用的命令应该仅跟踪启动过程,因此基本上您看到的所有内容(理论上)都是启动过程的一部分。

请参阅此文章:使用 Windows 性能工具包加快 Windows Vista 的启动时间

它具体展示了如何运行 xperfview 程序,这是一个可视化分析器,可以让你直观地看到整个启动过程:

图像

答案3

这些是“人为”的要求,使用模糊控制器可以轻松处理。您甚至可以使用它来估算启动完成百分比和剩余秒数。这是一个实现它的简单且免费的应用程序:

http://www.eyesonpeople.com/en/startup-bar/

该应用程序完全由我构思、设计、开发和发布。

相关内容