我的 Windows 7 PC 经常会卡住几秒钟,最长可达半分钟左右。我试图找出问题所在进程监视器通过过滤所有耗时超过 2 秒的系统调用,发现这些调用始终具有以下堆栈跟踪段:
0 fltmgr.sys FltAcquirePushLockShared
1 fltmgr.sys FltIsCallbackDataDirty
2 fltmgr.sys fltmgr.sys
在大多数情况下,下一帧是 NtCreateFile。调用通常需要 2-10 秒,但在几乎空闲的系统上有时需要长达 50 秒。HDD(实际上是固态硬盘)似乎不是问题 -高清调谐基准测试和错误扫描均未显示任何问题,并且进程探索器也没有给出任何异常 CPU 或 IO 活动的迹象。而且我非常确定这不是病毒之类的。:-)
我如何才能找出实际问题?有什么有用的工具吗?
答案1
使用 WPT(Windows 8 SDK 的一部分)的 xperf 来跟踪磁盘 IO:
运行脚本,最小化 CMD 窗口,当再次遇到问题时,返回 cmd,等待 15-20 秒,按下某个键停止记录。使用 xperfview 打开它,并在磁盘 IO 图中查看哪些进程导致高磁盘 IO。