我怎样才能找出导致 Windows 中断的原因?

我怎样才能找出导致 Windows 中断的原因?

我偶尔会遇到处理器中断时间百分比较高的服务器(Windows 2003 和 2008)。有没有办法查看哪个程序或设备导致了中断?

答案1

在查阅了文档之后(基于这里的其他答案),我最终使用了以下过程:

  1. 捕获问题的 ETW 日志

    最简单的方法是使用Windows 性能记录器。我不确定它何时首次出现,但似乎已内置于最新版本的 Windows 中。将配置文件设置为CPU usage

    Windows 性能记录器

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

    xperf -on base+interrupt+dpc
    

    请注意,您需要关闭 Process Monitor 或任何其他使用 ETW 的应用程序,否则您将收到以下错误: 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 通过中断持续使用了 10.82% 的 CPU,这正是 Process Explorer 向我显示的内容。

答案2

如果您可以处理低级系统工具;

Windows 性能分析器 (WPA)

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

在您了解如何使用 xperf 之后;请查看;

DPC/ISR 行动

DPC/ISR 操作会生成一个文本报告,其中汇总了有关 DPC 和 ISR 的各种指标。此操作的用法如下:

语言:bash-a dpcisr[-dpc-isr-summary-interval[n]-bucket[n]-range t1 t2]

选项

描述

磷酸二酯酶

仅显示 DPC 的统计信息

情报、监视与侦察

仅显示 ISR 的统计数据

概括

显示摘要报告

间隔 [dt]

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

桶 [日期]

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

范围 T1 T2

显示 T1 和 T2 之间的延迟

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

和 ISR。如果没有指定报告类型,则默认打印所有三种报告。

答案3

这是我发现的有关如何执行此操作的最佳文章,其中包含教程、屏幕截图和相关工具的下载链接:

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

答案4

两个很棒的工具是LatencyMonDPC 延迟检查器

相关内容