- 11/16/2020
- 3 minuuttia aikaa
-
- D
- v
Tämässä artikkelissa esitetään kiertotapa ongelmaan, jossa WmiPrvSE.exe-prosessi säännöllisin väliajoin.
Original product version:
Alkuperäinen KB-numero: 4483874
Oireet
Käytettäessäsi Windows-pohjaista tietokonetta huomaat, että Windows Management Instrumentation (WMI) Provider Host (WmiPrvSE.exe)-prosessi käyttää suurta suorittimen kapasiteettia (lähes 100 prosenttia) useiden minuuttien ajan 15-20 minuutin välein.
Kun ongelma ilmenee, tunnista Tehtävienhallinnan avulla suurta suorittimen kapasiteettia kuluttavan WmiPrvSE.exe-prosessin prosessitunniste (PID). Avaa sitten korotettu komentorivi ja suorita seuraava komento:
tasklist /m wmiperfclass.dll
Luettelo WmiPrvSE.exe-prosesseista, joissa tämä moduuli on ladattu, tulee näkyviin. Yleensä luettelossa on vain yksi prosessi. Jos sinulla on kuitenkin sekä 32- että 64-bittisiä asiakkaita, saatat nähdä kaksi prosessia. Tämä on esimerkkituloste:
Image Name PID Modules
========== ======== ==========================
WmiPrvSE.exe 2140 WmiPerfClass.dll
Jos luetteloidun prosessin PID vastaa Tehtävienhallinnassa löytämääsi prosessia, on todennäköistä, että kyseessä on tässä artikkelissa kuvattu ongelma.
Syy
Tämä ongelma voi johtua jommastakummasta seuraavista tekijöistä.
Yksi tai useampi prosessi käyttää suurta määrää kahvoja
Kaikki kahvat on tallennettu ytimen rakenteeseen \BaseNamedObjects. WMIPerfClass-palveluntarjoajan on skannattava tämä rakenne luodessaan Job-objekteihin liittyvää suorituskykyluokkaa.
Jos tämä rakenne on paisunut käsinojien suuren määrän vuoksi, operaation suorittimen käyttö on suurta ja kestää normaalia kauemmin.
Tämän ehdon voi odottaa vaikuttavan, kun prosessi käyttää yli noin 30 000 käsikappaletta tai järjestelmän käsikappaleiden kokonaismäärä ylittää 50 000.
Maaliskuussa 2020 tuetuille käyttöjärjestelmäversioille julkaistavaan päivitykseen sisältyy jonkin verran suorituskykyoptimointia, ja se korjaa joitakin tämän ongelman muunnelmia. Katso Windows-päivitysten historiasta lisätietoja Windows-versiotasi koskevasta päivityksestä.
Yksi tai useampi järjestelmässä käynnissä oleva prosessi käyttää paljon muistia
Tämä vaikuttaa Prosessin suorituskykyluokkien luomiseen, koska jokaisen käynnissä olevan prosessin muistialuetta on kysyttävä. Prosessin käyttämä muisti voi olla pirstaloitunutta, mikä tekee operaatiosta resurssi-intensiivisemmän. Tämä tapahtuu, koska WMIPerfClass kysyy myös ”Costly”-suorituskykylaskureita.
Voit tarkistaa, ovatko Costly-suorituskykylaskurit käytössä, suorittamalla seuraavan PowerShell-komennon:
(gwmi -query 'select * from meta_class').Name | ? { $_ -match "costly"}
Jos komento palauttaa tuloksen, tämä ilmaisee, että Costly-suorituskykylaskurit ovat käytössä. Esim:
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
Workaround
Ongelman korjaamiseksi, Tunnista prosessi, joka käyttää suurta määrää kahvoja tai suurta määrää muistia.Prosessissa voi olla muistivuoto tai kahvavuotoongelma. Ratkaisukeinona käynnistä prosessi uudelleen.
Jos käytät Windows Server 2016:ta tai uudempaa Windows-versiota, Kalliit suorituskykylaskurit on oletusarvoisesti poistettu käytöstä seuraavista kumulatiivisista päivityksistä alkaen:
- Windows Server 2016 / Windows 10 versio 1607 (RS1)
18. lokakuuta 2018-KB4462928 (OS Build 14393.2580) - Windows 10 versio 1703 (RS2)
24. heinäkuuta 2018-KB4338827 (OS Build 15063.1235) - Windows 10 versio 1709 (RS3)
24. heinäkuuta 2018-KB4338817 (OS Build 16299.579) - Windows 10 versio 1803 (RS4)
16. heinäkuuta 2018-KB4345421 (OS Build 17134.167)
Huomautus
Kumulatiivisen päivityksen asentamisen jälkeen, jos tarvitset Costly-suorituskykylaskureihin liittyviä luokkia, aseta seuraavassa rekisterin ala-avaimessa arvoksi Enable Costly Providers (Ota käyttöön Costly Providers -palvelimet) 1 (DWORD), jotta ne ovat jälleen käytettävissä:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem
Kumulatiivinen päivitys ei vaikuta käytökseen, jota noudatetaan silloin, kun prosessi käyttää suurta määrää kahvoja.
Tämä ongelma ilmenee, kun asiakas kysyy suorituskykyluokkia. Kyseessä on yleensä valvontasovellus.
Torjuntakeinona voit myös poistaa valvontasovelluksen käytöstä estääksesi suorituskykyluokkien luomisen.
Lisätietoja
WMI tarjoaa useita suorituskykyluokkia. Lisätietoja on kohdassa Suorituskykylaskuriluokat.
Nämä luokat luodaan dynaamisesti järjestelmässä käytettävissä olevien suorituskykylaskureiden perusteella. Kaikki luokat luodaan samanaikaisesti, ei vain ne luokat, joita kysytään.
WMIPerfClass on moduuli, joka huolehtii näiden luokkien luomisesta, kun WMI-asiakas kysyy jotakin niistä tai luettelee käytettävissä olevat luokat.
Nämä suorituskykyluokat tallennetaan välimuistiin, joka mitätöidään 15-20 minuutin kuluttua. Heti kun välimuisti on mitätöity, suorituskykyluokat on luotava uudelleen, jos asiakas pyytää niitä.
Suorituskykyluokkien luominen tarkoittaa, että WMIPerfClass.dll-moduuli on ladattava WmiPrvSE.exe-prosessin sisällä ja siihen liittyvä koodi on suoritettava.