- 11/16/2020
- 3 minuter att läsa
-
- d
- x
denna artikel ger en lösning för frågan om hög CPU-användning av WMIPRVSE.EXE process med jämna mellanrum.,
originalproduktversion: Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Window 10 – alla utgåvor
original KB-nummer: 4483874
symptom
När du använder en Windows-baserad dator märker du att Windows Management Instrumentation (WMI) Provider Host (WmiPrvSE.exe) processen använder hög CPU-kapacitet (nära 100 procent) i flera minuter var 15 till 20 minuter.
När problemet uppstår, använd Aktivitetshanteraren för att identifiera processidentifieraren (PID) för WMIPRVSE.EXE process som förbrukar hög CPU., Öppna sedan en förhöjd kommandotolk och kör följande kommando:
tasklist /m wmiperfclass.dll
listan över WMIPRVSE.EXE-processer som har denna modul laddad visas. Vanligtvis listas bara en process. Men om du har både 32-bitars och 64-bitars klienter kan du se två processer. Detta är exempelutmatning:
Bildnamn PID-moduler
========== ======== ==========================
WmiPrvSE.exe 2140 WmiPerfClass.,dll
om PID för den angivna processen matchar den som du hittade i Aktivitetshanteraren är det troligt att du stöter på problemet som beskrivs i den här artikeln.
orsak
det här problemet kan orsakas av någon av följande faktorer.
en eller flera processer använder ett stort antal handtag
alla handtag lagras i kärnstrukturen \BaseNamedObjects. Wmiperfclass-leverantören måste skanna den här strukturen när du skapar prestandaklassen som är relaterad till Jobbobjekten.,
om denna struktur är uppblåst på grund av det höga antalet handtag, kommer operationen att ha hög CPU-användning och tar längre tid än normalt.
Du kan förvänta dig en effekt för detta tillstånd när en process använder mer än cirka 30 000 handtag, eller det totala antalet handtag på systemet överstiger 50 000.
en uppdatering som släpptes i mars 2020 för operativsystemversioner som stöds innehåller vissa prestandaoptimering och åtgärdar vissa varianter av problemet. Se Windows Updates history för mer information om uppdateringen som gäller för din Windows-version.,
en eller flera processer som körs på systemet använder massor av minne
detta påverkar skapandet av processprestandaklasserna eftersom minnesområdet för varje pågående process måste frågas. Minnet som används av processen kan vara fragmenterat, vilket gör operationen mer resurskrävande. Detta händer eftersom WMIPerfClass också frågar ”kostsamma” prestanda räknare.,
Du kan kontrollera om kostsamma prestandaräknare är aktiverade genom att köra följande PowerShell-kommando:
(gwmi -query 'select * from meta_class').Name | ? { $_ -match "costly"}
om kommandot returnerar resultat indikerar detta de kostsamma prestandaräknare som är aktiverade.,d=”77921f1d55″>
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
Lösning
för Att åtgärda problemet, identifiera den process som med hjälp av ett stort antal handtag eller en stor mängd minne., Processen kan ha en minnesläcka eller ett handtag läcka fråga. Starta om processen som en lösning.
Som standard om du använder Windows Server 2016 eller en senare version av Windows, den Dyra prestanda räknare är inaktiverat från följande Kumulativa Uppdateringar:
- Windows Server 2016 / Windows version 10 1607 (RS1)
den 18 oktober 2018—KB4462928 (OS Bygga 14393.2580) - Windows-10-versionen 1703 (RS2)
24 juli 2018—KB4338827 (OS Bygga 15063.1235) - Windows-10-versionen 1709 (RS3)
24 juli 2018—KB4338817 (OS Bygga 16299.,579) - Windows-10-versionen 1803 (RS4)
den 16 juli 2018—KB4345421 (OS Bygga 17134.167)
Obs!
Efter den kumulativa uppdateringen är installerad, om du behöver klasser som är relaterade till den Dyra prestanda räknare, ange värdet Aktivera Dyra Leverantörer till 1 (DWORD) under följande undernyckel i registret för att göra dem tillgängliga igen:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem
Den kumulativa uppdateringen kommer inte att påverka beteende när en process är att använda ett stort antal handtag.
det här problemet händer när en klient frågar prestandaklasserna., Detta är vanligtvis en övervakningsapplikation.
som lösning kan du också inaktivera övervakningsprogrammet för att förhindra att prestandaklasserna skapas.
mer information
WMI ger flera prestandaklasser. Mer information finns i Performance Counter Classes.
dessa klasser skapas dynamiskt baserat på prestandaräknare som är tillgängliga på systemet. Alla klasser skapas samtidigt, inte bara de klasser som frågas.,
WMIPerfClass är modulen som hanterar att skapa dessa klasser när WMI-klienten frågar någon av dem eller räknar upp de tillgängliga klasserna.
dessa prestandaklasser lagras i en cache som ogiltigförklaras efter 15 till 20 minuter. Så snart cachen är ogiltig måste prestandaklasserna skapas igen om en klient begär dem.
att skapa prestandaklasserna innebär att WMIPerfClass.dll-modulen måste laddas inuti en WMIPRVSE.EXE process och den relaterade koden exekveras.