- 11/16/2020
- 3 minuty na čtení
-
- D
- v
Tento článek poskytuje řešení problému vysokého využití CPU procesorem WmiPrvSE.exe v pravidelných intervalech.
Původní verze produktu: Původní číslo KB: 4483874
Příznaky
Při používání počítače se systémem Windows zjistíte, že hostitel zprostředkovatele služby Windows Management Instrumentation (WMI) (WmiPrvSE.exe) využívá po dobu několika minut každých 15 až 20 minut vysokou kapacitu procesoru (téměř 100 %).
Pokud k problému dojde, použijte Správce úloh k identifikaci identifikátoru procesu (PID) procesu WmiPrvSE.exe, který spotřebovává vysokou kapacitu procesoru. Poté otevřete zvýšený příkazový řádek a spusťte následující příkaz:
tasklist /m wmiperfclass.dll
Zobrazí se seznam procesů WmiPrvSE.exe, které mají tento modul načtený. Obvykle je v seznamu uveden pouze jeden proces. Pokud však máte 32bitové i 64bitové klienty, mohou se zobrazit dva procesy. Toto je příklad výstupu:
Název obrázku PID Moduly
========== ======== ==========================
WmiPrvSE.exe 2140 WmiPerfClass.dll
Pokud se PID uvedeného procesu shoduje s tím, který jste našli ve Správci úloh, pravděpodobně se setkáváte s problémem, který je popsán v tomto článku.
Příčina
Tento problém může být způsoben některým z následujících faktorů:
Jeden nebo více procesů používá vysoký počet handle
Všechny handle jsou uloženy ve struktuře jádra \BaseNamedObjects. Zprostředkovatel WMIPerfClass musí tuto strukturu prohledat při vytváření výkonnostní třídy, která se vztahuje k objektům úlohy.
Je-li tato struktura nafouklá kvůli vysokému počtu handle, operace bude mít vysoké využití procesoru a bude trvat déle než obvykle.
Dopad na tento stav můžete očekávat, pokud proces používá více než přibližně 30 000 úchytů nebo celkový počet úchytů v systému přesáhne 50 000.
Aktualizace, která bude vydána v březnu 2020 pro podporované verze operačního systému, obsahuje určitou optimalizaci výkonu a řeší některé varianty tohoto problému. Další informace o aktualizaci, která se týká vaší verze systému Windows, naleznete v historii aktualizací systému Windows.
Jeden nebo více procesů běžících v systému využívá velké množství paměti
To ovlivňuje vytváření výkonnostních tříd procesů, protože bude nutné se dotazovat na oblast paměti každého běžícího procesu. Paměť, kterou proces využívá, může být roztříštěná, a proto je tato operace náročnější na zdroje. K tomu dochází, protože třída WMIPerfClass se dotazuje také na čítače výkonu „Costly“.
Zda jsou čítače výkonu Costly povoleny, můžete zkontrolovat spuštěním následujícího příkazu prostředí PowerShell:
(gwmi -query 'select * from meta_class').Name | ? { $_ -match "costly"}
Pokud příkaz vrátí výsledky, znamená to, že čítače výkonu Costly jsou povoleny. Například:
Win32_PerfFormattedData_PerfProc_FullImage_Costly
Win32_PerfRawData_PerfProc_FullImage_Costly
Win32_PerfFormattedData_PerfProc_Image_Costly
Win32_PerfRawData_PerfProc_Image_Costly
Win32_PerfFormattedData_PerfProc_ProcessAddressSpace_Costly
Win32_PerfRawData_PerfProc_ProcessAddressSpace_Costly
Win32_PerfFormattedData_PerfProc_ThreadDetails_Costly
Win32_PerfRawData_PerfProc_ThreadDetails_Costly
Odstranění problému
Pro odstranění problému, identifikujte proces, který používá velký počet handle nebo velké množství paměti.Proces může mít problém s únikem paměti nebo únikem handle. Jako řešení restartujte proces.
Při výchozím nastavení, pokud používáte systém Windows Server 2016 nebo novější verzi systému Windows, jsou nákladné čítače výkonu zakázány od následujících kumulativních aktualizací:
- Windows Server 2016 / Windows 10 verze 1607 (RS1)
18. října 2018-KB4462928 (sestavení OS 14393.2580) - Windows 10 verze 1703 (RS2)
24. července 2018-KB4338827 (sestavení OS 15063.1235) - Windows 10 verze 1709 (RS3)
24. července 2018-KB4338817 (sestavení OS 16299.579) - Windows 10 verze 1803 (RS4)
16. července 2018-KB4345421 (sestavení OS 17134.167)
Poznámka
Pokud po instalaci kumulativní aktualizace potřebujete třídy, které souvisejí s nákladnými čítači výkonu, nastavte hodnotu Povolit nákladné poskytovatele na 1 (DWORD) v následujícím podklíči registru, aby byly opět k dispozici:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem
Kumulativní aktualizace neovlivní chování, když proces používá velký počet úchytů.
Tento problém nastane, když se klient dotazuje na výkonnostní třídy. Obvykle se jedná o monitorovací aplikaci.
Jako řešení můžete také zakázat monitorovací aplikaci, aby se zabránilo vytváření výkonnostních tříd.
Další informace
WMI poskytuje několik výkonnostních tříd. Další informace naleznete v části Třídy čítačů výkonu.
Tyto třídy jsou vytvářeny dynamicky na základě čítačů výkonu, které jsou v systému k dispozici. Vytvářejí se všechny třídy najednou, nejen třídy, které jsou dotazovány.
WMIPerfClass je modul, který se stará o vytváření těchto tříd, když se klient WMI dotazuje na některou z nich nebo provádí výčet dostupných tříd.
Tyto výkonnostní třídy jsou uloženy v mezipaměti, která je po 15 až 20 minutách zneplatněna. Jakmile je mezipaměť zneplatněna, musí být výkonnostní třídy znovu vytvořeny, pokud si je klient vyžádá.
Vytvoření výkonnostních tříd znamená, že bude nutné načíst modul WMIPerfClass.dll uvnitř procesu WmiPrvSE.exe a spustit související kód.