如何确定Windows关机缓慢的原因?


30

我的计算机需要很长时间才能关闭。

我如何识别罪魁祸首?我不想等待几分钟关闭计算机...

是否可以使用程序来跟踪关机所需的时间?


1
我们不知道您的系统如何设置以及后台可能运行什么
随机

1
好的...我看到有人问了这个问题,然后删除了它,因为我正在撰写一个非常长而完整的答案...(对我自己感到抱歉)
wizlog 2011年

您总是可以为博客建议它
随机

2
按住电源按钮几秒钟。
Daniel R Hicks

5
这个问题是有效的,我可以客观地回答这个问题,以便解决他的问题。没有什么模棱两可的问题(问题是他的关机时间很长),模糊(他想加快关机速度),不完整(不需要详细信息,当然每台计算机都是不同的,但这并不能解决问题)找出罪魁祸首)(过于宽泛)(您可能会这样认为,但是我看不到其他任何有关关机故障的问题,所以这是一个非常有价值的问题;我认为,如果他想加快其他事情的发展,它将是广泛的)或修辞(涉及xperf)。
Tamara Wijsman

Answers:


31

Windows提供了性能计数器以及事件跟踪功能,这些功能使应用程序可以进行性能分析,以便可以查明性能问题的原因,其中存在一个出色的工具包:Windows SDK中提供了Windows Performance Toolkit

在此工具包,你会发现xbootmgr.exe,意味着的Windows开/关转换性能分析

尽管以上链接的文档详细介绍了每个on / off转换,但以下是使用xbootmgrxperf GUI 跟踪和分析关闭转换的一般思想:

  1. 下载Windows SDK,然后使用它安装Windows Performance Toolkit。

  2. 以管理员身份打开命令提示符,然后运行:

    cd %ProgramFiles%\Microsoft Windows Performance Toolkit

  3. 如果将来需要帮助,可以键入xbootmgr -helpxperf /?

  4. 做这样的重启跟踪:

    xbootmgr -trace shutdown -traceFlags BASE+DIAG+LATENCY -noPrepReboot

  5. 引导后,它将在两分钟内生成跟踪。

  6. 跟踪已保存在中%ProgramFiles%\Microsoft Windows Performance Toolkit,您可以将其拖动到上xperf.exe,然后将在GUI中将其打开。

  7. 您将看到带有不同图形的GUI,左侧的箭头允许您添加/删除图形。

  8. 查看图表,看看是否可以识别任何异常,如果需要,可以选择一个间隔并放大该间隔。要查看整体,请右键单击并取消缩放。

  9. 对于每个图形,您可以右键单击以获取当前选定间隔的摘要表。

  10. 在这些表中,按重量或时间排序以找出花费最多的时间。请注意,您可以在各列之间拖动,例如,I / O表可让您签出最高使用过程以及最高使用路径。

    用分隔符(黄色标题列)进行分隔,以便其右边的列显示其左边各列的总数。因此,如果首先具有Path,然后具有Process,则可以打开文件的树以查看哪些进程访问了它,然后获得该进程/文件组合的总数。

  11. 您可以在此处找到有关图形和表格如何运行的更多信息。

  12. 如果您需要以某种方式向下查看堆栈跟踪;执行另一个启动跟踪并添加-stackWalk profile参数,设置_NT_SYMBOL_PATH并右键单击任何图形并启用“加载符号”。这将允许您检查其实际调用的功能,但是通常您不需要关闭它;但是它可以允许您发现防火墙正在干扰您作为程序员的调试器。真漂亮...

祝你好运,我希望你能找到罪魁祸首。如果没有,请删除跟踪,我们将为您寻找...

请注意,DPC是延迟过程调用,而中断是软件中断,两者都与驱动程序/硬件有关。


1
很棒的有用答案。关于ETW的任何教程都非常有用。这是Windows的领域,没有文档,也没有GUI指南。
伊恩·博伊德

@Tom Wijsman链接需要更新
Moab

现在,它已成为Windows评估和部署工具包的一部分,可以在例如msdn.microsoft.com/en-us/windows/hardware/commercialize/test/…或仅通过搜索“ Windows ADK” 找到链接。在安装过程中,仅可以选择Performance Toolkit。
安德烈亚斯·里夫

现在它也是一部分,因为它仍可在SDK中使用。
塔玛拉·威斯曼

22

我的关机需要很长时间才能运行。以下是我的汤姆答案示例。

第一张图显示了该问题,磁盘I / O

在此处输入图片说明

我的关机耗时超过一分钟,全都是硬盘I / O。

下图磁盘使用率显示驱动器在100%的使用率下几乎达到最大值:

在此处输入图片说明

最后一张图显示了按进程划分的磁盘利用率

在此处输入图片说明

过滤下来,我意识到这全是由于WinInit.exe

在此处输入图片说明

通过右键单击任何硬盘驱动器图并选择Summary Table,我可以获得通过什么进程访问哪些文件的详细信息:

在此处输入图片说明

通过WinInit将6.7GB写入,我的关机时间为56.4秒C:\hiberfil.sys


但是问题是为什么 Windows在关机时会写入我的休眠文件?

然后我想起了关闭时已擦除该页面文件的选项:

  • 开始->运行-> SecPol.msc
    • 安全设置,本地策略,安全选项
    • 关机:清除虚拟内存页面文件

在此处输入图片说明

所以我禁用了该选项,然后xbootmgr再次运行。现在我的关机时间是22秒:

在此处输入图片说明

现在9s22s关闭时间是通过System写入一些unknown文件来完成的。这可能值得更多调查。

但是现在我已经解决了我一分半关门的问题。


我走得更远,解决了我的22s缓慢关机。从t = 12s到t = 21s显示磁盘利用率为 100%,但磁盘I / O为零。真是莫名其妙。

直到一次关机期间,我都听到了我的一个驱动器旋转的熟悉的声音。由于Windows试图访问已进入睡眠状态的磁盘,因此关机被暂停了9秒钟。九秒钟后,驱动器响应,一分钟后,机器关闭。

具有讽刺意味的是,Windows唤醒了磁盘以告知它该进入睡眠状态了。

那将使我的实际关机时间为13.5秒。那可能值得更多调查。但是现在我已经解决了22秒关机问题。


1
+1很高兴您能解决您的问题,并且帖子不错!
塔玛拉·威斯曼

1
这些答案值得写一篇博客文章,您认为呢?;)
Ivo Flipse
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.