挂起通常不仅仅由资源使用引起。
我们这里讨论的不是短暂的冻结或缓慢,而是实际的挂起时间超过几秒钟。内存使用通常不是造成这种情况的主要原因,因为 Windows 7 会导致使用过多内存的程序崩溃。磁盘垃圾通常不是造成这种情况的主要原因,因为此类请求是异步的,并且某些必要的部分保留在内存中。
因此,您实际上必须需要一台旧计算机,才能让缓慢的情况看起来像挂起一样。或者是一个积极的资源消耗者,但你可以提前预料到它;正常使用时发生的挂起通常不是上面列出的情况......
挂起通常是由驱动程序引起的。
想象一下拥有 8 GB、八核处理器和 SSD RAID。我们现在容易挂起吗?不。
驱动程序(尤其是网络驱动程序)通常是导致挂起的罪魁祸首,因为由于驱动程序中的错误,它们正在等待应立即执行的某个操作以超时。即使对于您看不到任何资源使用情况的短暂挂起,DPC Latency Checker和更详细的LatencyMon也能出色地找出驱动程序的哪些延迟过程调用速度较慢。
这里的问题是人们不知道如何解决这个问题,我想说你可以通过这篇解释 XPerf 的文章来分析 Windows 上的任何性能问题。但人们通常最多只使用资源监视器,它提供的详细信息远不如 Process Explorer、Process Monitor 和 XPerf 等工具...
让我举一个如何解决典型挂起的例子。
我哥哥抱怨说,关闭他的一个互联网标签导致了 10 秒的冻结。
关闭选项卡后他无法移动鼠标。
我使用Windows SDK中的XPerf在非常低的水平上分析了他的系统的性能。
开始跟踪并确保它跟踪尽可能多的信息。
走到浏览器那里,让他浏览一段时间,出现问题时给我打电话。
立即停止了踪迹。
关闭 Facebook 选项卡会导致此行为。关闭 Google 标签不会。
网络驱动程序上可见一个尖峰。
在更详细的分析中,这是由于同时关闭的连接过多造成的。
这是有道理的,Facebook 做了很多异步 AJAX 调用。
当连接关闭时,驱动程序应该向目的地发送 FIN 或 RST 数据包。可能是等待完成或重置连接的确认执行得不好......
更新了网络驱动,问题解决。
归档时间: |
|
查看次数: |
24772 次 |
最近记录: |