系統中斷的 CPU 使用率很高怎麼解決
系統中斷(System Interrupts)不是程式,它是工作管理員裡的一列,顯示 CPU 花在回應硬體上的時間,也就是裝置需要注意時由驅動程式執行的程式碼。數字低是正常的,本頁測量用的一台閒置筆電不到 1%。如果在安靜的電腦上它持續維持幾個百分點以上,通常是某個驅動程式或裝置有問題,所以解法是把那個找出來。你不能結束這一列,磁碟上也沒有任何叫系統中斷的東西。
這個數字的意思
裝置需要什麼的時候會中斷處理器:網路卡收到封包,或音訊裝置需要下一段緩衝。Windows 會立刻執行驅動程式的中斷常式,而 Microsoft 的驅動程式文件說這些常式必須盡快執行完,所以它們會把剩下的工作交給延遲程序呼叫(DPC),DPC 不久後執行,優先順序比中斷低,但在一般程式之前。系統中斷把這些時間加總起來。
這就是為什麼它造成的困擾比數字看起來更大。DPC 或中斷常式在某個核心上執行時,那裡的一般執行緒都得等著,所以慢的驅動程式會表現成音訊爆音、滑鼠卡頓或掉格。
要實際測量,因為工作管理員會四捨五入,而且一秒才取樣一次:
(Get-Counter '\Processor(_Total)\% DPC Time', '\Processor(_Total)\% Interrupt Time' -SampleInterval 2 -MaxSamples 5).CounterSamples | ForEach-Object { '{0} {1:N2}' -f $_.Path, $_.CookedValue }
本頁檢查時,在一台閒置、執行 Windows 11 的 ThinkPad 上,兩個數字都是 0.38。沒有官方的上限,但粗略來說,在安靜的電腦上,任何一個持續高於 5% 就值得追查。
找出驅動程式
先看有什麼改變,再逐一移除裝置,最後再測量。
- 拔掉所有不需要的東西:USB 集線器、網路攝影機、音訊介面、擴充座、印表機。每拔一個,觀察一分鐘數字的變化。故障的 USB 裝置是經典的原因,而且這一步不用花任何成本。
- 想想有什麼改變:這個問題開始之前,是不是剛更新了驅動程式或 Windows?在裝置管理員裡開啟該裝置的內容 › 驅動程式,試試回復驅動程式。
- 在裝置管理員裡一次停用一個可疑對象:先是 Wi-Fi 和藍牙介面卡,接著是音訊,再來是顯示器和磁碟以外的其他東西。觀察一分鐘,然後再啟用。
- 如果還是沒答案,就用 LatencyMon 測量。這個免費的 Resplendence 工具會依驅動程式回報 DPC 和 ISR 的時間。在問題發生時執行幾分鐘,再讀Drivers索引標籤,依最高執行時間排序。上面列出的檔案,例如網路的
ndis.sys或廠商的音訊驅動程式,就是該查的方向。 - 需要更多細節時錄製追蹤。Microsoft 的 Windows Performance Recorder 內建在 Windows 裡,需要系統管理員終端機:
wpr -start CPU
wpr -stop interrupts.etl
在症狀出現一分鐘後停止,然後在 Windows Performance Analyzer 裡開啟檔案,查看 DPC/ISR 圖表。
驅動程式名稱通常代表什麼
| 驅動程式或裝置 | 常見原因 | 試試看 |
|---|---|---|
ndis.sys、Wi-Fi 或乙太網路驅動程式 |
網路驅動程式,或上面疊的 VPN 或篩選器 | 從電腦或晶片廠商更新,關掉 VPN 測試 |
HDAudBus.sys、RtkHDAud.sys、USB 音訊 |
音訊驅動程式 | 從電腦廠商更新,或換另一個輸出測試 |
USBPORT.SYS、USBXHCI.SYS |
USB 裝置或集線器異常 | 一個個拔掉裝置,換個連接埠 |
nvlddmkm.sys、amdkmdag.sys、igdkmd64.sys |
顯示驅動程式 | 從 GPU 或電腦廠商乾淨更新 |
storport.sys、stornvme.sys |
磁碟或儲存裝置驅動程式 | 更新韌體,檢查磁碟健康狀態 |
ACPI.sys |
韌體或電源管理 | 從電腦廠商更新 BIOS 或 UEFI |
筆記型電腦請先看電腦廠商的支援頁面,因為它的驅動程式是為那組硬體做的。如果拔掉所有東西、驅動程式是最新、乾淨重新開機後數字還是很高,硬體就真的有可能,尤其是摔過或潑過水之後。Linux 隨身碟開機可以幫上忙:如果機器在那裡還是卡,Windows 驅動程式就比較不可能是原因。
不要這樣做
- 不要找結束它的方法。這一列背後沒有處理程序,工作管理員沒有東西可以停。
- 不要安裝驅動程式更新工具。它們常常替筆記型電腦選錯版本,這可能正是你想解決的問題。
- 不要照論壇文章去改登錄裡的中斷或 MSI 設定。錯誤的值可能讓電腦無法開機。
- 不要花錢買「系統最佳化工具」。裡面沒有任何東西能修好驅動程式的錯誤,它自己還會增加背景工作。
Mole 能幫上什麼
Mole for Windows 不會列出系統中斷,因為狀態頁讀取的是真正的處理程序,而這一列不是。它也沒有驅動程式工具。它的用處是排除另一邊:如果狀態顯示某個處理程序真的很吃力,問題可能出在那個處理程序,請先讀 Windows 的 CPU 使用率偏高。如果沒有任何處理程序能解釋這個負載,上面的步驟就是正確的路。想了解工作管理員裡其他不是一般程式的列,請見系統閒置處理程序。
常見問題
工作管理員裡的系統中斷是什麼?
它是 CPU 執行回應硬體的驅動程式碼所花的時間,顯示成單獨一列。它沒有檔案,背後也沒有任何程式。
系統中斷應該用掉多少 CPU?
閒置時通常遠低於 1%,在大量網路或磁碟工作時可能短暫升高。在安靜的電腦上持續維持幾個百分點,就值得調查。
可以停用系統中斷嗎?
不行。它不是服務也不是程式,它回報的是硬體需要完成的工作,所以解法在造成問題的驅動程式或裝置。
系統中斷是病毒嗎?
不是。惡意軟體可以執行自己的驅動程式,不過很少見,如果 LatencyMon 指出一個你不認得的驅動程式,用 Microsoft Defender 掃描是合理的。
為什麼系統中斷會讓我的音訊爆音?
那段程式碼會先於一般程式執行,所以慢的驅動程式會讓那個核心上的音訊程式,錯過它的下一段緩衝。LatencyMon 就是為這種情況設計的,它會指出是哪個驅動程式。