WMI Provider Host CPU 使用率高怎麼解決
工作管理員裡的「WMI Provider Host」就是 WmiPrvSE.exe,Windows 用它回答程式對系統的各種提問,有哪些磁碟、電池還剩多少、哪些服務在執行,它很少因為自己的事佔用 CPU,長時間停在 10% 到 30%,多半是別的程式問得太勤,或是問的東西太費力,所以要找的是那個提問的程式,而不是這個提供者主機本身。
它到底在做什麼
Windows Management Instrumentation(WMI)是指令碼、監控工具、硬體廠商的配套軟體以及 Windows 自己讀取系統資訊的管道,請求由一個個提供者(provider)來回答,提供者跑在一個或幾個 WmiPrvSE.exe 處理程序裡,所以工作管理員裡可能同時有好幾列 WMI Provider Host。微軟的 WMI CPU 用量高疑難排解指南也是這個思路,提供者主機的 CPU 反映的是用戶端送來的查詢,要做的是找出是哪個用戶端、哪個提供者。
| 看到的現象 | 可能的原因 |
|---|---|
| 登入時衝一下,然後安靜 | 開機啟動的軟體和 Windows 讀一次系統清查資料 |
| 整天每隔幾秒就有一次穩定的負載 | 有工具在迴圈查詢 WMI,監控軟體、廠商工具、遊戲疊加層 |
| 裝了某個軟體後開始變高 | 這個軟體的服務或它帶的 WMI 提供者 |
| 好幾列 WMI Provider Host,只有一列忙 | 某一個提供者慢,其他的沒問題 |
找出是誰在提問
在開始功能表輸入 eventvwr 開啟事件檢視器,依序展開 應用程式及服務記錄檔 › Microsoft › Windows › WMI-Activity › Operational,事件識別碼 5858 的錯誤會寫出失敗的查詢和送出它的 ClientProcessId,事件識別碼 5857 記錄載入了哪個提供者,以及承載它的 WmiPrvSE.exe 的處理程序識別碼。
再按 Ctrl + Shift + Esc 開啟工作管理員,到「詳細資料」索引標籤依 PID 排序,把 ClientProcessId 對上處理程序名稱,把那列忙碌的 WMI Provider Host 的 PID 對上 5857 裡的提供者,幾分鐘裡出現幾百次的那個用戶端,就是要找的程式。
記錄裡什麼都沒有,說明查詢本身沒出錯,只是太頻繁。這時一個個結束可疑的軟體,先從硬體監控、燈效和風扇工具、廠商的更新助手,以及問題出現前剛裝的軟體開始,看提供者主機一分鐘內會不會降下來。
從源頭解決
- 更新或解除安裝那個反覆查詢的軟體,很多監控工具有重新整理間隔的設定,每秒一次很常見,其實很少需要。
- 忙的提供者屬於某個硬體廠商的軟體,就更新這個軟體或它的驅動程式套件,其中一些的舊版本以大量佔用 WMI 出名。
- 去掉原因後重新啟動一次,提供者主機會視需要重新啟動,不需要手動清理什麼。
不要這樣做
- 不要反覆結束 WMI Provider Host,下一個查詢一來 Windows 就會再把它拉起來,提問的程式拿到一個錯誤,可能還會更頻繁地重試。
- 不要停用 Windows Management Instrumentation 服務,設定頁面、Windows Update、Defender 和很多驅動程式工具都要靠它。
- 不要因為 CPU 高就去重設或重建 WMI 存放庫(
winmgmt /resetrepository),那是修復存放庫損毀用的,還可能刪掉軟體註冊的提供者,微軟把它當作另一類問題的最後一步。
Mole 能做什麼
Mole for Windows 的「狀態」頁面會把每一列 WMI Provider Host 和它的 CPU、記憶體、I/O 一起列出來,在這一列的選單裡選「為什麼在執行?」,能看到 C:\Windows\System32\wbem 下的程式檔案和啟動它的處理程序,因為它是從 Windows 資料夾執行的,Mole 不提供它的「結束」選項。Mole 自己也在兩個地方用到 WMI,筆電充電時,「狀態」頁面最多每分鐘查一次電池還要多久充飽,執行系統診斷時會讀一次磁碟健康狀態,兩處都不會迴圈查詢。別的處理程序名稱可以看 Windows 處理程序逐個解釋,CPU 用量高的一般排查可以看 Windows CPU 用量高怎麼查。
常見問題
WMI Provider Host 是病毒嗎?
真正的 WmiPrvSE.exe 在 C:\Windows\System32\wbem 下,同名檔案出現在別的位置,就用 Windows 安全性掃一下。
WMI Provider Host 為什麼 CPU 用量高?
有別的程式在太頻繁地查詢 WMI,或是在索取很耗資源的資料,事件檢視器裡的 WMI-Activity Operational 記錄會寫出失敗查詢背後的用戶端處理程序識別碼。
可以結束或停用 WMI Provider Host 嗎?
結束它只管幾秒,下一個查詢來了 Windows 會重新啟動它,停用 WMI 服務會讓設定、更新和驅動程式工具出問題。
為什麼有好幾個 WMI Provider Host 處理程序?
提供者跑在不同的主機處理程序裡,這樣一個慢的提供者不會拖住其他的,通常只有其中一個在忙。