偶尔我遇到处理器%中断时间较长的服务器(Windows 2003和2008)。 有没有办法看到什么程序或设备造成中断?
通过文档挖掘(基于这里的其他答案),这是我最终使用的过程:
捕获问题的ETW日志
最简单的方法是使用Windows性能logging器 。 我不确定何时第一次出现,但似乎是在最新版本的Windows中内置的。 将configuration文件设置为CPU usage
。
或者使用提升的命令提示符导航到包含它的文件夹,并使用命令行工具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).
停止跟踪/保存日志
xperf -d interrupt_trace.etl
在Windows Performance Analyzer
(Windows性能工具包的一部分)中打开跟踪; 有些地方提到使用xperfview
来代替。
展开Computation
– > CPU Usage (Sampled)
– > DPC and ISR Usage by Module, Stack
,右键单击add graph to analysis view
这指出了有关司机的权利。 在这种情况下,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/