如何分析登录过程之前或期间发生的性能问题?
答案1
使用进程监视器
进程监视器是一款收集所有正在运行的进程的文件系统、注册表和网络事件的工具。然后可以分析收集到的事件以确定系统(或应用程序)的行为方式内部在某些情况下。
在这种情况下,我们希望利用该工具来确定启动过程中哪些事件需要很长时间才能完成。
下载进程监控并运行它。
在里面选项菜单,检查启用启动日志。
在出现的对话框中,检查生成分析事件并点击好的。
重新启动系统并复制您的问题。登录过程完成后,启动 Process Monitor。
Process Monitor 将通知您它已收集启动时活动,并询问您是否要立即保存该数据。单击是的。
选择合适的文件存储位置
.pml
并等待数据转换。加载数据后,显示期间通过打开其中一个列标题上的上下文菜单并单击选择列......并在出现的对话框中选中相应的复选框。
通过选择创建新过滤器过滤器...* 来自 **过滤器菜单。
为以下项创建过滤器期间列多于值1,在这种情况下,条目应该是包括。 点击添加将过滤器添加到列表中,然后确认选择好的。
此时,进程监视器中的事件列表将仅显示完成时间超过 1 秒的事件。您需要检查期间需要很长时间才能完成的事件列。
为了演示目的,这里选取了耗时超过 10 秒的事件。这些事件是在虚拟机中捕获的,用于演示目的。
虽然这些事件不一定是阻止登录过程完成的罪魁祸首,但禁用 Windows 索引服务和 Avast Anti-Virus 可能会值得一试。
使用 xperf
xperf 是 Windows Performance Toolkit 中的一个性能分析工具。使用它并分析收集的数据可能是一个挑战。不过,我们将了解如何收集所需的数据以及如何查看其中的相关部分。
请注意,此操作所需的 Windows 评估和部署工具包 (ADK) 仅适用于 Windows 7 及更高版本。
下载Windows ADK并至少安装Windows 性能工具包成分。
安装完成后,打开提升的命令提示符。
切换到您想要跟踪的目录。例如桌面。
推荐的方式(根据使用 XBOOTMGR 捕获启动缓慢或由启动缓慢导致的登录缓慢)在启动期间捕获跟踪的方法是:
xbootmgr -trace boot -traceflags base+latency+dispatcher -stackwalk profile+cswitch+readythread -notraceflagsinfilename -postbootdelay 10
系统现在将启动跟踪并重新启动。
重启后,按照屏幕上的说明操作。系统将要求您允许收集过程提升。该过程完成后,您会在启动跟踪的文件夹中找到结果跟踪。
就我而言,它在桌面上创建了一个
boot_1.etl
(和一个对应的)。boot_1.cab
.etl
在以下位置打开文件Windows 性能分析器。
分析
打开跟踪后,您已经可以看到问题可能与硬件相关的迹象。快速查看计算,贮存和记忆概述图形浏览器将显示需要进一步分析的峰值。
为了演示目的,我们来看看按进程利用率图形。要显示内容,只需双击图形即可将其添加到分析看法。
请注意,所有图表均未显示任何令人担忧的峰值。开头的蓝色峰值属于系统过程并预计此时发生。
CPU 使用率图表中的其他峰值可能更适合在上下文中查看。因此,让我们在分析视图中添加另一个图表。我们要查找的图表是启动阶段图,位于系统活动部分。
在上面的截图中,我还添加了通用事件底部的图表提供了更多背景信息。然而,应该这里需要注意的是,第一个可见的 CPU 使用率峰值是由 Avast 服务引起的。我们已经在 Process Monitor 分析中注意到,该进程是启动过程中占用大量时间的进程之一。
我们现在可以在启动阶段的背景下看到,峰值发生在后这初始化阶段(甚至在启动后阶段(即您已经可以看到桌面时发生的阶段)。因此,在我们看到桌面之前的阶段,这个过程实际上不太可能给我们带来问题。
我们要寻找的是发生在初始化阶段。为了方便起见,您可以在启动阶段图表中选择该阶段。这将突出显示该阶段发生的所有图表中的所有条目。
一个更值得一看的图表当然是服务图表,因为它们大多数都是在 Winlogon Init 阶段启动的。
正如我在介绍中所说,分析这些数据可能很复杂,除非你打开跟踪后问题就立刻出现了。然而,这绝对是分析问题的正确工具。根据情况,你甚至可能希望用它收集堆栈跟踪以进行更深入的挖掘。不过,这个过程远远超出了这篇文章的范围。
进一步阅读
- 解决启动缓慢和登录缓慢问题的工具 (sbsl)(TechNet)
- 慢启动慢登录 (SBSL),一种名为 XPerf 的工具以及您需要阅读的链接(TechNet 博客)