- 11/16/2020
- 3 minuty do odczytania
-
- D
- x
Ten artykuł zapewnia obejście problemu wysokiego wykorzystania procesora przez wmiprvse.Proces EXE w regularnych odstępach czasu.,
Oryginalna wersja produktu: Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Window 10 – wszystkie wersje
oryginalny numer KB: 4483874
objawy
gdy używasz komputera z systemem Windows, zauważysz, że Host dostawcy Windows Management Instrumentation (WMI) (WmiPrvSE.exe) proces wykorzystuje dużą pojemność procesora (blisko 100 procent) przez kilka minut co 15 do 20 minut.
Gdy wystąpi problem, użyj Menedżera zadań, aby zidentyfikować identyfikator procesu (PID) W WMIPRVSE.Proces EXE, który zużywa wysoki CPU., Następnie otwórz wiersz polecenia i uruchom następujące polecenie:
tasklist /m wmiperfclass.dll
lista WMIPRVSE.Wyświetlone zostaną procesy EXE, które załadowały ten moduł. Zwykle jest wymieniony tylko jeden proces. Jeśli jednak masz zarówno 32-bitowych, jak i 64-bitowych klientów, możesz zobaczyć dwa procesy. Jest to Przykładowe wyjście:
Nazwa obrazu Moduły PID
========== ======== ==========================
WmiPrvSE.exe 2140 WmiPerfClass.,dll
Jeśli PID wymienionego procesu odpowiada PID znalezionemu w Menedżerze Zadań, prawdopodobnie napotkasz problem opisany w tym artykule.
przyczyna
ten problem może być spowodowany przez jeden z następujących czynników.
jeden lub więcej procesów używa dużej liczby uchwytów
wszystkie uchwyty są przechowywane w strukturze jądra \BaseNamedObjects. Dostawca wmiperfclass musi skanować tę strukturę podczas tworzenia klasy wydajności, która jest powiązana z obiektami zadania.,
Jeśli ta struktura jest nadęta z powodu dużej liczby uchwytów, operacja będzie miała duże zużycie procesora i potrwa dłużej niż normalnie.
możesz spodziewać się wpływu tego warunku, gdy proces używa więcej niż około 30 000 uchwytów lub całkowita liczba uchwytów w systemie przekracza 50 000.
aktualizacja wydana w marcu 2020 dla obsługiwanych wersji systemu operacyjnego zawiera pewną optymalizację wydajności i rozwiązuje niektóre warianty tego problemu. Więcej informacji na temat aktualizacji dotyczących wersji systemu Windows można znaleźć w historii aktualizacji systemu Windows.,
jeden lub więcej procesów uruchomionych w systemie zużywa dużo pamięci
wpływa to na tworzenie klas wydajności procesów, ponieważ obszar pamięci każdego uruchomionego procesu będzie musiał zostać zapytany. Pamięć używana przez proces może być fragmentaryczna, co sprawia, że operacja jest bardziej zasobochłonna. Dzieje się tak, ponieważ WMIPerfClass pyta również o” kosztowne ” liczniki wydajności.,
Możesz sprawdzić, czy kosztowne liczniki wydajności są włączone, uruchamiając następujące polecenie PowerShell:
(gwmi -query 'select * from meta_class').Name | ? { $_ -match "costly"}
Jeśli polecenie zwraca wyniki, wskazuje kosztowne liczniki wydajności, które są włączone.,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
Obejście problemu
aby rozwiązać problem, zidentyfikuj proces, który wykorzystuje dużą liczbę uchwytów lub dużą ilość pamięci., Proces może mieć wyciek pamięci lub problem z wyciekiem uchwytu. Aby obejść ten problem, uruchom ponownie proces.
domyślnie jeśli używasz systemu Windows Server 2016 lub nowszej wersji systemu Windows, kosztowne liczniki wydajności są wyłączone, począwszy od następujących aktualizacji zbiorczych:
- Windows Server 2016 / Windows 10 wersja 1607 (RS1)
18 października 2018—KB4462928 (OS Build 14393.2580) - Windows 10 Wersja 1703 (RS2)
24 lipca 2018—kb4338827 (OS build 15063.1235) - Windows 10 version 1709 (RS3)
24 lipca 2018—KB4338817 (OS build 16299.,579) - Windows 10 wersja 1803 (RS4)
16 lipca 2018 r.—KB4345421 (OS Build 17134.167)
Uwaga
Po zainstalowaniu aktualizacji zbiorczej, jeśli potrzebujesz klas związanych z kosztownymi licznikami wydajności, ustaw wartość Enable Costly Providers na 1 (DWORD) w podkluczu rejestru, aby je ponownie udostępnić:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem
Skumulowana aktualizacja nie wpłynie na zachowanie, gdy proces używa dużej liczby uchwytów.
ten problem występuje, gdy klient pyta klasy wydajności., Jest to zwykle aplikacja monitorująca.
jako obejście można również wyłączyć aplikację monitorującą, aby zapobiec tworzeniu klas wydajności.
więcej informacji
WMI oferuje kilka klas wydajności. Aby uzyskać więcej informacji, zobacz klasy liczników wydajności.
klasy te są tworzone dynamicznie na podstawie liczników wydajności dostępnych w systemie. Wszystkie klasy są tworzone w tym samym czasie, nie tylko klasy, które są pytane.,
wmiperfclass jest modułem, który zajmuje się tworzeniem tych klas, gdy klient WMI odpytuje którąkolwiek z nich lub wylicza dostępne klasy.
te klasy wydajności są przechowywane w pamięci podręcznej, która jest unieważniana po 15 do 20 minutach. Gdy tylko pamięć podręczna zostanie unieważniona, klasy wydajności muszą zostać utworzone ponownie, jeśli klient zażąda ich.
Tworzenie klas wydajności oznacza, że WMIPerfClass.moduł dll będzie musiał zostać załadowany wewnątrz WMIPRVSE.Wykonywany jest proces EXE i powiązany z nim kod.