我怎样才能找出是什么导致中断在Windows上?

偶尔我遇到处理器%中断时间较长的服务器(Windows 2003和2008)。 有没有办法看到什么程序或设备造成中断?

通过文档挖掘(基于这里的其他答案),这是我最终使用的过程:

  1. 捕获问题的ETW日志

    最简单的方法是使用Windows性能logging器 。 我不确定何时第一次出现,但似乎是在最新版本的Windows中内置的。 将configuration文件设置为CPU usage

    Windows性能记录器

    或者使用提升的命令提示符导航到包含它的文件夹,并使用命令行工具xperf:

     xperf -on base+interrupt+dpc 

    请注意,您将需要closures进程监视器或任何其他使用ETW的应用程序,否则会出现以下错误: xperf: error: NT Kernel Logger: Cannot create a file when that file already exists. (0xb7). xperf: error: NT Kernel Logger: Cannot create a file when that file already exists. (0xb7).

  2. 停止跟踪/保存日志

     xperf -d interrupt_trace.etl 
  3. Windows Performance Analyzer (Windows性能工具包的一部分)中打开跟踪; 有些地方提到使用xperfview来代替。

  4. 展开Computation – > CPU Usage (Sampled) – > DPC and ISR Usage by Module, Stack ,右键单击add graph to analysis view

    Windows性能分析器

  5. 这指出了有关司机的权利。 在这种情况下,HDAudBus.sys通过中断使用我的cpu的常量10.82%,这正是Process Explorer向我展示的。

如果你能处理底层的系统工具;

Windows性能分析器(WPA)

Windows性能分析器(WPA)是一组性能监视工具,用于生成Microsoft Windows操作系统和应用程序的深入性能configuration文件。

学习如何使用xperf之后; 查看;

DPC / ISR行动

DPC / ISR行动产生了一个文本报告,总结了DPC和ISR的各种指标。 此操作的用法是:

复制代码-dpcisr [-dpc -isr -summary -interval [n] -bucket [n] -range T1 T2]

选项

描述

DPC

仅显示DPC的统计数据

ISR

仅显示ISR的统计信息

概要

显示总结报告

区间[dt]

显示dt间隔的使用情况报告,默认为1秒

桶[dt]

显示dt的间隔直方图,默认为2秒

范围T1 T2

显示T1和T2之间的延迟

 If no data type is specified, default is to show report for both DPC 

和ISR。 如果未指定报告types,则默认打印全部三种报告。

这里是我find的关于如何做到这一点的最好的文章,包括教程,截图和下载链接到相关的工具:

http://www.msfn.org/board/topic/140263-how-to-get-the-cause-of-high-cpu-usage-by-dpc-interrupt/

看看Windows进程资源pipe理器:

http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

这应该有所帮助。