- 11/16/2020
- 3 minute de citit
-
- D
- v
Acest articol oferă o soluție de rezolvare a problemei de utilizare ridicată a CPU de către WmiPrvSE.exe la intervale regulate.
Versiunea originală a produsului: Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Window 10 – toate edițiile
Numărul KB original: 4483874
Simptome
Când utilizați un computer cu Windows, observați că procesul Windows Management Instrumentation (WMI) Provider Host (WmiPrvSE.exe) utilizează o capacitate ridicată a procesorului (aproape de 100 la sută) timp de câteva minute la fiecare 15-20 de minute.
Când apare problema, utilizați Task Manager pentru a identifica identificatorul de proces (PID) al procesului WmiPrvSE.exe care consumă o capacitate ridicată a procesorului. Apoi, deschideți un prompt de comandă ridicat și rulați următoarea comandă:
tasklist /m wmiperfclass.dll
Se va afișa lista proceselor WmiPrvSE.exe care au acest modul încărcat. De obicei, este listat doar un singur proces. Cu toate acestea, dacă aveți atât clienți pe 32 de biți, cât și pe 64 de biți, este posibil să vedeți două procese. Acesta este un exemplu de ieșire:
Image Name PID Modules
========== ======== ==========================
WmiPrvSE.exe 2140 WmiPerfClass.dll
Dacă PID-ul procesului listat se potrivește cu cel pe care l-ați găsit în Task Manager, este probabil că întâmpinați problema descrisă în acest articol.
Cauză
Această problemă poate fi cauzată de oricare dintre următorii factori.
Unul sau mai multe procese utilizează un număr mare de mânere
Toate mânerele sunt stocate în structura kernel \BaseNamedObjects. Furnizorul WMIPerfClass trebuie să scaneze această structură atunci când creează clasa de performanță care este legată de obiectele Job.
Dacă această structură este umflată din cauza numărului mare de mânere, operațiunea va avea o utilizare ridicată a CPU și va dura mai mult decât în mod normal.
Vă puteți aștepta la un impact pentru această condiție atunci când un proces utilizează mai mult de aproximativ 30.000 de mânere sau când numărul total de mânere de pe sistem depășește 50.000.
O actualizare care este lansată în martie 2020 pentru versiunile de sistem de operare acceptate include unele optimizări de performanță și abordează unele variante ale acestei probleme. Consultați istoricul Windows Updates (Actualizări Windows) pentru mai multe informații despre actualizarea care se aplică versiunii dvs. de Windows.
Unul sau mai multe procese care rulează pe sistem utilizează foarte multă memorie
Acest lucru afectează crearea claselor de performanță Process (Procese) deoarece va trebui interogată zona de memorie a fiecărui proces care rulează. Memoria care este utilizată de proces poate fi fragmentată, iar acest lucru face ca operațiunea să necesite mai multe resurse. Acest lucru se întâmplă deoarece WMIPerfClass interoghează, de asemenea, contoarele de performanță „Costly”.
Puteți verifica dacă sunt activate contoarele de performanță Costly prin rularea următoarei comenzi PowerShell:
(gwmi -query 'select * from meta_class').Name | ? { $_ -match "costly"}
Dacă comanda returnează rezultate, aceasta indică contoarele de performanță Costly care sunt activate. De exemplu:
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
Lovitură de rezolvare
Pentru a remedia problema, identificați procesul care utilizează un număr mare de mânere sau o cantitate mare de memorie.Este posibil ca procesul să aibă o scurgere de memorie sau o problemă de scurgere a mânerului. Ca soluție de rezolvare, reporniți procesul.
În mod implicit, dacă utilizați Windows Server 2016 sau o versiune ulterioară de Windows, contoarele de performanță Costly sunt dezactivate începând cu următoarele actualizări cumulative:
- Windows Server 2016 / Windows 10 versiunea 1607 (RS1)
18 octombrie 2018-KB4462928 (OS Build 14393.2580) - Windows 10 versiunea 1703 (RS2)
24 iulie 2018-KB4338827 (OS Build 15063.1235) - Windows 10 versiunea 1709 (RS3)
24 iulie 2018-KB4338817 (OS Build 16299.579) - Windows 10 versiunea 1803 (RS4)
16 iulie 2018-KB4345421 (OS Build 17134.167)
Nota
După instalarea actualizării cumulative, dacă aveți nevoie de clasele care sunt legate de contoarele de performanță Costly, setați valoarea Enable Costly Providers la 1 (DWORD) în următoarea subcheie de registru pentru a le face din nou disponibile:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem
Actualizarea cumulativă nu va afecta comportamentul atunci când un proces utilizează un număr mare de mânere.
Această problemă apare atunci când un client interoghează clasele de performanță. Aceasta este, de obicei, o aplicație de monitorizare.
Ca soluție de rezolvare, puteți, de asemenea, dezactiva aplicația de monitorizare pentru a împiedica crearea claselor de performanță.
Mai multe informații
WMI oferă mai multe clase de performanță. Pentru mai multe informații, consultați Clase de contoare de performanță.
Aceste clase sunt create dinamic pe baza contoarelor de performanță care sunt disponibile pe sistem. Toate clasele sunt create în același timp, nu numai clasele care sunt interogate.
WMIPerfClass este modulul care se ocupă de crearea acestor clase atunci când clientul WMI interoghează oricare dintre ele sau enumeră clasele disponibile.
Aceste clase de performanță sunt stocate într-o memorie cache care este invalidată după 15 până la 20 de minute. De îndată ce memoria cache este invalidată, clasele de performanță trebuie să fie create din nou dacă un client le solicită.
Crearea claselor de performanță înseamnă că modulul WMIPerfClass.dll va trebui să fie încărcat în interiorul unui proces WmiPrvSE.exe și codul aferent executat.
.