如何在登录过程之前/期间分析性能问题?

Der*_*ler 18 windows performance

如何分析登录过程之前或过程中发生的性能问题?

Der*_*ler 36

使用进程监视器

进程监视器是一个工具,它将收集所有正在运行的进程的文件系统、注册表和网络事件。然后可以分析收集到的事件以确定系统(或应用程序)在某些情况下的内部行为。

在这种情况下,我们希望利用该工具来确定引导过程中哪些事件需要很长时间才能完成。

  1. 下载进程监视器并运行它。

  2. Options菜单中,选中Enable Boot Logging

    启用引导日志

  3. 在出现的对话框中,选中Generate profiling events并单击OK

    生成分析事件

  4. 重新启动系统并复制您的问题。登录过程完成后,启动进程监视器。

  5. Process Monitor 会通知您它收集了启动时活动,并会询问您是否要立即保存该数据。单击Yes确认该过程。

    保存启动时活动

  6. .pml文件选择合适的存储位置并等待数据转换。加载数据后,通过打开列标题之一上的上下文菜单并单击选择列...来显示持续时间列。

    选择列...

    ...并在结果对话框中选中相应的复选框。

    持续时间复选框

  7. 通过从 **Filter菜单中选择Filter...* 来创建一个新的过滤

    过滤器菜单

  8. Duration列创建一个过滤器,它的值大于1,在这种情况下,条目应为Included。单击“添加”将过滤器添加到列表中,然后单击“确定”确认选择。

    在此处输入图片说明

  9. 此时,Process Monitor 中的事件列表将仅显示完成时间超过 1 秒的事件。您将需要检查Duration列中是否有需要很长时间才能完成的事件。

    出于演示目的,这里选择了花费超过 10 秒才能完成的事件。出于演示目的,这是在虚拟机中捕获的。

    示例事件
    点击放大

    虽然这些事件不一定是阻止登录过程完成的罪魁祸首,但在此安装中禁用 Windows 索引服务和 Avast Anti-Virus 可能值得一试。

使用 xperf

xperf 是 Windows Performance Toolkit 中的一个性能分析工具。使用它并能够分析收集的数据可能是一个挑战。不过,我们将了解如何收集所需数据以及如何查看其相关部分。

请注意,为此所需的 Windows 评估和部署工具包 (ADK) 仅适用于 Windows 7 及更高版本。

  1. 下载Windows ADK并至少安装Windows Performance Toolkit组件。

  2. 安装完成后,打开提升的命令提示符。

    高架命令提示符

  3. 切换到您希望跟踪所在的目录。像桌面。

  4. 推荐的方法(根据使用 XBOOTMGR 捕获缓慢启动,或由缓慢启动引起的缓慢登录)在引导期间捕获跟踪是:

    xbootmgr -trace boot -traceflags base+latency+dispatcher -stackwalk profile+cswitch+readythread -notraceflagsinfilename -postbootdelay 10

    系统现在将启动跟踪并重新启动。

  5. 重新启动后,按照屏幕上的说明进行操作。您将被要求允许提升收集过程。该过程完成后,您将在启动跟踪的文件夹中找到生成的跟踪。

    就我而言,它在桌面上创建了一个boot_1.etl(和一个相应的boot_1.cab)。

    .etlWindows Performance Analyzer 中打开文件。

分析

打开跟踪后,您已经可以看到问题与硬件有关的可能迹象。快速浏览图形资源管理器中的计算存储内存概述将显示应进一步分析的峰值。

出于演示目的,让我们看一下“进程利用率”图。要显示内容,只需双击图形将其添加到分析视图。

Windows 性能分析器概述
点击放大

请注意,没有任何图表显示任何相关峰值。开始时的蓝色峰值属于系统进程,预计会在此时发生。

CPU 使用率图中的其他峰值可能在上下文中更好地查看。因此,让我们向分析视图添加另一个图形。我们正在寻找的图是引导阶段图,它位于系统活动部分。

启动阶段
点击放大

在上面的屏幕截图中,我还在底部添加了通用事件图以提供额外的上下文。但是,这里应该注意的是,CPU 使用率的第一个可见峰值是由 Avast 服务引起的。我们在 Process Monitor 分析中已经注意到,这个进程是在启动过程中占用大量时间的进程之一。

我们还看到这里,现在我们可以看到它在启动阶段的背景下,是高峰期发生Winlogon中初始化阶段(甚至在后启动阶段发生的时候,你已经可以看到桌面)。因此,在我们看到桌面之前的阶段,这个过程实际上不太可能给我们造成问题,因此可能被认为不太可能。

我们要寻找的是发生在Winlogon Init阶段中或周围的事件。为了更容易,您可以在 Boot Phases 图中选择阶段。这将突出显示该阶段发生的所有图表中的所有条目。

一个更好看的图当然是服务图,因为它们中的大多数是在 Winlogon Init 阶段启动的。

正如我在介绍中所说,分析这些数据可能很复杂,除非打开跟踪后问题就出现在您身上。但是,这绝对是分析问题的正确工具。根据情况,您甚至可能想用它收集堆栈跟踪以进行更深入的钻探。不过,这个过程远远超出了这篇文章的范围。

进一步阅读