- 11/16/2020
- 3 minuten te lezen
- D
- x
Dit artikel biedt een oplossing voor de kwestie van hoge CPU-gebruik door Wmiprvse.EXE-proces met regelmatige tussenpozen.,
originele productversie: Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Window 10 – alle edities
origineel KB-nummer: 4483874
symptomen
wanneer u een Windows-computer gebruikt, merkt u dat de WMI-Provider Host (Wmiprvse).exe) proces is met behulp van hoge CPU-capaciteit (dicht bij 100 procent) voor enkele minuten elke 15 tot 20 minuten.
wanneer het probleem zich voordoet, gebruikt u Taakbeheer om de process identifier (PID) van de WMIPRVSE te identificeren.EXE-proces dat hoge CPU verbruikt., Open vervolgens een opdrachtprompt met verhoogde bevoegdheid en voer het volgende commando uit:
tasklist /m wmiperfclass.dll
De lijst van WMIPRVSE.EXE-processen waarbij deze module is geladen, worden weergegeven. Gewoonlijk wordt slechts één proces vermeld. Als u echter zowel 32-bits als 64-bits clients hebt, kunt u twee processen zien. Dit is voorbeeld uitvoer:
afbeeldingsnaam PID Modules
========== ======== ==========================miprvse.exe 2140 Wmiperfklasse.,dll
als de PID van het weergegeven proces overeenkomt met degene die u in Taakbeheer hebt gevonden, is het waarschijnlijk dat u het probleem tegenkomt dat in dit artikel wordt beschreven.
oorzaak
Dit probleem kan worden veroorzaakt door een van de volgende factoren.
een of meer processen gebruiken een groot aantal handles
alle handles worden opgeslagen in de kernelstructuur \BaseNamedObjects. De wmiperfclass-provider moet deze structuur scannen bij het maken van de prestatieklasse die gerelateerd is aan de taakobjecten.,
als deze structuur opgeblazen is vanwege het grote aantal Handgrepen, zal de operatie een hoog CPU-gebruik hebben en langer duren dan normaal.
u kunt een impact verwachten voor deze voorwaarde wanneer een proces meer dan ongeveer 30.000 handles gebruikt, of het totale aantal handles op het systeem groter is dan 50.000.
een update die in Maart 2020 is uitgebracht voor ondersteunde besturingssysteemversies bevat enkele prestatieoptimalisatie en behandelt enkele varianten van dit probleem. Raadpleeg de geschiedenis van Windows-Updates voor meer informatie over de update die van toepassing is op uw Windows-versie.,
een of meer processen die op het systeem draaien gebruiken veel geheugen
Dit heeft invloed op het aanmaken van de Procesprestatieklassen omdat het geheugengebied van elk lopend proces moet worden opgevraagd. Het geheugen dat wordt gebruikt door het proces kan gefragmenteerd zijn, en dit maakt de operatie meer resource-intensieve. Dit gebeurt omdat WMIPerfClass ook “dure” prestatietellers opvraagt.,
U kunt controleren of dure prestatietellers zijn ingeschakeld door het volgende PowerShell-commando uit te voeren:
(gwmi -query 'select * from meta_class').Name | ? { $_ -match "costly"}
als de opdracht resultaten oplevert, geeft dit aan welke dure prestatietellers zijn ingeschakeld.,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
Oplossing
om het probleem Te verhelpen, het identificeren van het proces dat met behulp van een groot aantal handvatten of een grote hoeveelheid geheugen., Het proces kan een geheugenlek of een handvat lek probleem. Als een tijdelijke oplossing, herstart het proces.
standaard als u gebruikmaakt van Windows Server 2016 of een latere versie van Windows, de Duur van performance counters zijn uitgeschakeld vanaf de volgende Cumulatieve Updates:
- Windows Server 2016 / Windows-10 versie 1607 (RS1)
18 oktober 2018—KB4462928 (OS Bouwen 14393.2580) - Windows-10 versie 1703 (RS2)
24 juli 2018—KB4338827 (OS Bouwen 15063.1235) - Windows-10 versie 1709 (RS3)
24 juli 2018—KB4338817 (OS Bouwen 16299.,579) - Windows 10 version 1803 (RS4)
16 juli 2018—KB4345421 (OS Build 17134.167)
opmerking
nadat de cumulatieve update is geïnstalleerd, stel de waarde enable Costly Providers in op 1 (DWORD) onder de volgende registersubsleutel om ze weer beschikbaar te maken:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem
de cumulatieve update heeft geen invloed op het gedrag wanneer een proces een groot aantal handles gebruikt.
Dit probleem doet zich voor wanneer een client de prestatieklassen opvraagt., Dit is meestal een monitoring applicatie.
als tijdelijke oplossing kunt u ook de monitoringtoepassing uitschakelen om het maken van de prestatieklassen te voorkomen.
meer informatie
WMI biedt verschillende prestatieklassen. Zie Prestatieteller klassen voor meer informatie.
deze klassen worden dynamisch gemaakt op basis van de prestatietellers die beschikbaar zijn op het systeem. Alle klassen worden tegelijkertijd gemaakt, niet alleen de klassen die worden opgevraagd.,
WMIPerfClass is de module die het maken van deze klassen afhandelt wanneer de WMI-client een van hen opvraagt of de beschikbare klassen opnoemt.
deze prestatieklassen worden opgeslagen in een cache die na 15 tot 20 minuten ongeldig is. Zodra de cache ongeldig is, moeten de prestatieklassen opnieuw worden gemaakt als een client hierom verzoekt.
het maken van de prestatieklassen betekent dat de Wmiperfklasse.dll module zal moeten worden geladen in een WMIPRVSE.EXE proces en de bijbehorende code uitgevoerd.