- 11/16/2020
- 3 perc olvasás
-
- D
- v
Ez a cikk a WmiPrvSE.exe folyamat rendszeres időközönként fellépő problémája.
A termék eredeti verziója: Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows 10 – minden kiadás
Eredeti KB-szám: 4483874
Tünetek
A Windows-alapú számítógép használata során azt veszi észre, hogy a Windows Management Instrumentation (WMI) Provider Host (WmiPrvSE.exe) folyamat 15-20 percenként néhány percen keresztül magas (közel 100 százalékos) CPU-kapacitást használ.
A probléma megjelenésekor a Feladatkezelő segítségével azonosítsa a magas CPU-fogyasztást okozó WmiPrvSE.exe folyamat azonosítóját (PID). Ezután nyisson meg egy megemelt parancssort, és futtassa a következő parancsot:
tasklist /m wmiperfclass.dll
Megjelenik azon WmiPrvSE.exe folyamatok listája, amelyekben ez a modul betöltődött. Általában csak egy folyamat szerepel a listában. Ha azonban 32 bites és 64 bites kliensek is vannak, előfordulhat, hogy két folyamatot lát. Ez egy példakimenet:
Image Name PID Modules
========== ======== ==========================
WmiPrvSE.exe 2140 WmiPerfClass.dll
Ha a felsorolt folyamat PID-je megegyezik azzal, amit a Feladatkezelőben talált, akkor valószínű, hogy a cikkben leírt problémával találkozik.
Az ok
Ezt a problémát a következő tényezők bármelyike okozhatja:
Egy vagy több folyamat nagyszámú kezelőt használ
A kezelőket a kernel \BaseNamedObjects struktúrájában tárolja. A WMIPerfClass szolgáltatónak ezt a struktúrát kell átvizsgálnia a Job objektumokhoz kapcsolódó teljesítményosztály létrehozásakor.
Ha ez a struktúra a nagyszámú fogantyú miatt felduzzadt, a művelet nagy CPU-használattal jár, és a szokásosnál hosszabb ideig tart.
Elképzelhető, hogy ez a feltétel hatással lesz, ha egy folyamat több mint körülbelül 30 000 fogantyút használ, vagy a rendszerben lévő összes fogantyú száma meghaladja az 50 000-et.
A támogatott operációs rendszerverziókhoz 2020 márciusában megjelenő frissítés tartalmaz néhány teljesítményoptimalizálást, és orvosolja ennek a problémának néhány változatát. Az Ön Windows-verziójára vonatkozó frissítéssel kapcsolatos további információkért tekintse meg a Windows-frissítések előzményeit.
Egy vagy több, a rendszerben futó folyamat sok memóriát használ
Ez befolyásolja a Folyamat teljesítményosztályok létrehozását, mivel minden egyes futó folyamat memóriaterületét le kell kérdezni. A folyamat által használt memória töredezett lehet, és ez erőforrásigényesebbé teszi a műveletet. Ez azért történik, mert a WMIPerfClass a “Costly” teljesítményszámlálókat is lekérdezi.
A következő PowerShell parancs futtatásával ellenőrizheti, hogy a Costly teljesítményszámlálók engedélyezve vannak-e:
(gwmi -query 'select * from meta_class').Name | ? { $_ -match "costly"}
Ha a parancs eredményt ad, ez azt jelzi, hogy a Costly teljesítményszámlálók engedélyezve vannak. Például:
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
Megoldás
A probléma kijavításához, Azonosítsa azt a folyamatot, amely nagyszámú kezelőt vagy nagy mennyiségű memóriát használ.A folyamatnak memóriaszivárgás vagy fogantyúszivárgási problémája lehet. Megoldásként indítsa újra a folyamatot.
A Windows Server 2016 vagy egy későbbi Windows-verzió használata esetén a Költséges teljesítményszámlálók a következő kumulatív frissítésektől kezdve alapértelmezés szerint le vannak tiltva:
- Windows Server 2016 / Windows 10 1607-es verzió (RS1)
2018. október 18-KB4462928 (OS Build 14393.2580) - Windows 10 1703-as verzió (RS2)
2018. július 24. -KB4338827 (OS Build 15063.1235) - Windows 10 1709-es verzió (RS3)
2018. július 24. -KB4338817 (OS Build 16299.579) - Windows 10 1803-as verzió (RS4)
2018. július 16. – 2018-KB4345421 (OS Build 17134.167)
Figyelem
A kumulatív frissítés telepítése után, ha szüksége van a Costly teljesítményszámlálókhoz kapcsolódó osztályokra, állítsa a következő registry alkulcs alatt a Enable Costly Providers értékét 1-re (DWORD), hogy újra elérhetővé váljanak:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem
A kumulatív frissítés nem befolyásolja a viselkedést, ha egy folyamat nagyszámú fogantyút használ.
Ez a probléma akkor fordul elő, amikor egy ügyfél lekérdezi a teljesítményosztályokat. Ez általában egy felügyeleti alkalmazás.
Megoldásként letilthatja a felügyeleti alkalmazást is, hogy megakadályozza a teljesítményosztályok létrehozását.
Bővebb információ
A WMI számos teljesítményosztályt biztosít. További információért lásd: Teljesítményszámláló osztályok.
Az osztályok dinamikusan jönnek létre a rendszerben rendelkezésre álló teljesítményszámlálók alapján. Az összes osztály egyszerre jön létre, nem csak a lekérdezett osztályok.
A WMIPerfClass az a modul, amely ezen osztályok létrehozását kezeli, amikor a WMI-ügyfél lekérdezi valamelyiket, vagy felsorolja a rendelkezésre álló osztályokat.
Ezek a teljesítményosztályok egy gyorsítótárban tárolódnak, amely 15-20 perc után érvénytelenítésre kerül. Amint a gyorsítótárat érvénytelenítik, a teljesítményosztályokat újra létre kell hozni, ha egy ügyfél lekérdezi őket.
A teljesítményosztályok létrehozása azt jelenti, hogy a WMIPerfClass.dll modult be kell tölteni egy WmiPrvSE.exe folyamaton belül, és a kapcsolódó kódot végre kell hajtani.