如何找出 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 Performance Toolkit 的一部分);有些地方提到使用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 效能分析器 (WPA) 是一組效能監視工具,用於產生 Microsoft Windows 作業系統和應用程式的深入效能設定檔。

在您學習如何使用 xperf 後;查看;

DPC/ISR 行動

DPC/ISR 操作會產生一份文字報告,其中總結了 DPC 和 ISR 的各種指標。此操作的用法是:

語言:c-a dpcisr [-dpc -isr -summary -interval [n] -bucket [n] -range T1 T2 ]

選項

描述

資料中心

僅顯示 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

和情監偵。如果未指定報告類型,則預設列印所有三種報告。

答案3

這是我找到的有關如何執行此操作的最佳文章,其中包含教程、螢幕截圖以及相關工具的下載連結:

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

答案4

兩個很棒的工具是延遲一DPC 延遲檢查器

相關內容