
我偶爾會遇到處理器中斷時間百分比較高的伺服器(Windows 2003 和 2008)。有沒有辦法查看哪個程式或設備導致了中斷?
答案1
在深入研究文件後(基於此處的其他答案),這是我最終使用的過程:
捕捉問題的 ETW 日誌
最簡單的方法是使用Windows 效能記錄器。我不確定它何時首次出現,但似乎內建在最新版本的 Windows 中。將設定檔設定為
CPU usage
.或者,使用提升的命令提示符,導航到包含它的資料夾並使用命令列工具 xperf:
xperf -on base+interrupt+dpc
請注意,您需要關閉 Process Monitor 或任何其他使用 ETW 的應用程序,否則您將收到以下錯誤:
xperf: error: NT Kernel Logger: Cannot create a file when that file already exists. (0xb7).
停止追蹤/保存日誌
xperf -d interrupt_trace.etl
開啟追蹤
Windows Performance Analyzer
(Windows Performance Toolkit 的一部分);有些地方提到使用xperfview
代替。展開
Computation
->CPU Usage (Sampled)
->DPC and ISR Usage by Module, Stack
,右鍵單擊並add graph to analysis view
這正好指向了有問題的司機。在本例中,HDAudBus.sys 透過中斷持續使用 10.82% 的 CPU,這正是 Process Explorer 向我顯示的內容。
答案2
如果你能處理低階系統工具;
Windows 效能分析器 (WPA) 是一組效能監視工具,用於產生 Microsoft Windows 作業系統和應用程式的深入效能設定檔。
在您學習如何使用 xperf 後;查看;
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/