我的计算机需要很长时间才能关闭。
我如何识别罪魁祸首?我不想等待几分钟关闭计算机...
是否可以使用程序来跟踪关机所需的时间?
我的计算机需要很长时间才能关闭。
我如何识别罪魁祸首?我不想等待几分钟关闭计算机...
是否可以使用程序来跟踪关机所需的时间?
Answers:
Windows提供了性能计数器以及事件跟踪功能,这些功能使应用程序可以进行性能分析,以便可以查明性能问题的原因,其中存在一个出色的工具包:Windows SDK中提供了Windows Performance Toolkit。
在此工具包,你会发现xbootmgr.exe
,意味着的Windows开/关转换性能分析。
尽管以上链接的文档详细介绍了每个on / off转换,但以下是使用xbootmgr
xperf GUI 跟踪和分析关闭转换的一般思想:
下载Windows SDK,然后使用它安装Windows Performance Toolkit。
以管理员身份打开命令提示符,然后运行:
cd %ProgramFiles%\Microsoft Windows Performance Toolkit
如果将来需要帮助,可以键入xbootmgr -help
或xperf /?
。
做这样的重启跟踪:
xbootmgr -trace shutdown -traceFlags BASE+DIAG+LATENCY -noPrepReboot
引导后,它将在两分钟内生成跟踪。
跟踪已保存在中%ProgramFiles%\Microsoft Windows Performance Toolkit
,您可以将其拖动到上xperf.exe
,然后将在GUI中将其打开。
您将看到带有不同图形的GUI,左侧的箭头允许您添加/删除图形。
查看图表,看看是否可以识别任何异常,如果需要,可以选择一个间隔并放大该间隔。要查看整体,请右键单击并取消缩放。
对于每个图形,您可以右键单击以获取当前选定间隔的摘要表。
在这些表中,按重量或时间排序以找出花费最多的时间。请注意,您可以在各列之间拖动,例如,I / O表可让您签出最高使用过程以及最高使用路径。
用分隔符(黄色标题列)进行分隔,以便其右边的列显示其左边各列的总数。因此,如果首先具有Path,然后具有Process,则可以打开文件的树以查看哪些进程访问了它,然后获得该进程/文件组合的总数。
您可以在此处找到有关图形和表格如何运行的更多信息。
如果您需要以某种方式向下查看堆栈跟踪;执行另一个启动跟踪并添加-stackWalk profile
参数,设置_NT_SYMBOL_PATH并右键单击任何图形并启用“加载符号”。这将允许您检查其实际调用的功能,但是通常您不需要关闭它;但是它可以允许您发现防火墙正在干扰您作为程序员的调试器。真漂亮...
祝你好运,我希望你能找到罪魁祸首。如果没有,请删除跟踪,我们将为您寻找...
我的关机需要很长时间才能运行。以下是我的汤姆答案示例。
第一张图显示了该问题,磁盘I / O:
我的关机耗时超过一分钟,全都是硬盘I / O。
下图磁盘使用率显示驱动器在100%的使用率下几乎达到最大值:
最后一张图显示了按进程划分的磁盘利用率:
过滤下来,我意识到这全是由于WinInit.exe
:
通过右键单击任何硬盘驱动器图并选择Summary Table,我可以获得通过什么进程访问哪些文件的详细信息:
通过WinInit
将6.7GB写入,我的关机时间为56.4秒C:\hiberfil.sys
。
但是问题是为什么 Windows在关机时会写入我的休眠文件?
然后我想起了关闭时已擦除该页面文件的选项:
所以我禁用了该选项,然后xbootmgr
再次运行。现在我的关机时间是22秒:
现在9s
,22s
关闭时间是通过System
写入一些unknown
文件来完成的。这可能值得更多调查。
但是现在我已经解决了我一分半关门的问题。
我走得更远,解决了我的22s缓慢关机。从t = 12s
到t = 21s
显示磁盘利用率为 100%,但磁盘I / O为零。真是莫名其妙。
直到一次关机期间,我都听到了我的一个驱动器旋转的熟悉的声音。由于Windows试图访问已进入睡眠状态的磁盘,因此关机被暂停了9秒钟。九秒钟后,驱动器响应,一分钟后,机器关闭。
具有讽刺意味的是,Windows唤醒了磁盘以告知它该进入睡眠状态了。
那将使我的实际关机时间为13.5秒。那可能值得更多调查。但是现在我已经解决了22秒关机问题。