Dlaczego host WMI Provider Host (WmiPrvSE.exe) ciągle ulepsza mój procesor?

88

Zasadniczo trzymam laptopa w trybie 24x7, a pod koniec dnia bardzo denerwujące jest spalenie moich ud z powodu przegrzania.

Przegrzanie wydaje się być wynikiem hosta WMI Provider Host (WmiPrvSE.exe) zwiększającego wykorzystanie procesora do 25% co kilka minut. Dlaczego to się dzieje?

Mam HP Envy 14 (z dołączoną bzdurą HP) działającą w systemie Windows 7 Home Premium.

(Uwaga: w oparciu o wcześniejsze obserwacje @ nhinkle wydaje się, że winowajcą może być HP Wireless Manager, czy jest jakiś sposób, aby to potwierdzić?)

To pytanie było pytaniem superużytkownika tygodnia .
Przeczytaj wpis na blogu z 28 lutego 2011 r., Aby uzyskać więcej informacji, lub prześlij własne pytanie tygodnia.

Sathyajith Bhat
źródło
2
Cóż, najlepszym sposobem na potwierdzenie tego byłoby wyłączenie go i sprawdzenie, czy będzie kontynuowane;)
Matthieu Cartier
@neuro heh, prawda, ale chciałbym się przekonać, czy któryś z Super użytkowników ma inne podejście :)
Sathyajith Bhat
2
„To naprawdę denerwujące, że moje uda się palą” -> Uda są niczym, sprawdź to .
Tamara Wijsman,
1
Czy masz jakieś gadżety na pulpicie? na przykład. monitor miejsca na dysku
Kez
1
@kez Nope - bez gadżetów - czysty pulpit.
Sathyajith Bhat

Odpowiedzi:

110

Jak wspomniał Sathya w swoim pytaniu, miałem wcześniejsze doświadczenia z tym problemem na moim podobnym laptopie HP, a teraz potwierdziłem przy użyciu metody naukowej, że skoki procesora na laptopach HP są spowodowane przez HP Wireless Assistant. Lub HP CPU Assassin, ponieważ mogę zacząć go nazywać.

Omówienie eksperymentu

  • Pytanie : Co powoduje, że procesor w laptopach HP gwałtownie wzrasta, szczególnie WmiPrvSE.exe proces?

  • Hipoteza : przyczyną problemu jest HP Wireless Assistant (HPWA)

  • Metoda :

    1. Sprawdź, czy problem zacznie występować po zainstalowaniu HPWA.
    2. Sprawdź, czy procesor przestaje WmiPrvSE.exeprzyspieszać, a proces przestaje używać> 20% CPU, gdy proces HPWA jest zawieszony.
    3. Sprawdź, czy procesor ponownie zacznie przyspieszać, gdy proces HPWA zostanie ponownie włączony
    4. Powtórz kroki 2 i 3 dla wielu prób, aby zapewnić dokładne wyniki
       
  • Wyniki : HPWA powoduje ekstremalne zużycie procesora

  • Wniosek : należy odinstalować HPWA, ponieważ nie robi nic użytecznego

Informacje ogólne

Kiedy dostałem laptopa HP Pavillion dm4t, zauważyłem, że procesor często skacze aż do 50% wykorzystania, prawie co drugą sekundę. To wyczerpało żywotność baterii i rozgrzało laptopa; prawie takie same objawy, jak Sathya. Patrząc na Monitor zasobów w systemie Windows 7, zauważyłem, że proces WmiPrvSE.exebył błędny.

cpu nom nom

Szybkie wyszukiwanie w Google potwierdziło moje przypuszczenie, że był to proces hosta Instrumentacji zarządzania Windows (WMI). Krótko mówiąc, WMI można wykorzystać do wyszukiwania informacji o systemie, takich jak użycie procesora, uruchamianie procesów, kto jest zalogowany i wszelkiego rodzaju inne informacje. Proces hosta WMI uruchamia zapytania WMI dla każdego innego procesu, który je tworzy, więc WmiPrvSE.exesam nie był winowajcą, był po prostu pośrednikiem.

Aby wyśledzić, który konkretny proces był przyczyną tego problemu, użyłem Systinternals Process Explorer . Znalazłem, która instancja WmiPrvSE.exeprocesu używa dużej ilości procesora, i kliknąłem ją, aby otworzyć szczegółowe informacje.

eksplorator procesów

Niestety nie mogłem znaleźć sposobu, aby dowiedzieć się, jaki proces powoduje wszystkie zapytania, ale ponieważ wyizolowałem to jako źródło skoków procesora i wiedziałem, że jest to usługa, poszedłem do menedżera usług, aby zobaczyć, który usługi zależały od WMI, co może doprowadzić mnie do kolejnej wskazówki.

usługi nom nom

Doszedłem do wniosku, że przyczyną problemu nie byłaby wbudowana usługa systemu Windows, więc eliminując je, postanowiłem sprawdzić listę i spróbować wyłączyć każdą usługę, sprawdzając, czy problem nadal występuje. Na szczycie listy znajdowała się usługa HP Wireless Assistant. Wróciłem do menu usług i wyłączyłem tę usługę. Patrząc wstecz w menedżerze zadań, zauważyłem, że użycie procesora spadło prawie do zera. Z powrotem włączam usługę HPWA. Zwiększone zużycie procesora. Miałem teraz dość danych, aby sformułować swoją teorię. Odinstalowałem usługę HPWA i nigdy więcej nie miałem problemu.

Weryfikacja hipotezy

Kilka miesięcy później Sathya zadaje to pytanie. Postanowiłem raz na zawsze udowodnić, że to wina HPWA. Ponownie zainstalowałem HP Wireless Assistant, którego nie instalowałem od miesięcy. Natychmiast wzrosło użycie procesora. Następnie przeszedłem eksperyment opisany powyżej.

Najpierw wyizolowałem proces odpowiedzialny za usługę HPWA w Monitorze zasobów. HPWA_Service.exei HPWA_Main.exesą dwa. Oto jak wyglądało użycie procesora w obu przetwarzanych procesach:

menedżer zadań z uruchomionym hpwa

Następnie zawiesiłem oba procesy. Wykorzystanie procesora natychmiast spadło; oto jak to wyglądało po kilku chwilach, aby wyczyścić poprzednie użycie procesora na wykresie:

menedżer zadań bez uruchomionego hpwa

Ponownie włączyłem procesy, aby sprawdzić, czy użycie wróci. To zrobiło:

Menedżer zadań właśnie włączył hpwa
Pierwszy skok po włączeniu HPWA

menedżer zadań po włączeniu hpwa
Niedługo potem włączyłem HPWA

Ponowne zawieszenie procesów spowodowało zmniejszenie zużycia procesora:

niższe zużycie procesora po wyłączeniu hpwa

Przetestowałem to pod kątem jeszcze jednej iteracji, a na trzeciej próbie powtórzyło się to samo. Rozważyłem ten wystarczający dowód, aby wykazać, że przyczyną problemu był program HP Wireless Assistant, a następnie wyłączyłem usługę i teraz ją odinstaluję.

Wszystko, co wydaje się robić HPWA, to informowanie użytkownika o włączeniu lub wyłączeniu łączności bezprzewodowej i pożeranie procesora. Nic nie możesz na to poradzić z wbudowanymi narzędziami do zarządzania bezprzewodowego, więc radzę, abyś zainstalował to oprogramowanie.


Uwaga: co najmniej jedna osoba zgłosiła, że ​​odinstalowanie HPWA spowodowało, że ich wyłącznik bezprzewodowy na klawiaturze przestał działać. Na moim laptopie działało dobrze po odinstalowaniu HPWA, ale jeśli twój przestanie działać, zawsze możesz wyłączyć kartę bezprzewodową w systemie Windows. Naciśnij Winkey+, xaby otworzyć Centrum mobilności Windows, a następnie kliknij Turn Wireless Offprzycisk.

centrum mobilności systemu Windows


Według dyskusji na forach pomocy technicznej HP problem został rozwiązany w nowszych wersjach programu HP Wireless Assistant. Jeśli Twój laptop potrzebuje HPWA do korzystania z przycisku włączania / wyłączania Wi-Fi, możesz pobrać najnowszą wersję ze strony internetowej sterowników HP i prawdopodobnie nie będzie już tego problemu. Niemniej jednak, jeśli nie potrzebujesz go do przycisku włączania / wyłączania Wi-Fi, nadal wydaje się, że zainstalowanie tego oprogramowania nie stanowi żadnej wartości dodanej.

nhinkle
źródło
+1 - bardzo ładna, wyczerpująca odpowiedź. Tak wygląda mój procesor - w / HP CPU Assassin - i.imgur.com/dMwaJ.png
Sathyajith Bhat
I to jest post zawieszający usługi i.imgur.com/dn2Em.png
Sathyajith Bhat
18
WHOA! to jest naprawdę niesamowity post! Jeden z najlepiej udokumentowanych i zrzutów ekranu, jakie kiedykolwiek widziałem! +1 !!
studiohack
2
+1, Niesamowita praca detektywistyczna i głupkowaty post ze zrzutami ekranu, który korzysta z oprogramowania asystenta sieci bezprzewodowej w systemie Windows, to pierwsza rzecz, którą usuwam na nowym komputerze.
Moab
1
Dla mnie to usługa Dell Data Vault spowodowała skok CPU w dostawcy WMI. Jest to również zależność, jak wspomniano w tej odpowiedzi. Znalazłem to za pomocą metody Windows Clean Boot Method .
Cerveser,
38

Rozwiązywanie problemów

  1. Pobierz ProcDump z Microsoft Sysinternals.

  2. Zrób zrzut, gdy WmiPrvSE.EXE osiągnie 25% na 1 sekundę:

    procdump.exe -c 25 -s 1 -x WmiPrvSE.EXE %HOMEPATH%\WmiPrvSE.dmp
    

    Spowoduje to utworzenie zrzutu w folderze użytkownika.

    Powtórz to jeszcze 1–2 razy, aby uzyskać więcej zrzutów i być pewnym, że przyczyną jest zrzut, a nie kolejne normalne zdarzenie.

  3. Przeanalizuj zrzuty online i opcjonalnie udostępnij je na SpeedyShare .

    Alternatywnie : WinDBG może być używany z poleceniem !analyze -v, pamiętaj o ustawieniu symboli .

  4. Przedstawiony ślad stosu powinien zawierać procedurę, która to powoduje.

Być może google kilka najlepszych procedur stosu, aby uzyskać lepszy pomysł, co robią.
Jeśli nie pomogą, możesz potrzebować bardziej zaawansowanej analizy. Zobacz moją następną sekcję:


  1. Pobierz konfigurację z Narzędzia analizy wydajności systemu Windows dla swojej wersji systemu Windows.
  2. Zainstaluj oprogramowanie w swoim systemie.
  3. Otwórz wiersz polecenia jako administrator i skopiuj wklej następne polecenie:

    xperf -start perf!GeneralProfiles.InBuffer -stackwalk profile && timeout -1 && xperf -stop perf!GeneralProfiles.InBuffer %HOMEPATH%\myTrace.etl
    
  4. Naciśnij ENTER raz, aby uruchomić polecenie, teraz będziesz musiał poczekać, aż pojawi się skok.

  5. Zaraz po kolcu idziesz do konsoli i naciskasz ENTER.
  6. Po pewnym czasie w folderze użytkownika zostanie utworzony plik dziennika myTrace.etl.
  7. Uruchom następujące polecenie, aby wyświetlić plik i przeanalizować go ( wymagany WinDBG / Symbole ):

    xperf %HOMEPATH%\myTrace.etl
    

Jeśli chcesz, żebym to zbadał:

  1. Skompresuj myTrace.etl ze swojego folderu użytkownika do pliku zip.
  2. Udostępnij skompresowany plik zip na SpeedyShare .
  3. Udostępnij link tutaj, postaram się znaleźć i wskazać przyczynę problemu.

Ponieważ WmiPrvSE.EXE jest hostem do uruchamiania zapytań WMI w sklepie CAPI, możesz nie być w stanie znaleźć przyczyny nawet w XPerf z powodu IPC , innym rozwiązaniem, które właśnie znalazłem, byłoby włączenie rejestrowania WMI i sprawdzania dzienników jak opisano tutaj , ClientProcessId będzie PID procesu, który wykonał zapytanie WMI. Ten PID można prześledzić z powrotem do procesu, dodając kolumnę PID do Menedżera zadań lub Eksploratora procesów , lub tasklist /FI "PID eq X"gdzie X oznacza PID, który znalazłeś ...


Analiza zrzutu 1 : Linie 94-115 wskazują zdalne wywołanie procedury .
Analiza zrzutu 2 : linie 84-105 wskazują zdalne wywołanie procedury .

W jądrze uruchamiany jest nowy wątek do obsługi kodu pośredniczącego zdalnego wywołania procedury , który w istocie jest żądaniem zapytania, które dostawca WMI wykona i na które odpowie. Powoduje to wysoką aktywność procesora z powodu odczytu rejestru i / lub informacji o wydajności.

Ponieważ zrzut jest utrwaleniem jednej chwili, nie będziesz w stanie zobaczyć, który proces wykonał RPC.
Potrzebujesz programu, który śledzi XPerf, aby zobaczyć poprzedni wątek, który wykonywałby RPC.

Lub jeśli włączysz Informacje o stanie RPC , możesz użyć rpcdbg, aby zobaczyć, kto zainicjował połączenie.

Przykład:

0:000> bp rpcrt4!RpcServerUseProtseqEpA
0:000> g
Breakpoint 0 hit
eax=00452000 ebx=7ffd5000 ecx=00452008 edx=00000014 esi=00d5f55c edi=7c911970
eip=77e97a0b esp=0012ff3c ebp=0012ff6c iopl=0 nv up ei pl nz na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000206
RPCRT4!RpcServerUseProtseqEpA:
77e97a0b 8bff mov edi,edi
0:000> kb
ChildEBP RetAddr Args to Child
0012ff38 00401046 00452000 00000014 00452008 RPCRT4!RpcServerUseProtseqEpA
0012ff6c 00401e37 00000001 003330a0 00333120 hellos!main+0x46 [e:\projects\hello\hellos.c @ 21]

Powyższy przykład ustawia punkt przerwania na RPC, dzięki czemu można zobaczyć, kto uruchamia go w drugiej linii stosu. Ale cóż, jest mało prawdopodobne, aby ustawienie punktu przerwania dla pierwszego połączenia (pamiętaj, że jest to debugowanie na żywo) pomoże ci zobaczyć, kto wywołuje dostawcę WMI za każdym razem ...

W tym artykule znajduje się o wiele więcej informacji na temat informacji o stanie RPC, które mogą pomóc, ale nie dla osób o tak słabym sercu, jak my, przechodzimy przez to wszystko, kiedy zamiast tego możemy po prostu użyć XPerf. :-)


Ponieważ teraz wiemy o wewnętrznym działaniu RPC, równie dobrze możemy użyć Monitora API :

  1. Pobierz, zainstaluj i uruchom Monitor API. ( dwa razy, jeśli masz 64 bity: raz x86, raz x64)
  2. Przejdź do Plik -> Uruchom jako administrator
  3. Ustaw filtr przechwytywania API na Rpcrt4.dllmoduł.

    wprowadź opis zdjęcia tutaj

  4. Podobnie do punktu przerwania chcemy wiedzieć, kto wywołuje RpcServerUseProtSeqfunkcje:

    wprowadź opis zdjęcia tutaj

  5. Podłącz każdy uruchomiony proces z wyjątkiem tych z niskim PID (aby zapobiec awariom).
    Idealnie, nie chcesz zaczepiać dwm.exe/ winlogon.exeani opuszczać.
    Możesz także wypróbować pojedyncze procesy i później je odczepić w oknie Procesy zahaczone ...

    Chociaż ... Próbowałem tego i mogłem uzależnić się od dowolnego procesu.

  6. Jeśli wszystko pójdzie dobrze, proces przechwycony, który wywołuje wywołanie RPC, będzie zawierał wątki.
    Po kliknięciu tych wątków powinieneś zobaczyć wiele połączeń.
    Jeśli to zrobisz, znajdziesz proces powodujący problem!

Rozwiązanie

Utrzymanie aktualności komputera jest ważne, instalacja HPWA 4.0.10.0 rozwiązuje ten problem! ;-)

Tamara Wijsman
źródło
@TomWij - Analiza zrzutu online 1 , 2 . Zrzuca na Dropbox . Znam też PID. co mogę z tym zrobić?
Sathyajith Bhat
1
bardzo ładna odpowiedź, @TomWiji, dokumentacja naprawdę pomaga ...
studiohack
Wydaje się, że właśnie zainstalowany HPWA nie uruchamia się. Może wymagać ponownego uruchomienia. Jeśli to samo występuje na moim komputerze, postaram się zaktualizować post i pokazać, w jaki sposób większość metod rozwiązywania problemów może pokazać, że problem występuje.
Tamara Wijsman,
2
Trochę bardziej podobała mi się odpowiedź nhinkles - ale to też jest świetne i pomocne - ale przede wszystkim narzędzie takie jak monitor API jest czymś, za czym ostatnio tęsknię, więc dzięki i +1 za podpowiedź.
Tobias Plutat
2
@Tom, nie byłem pod wrażeniem i na pewno nie chciałem tego sugerować. Mimo to poczułem potrzebę rozpoznania dwóch doskonałych odpowiedzi na ten problem z nieco większą gadatliwością i zróżnicowaniem niż w przypadku samych głosów poparcia. :)
Tobias Plutat
13

Wpis na blogu Microsoft Czy WMIprvse jest prawdziwym złoczyńcą? pokazuje, jak znaleźć proces odpowiedzialny za procesor używany przez WmiPrvSE.exe.

Metoda wykorzystuje opcję podglądu zdarzeń „Pokaż dzienniki analityczne i debugowania” w celu śledzenia całej aktywności WMI, uzyskując w ten sposób identyfikator procesu winnego.

harrymc
źródło
Tak, powiedział, że kilka dni wcześniej i jest również wymieniony w moim poście między XPerf a Dump Analysis, ale do tej pory nie sprawdził PID, nie wykonał XPerf ani nie wykonał Monitora API, więc będę musiał na niego poczekać, zanim zgłosisz się dalej analiza.
Tamara Wijsman,
7

Po prostu dodając to dla każdego innego na tej samej łodzi, ta strona jest w całym Google. Miałem ten sam problem z WmiProvderHost zwiększającym wydajność procesora nawet o 50% i rozładowującym baterię w moim Lenovo Yoga2 Pro w systemie Windows 8.1.

Postępując zgodnie z powyższymi doskonałymi radami dochodzeniowymi, odkryłem, że problemem jest w rzeczywistości GoPro Studio (darmowe oprogramowanie do edycji wideo, które jest dostarczane z kamerami GoPro). Instaluje usługę monitorowania, która czeka na podłączenie kamery, a dla mnie był to winowajca.

DannyT
źródło
3
Windows 8.1, po zamknięciu programu rezydentnego GoPro zużycie procesora hosta dostawcy WMI spadło z 40% do 8%
user63227,
Windows 8.1, również doświadczający dużego zużycia procesora dzięki oprogramowaniu GoPro. Zamknięto go z zasobnika systemowego i wróciło do normy (i wyłączono teraz przy starcie).
Robin
4

Aby go debugować, użyj xperf z zestawu narzędzi wydajności Windows i uruchom ten plik cmd:

xperf -on PROC_THREAD+LOADER+PROFILE+INTERRUPT+DPC+DISPATCHER -stackwalk profile -BufferSize 1024 -MaxFile 256 -FileMode Circular -f Kernel.etl
xperf -start WMILogger -on Microsoft-Windows-WMI-Activity::0xff -BufferSize 1024 -f WMI.etl

echo Please capture about 30s of the WMI activity.

pause

xperf -stop
xperf -stop WMILogger
xperf -merge WMI.etl kernel.etl WMItracing.etl

del WMI.etl
del kernel.etl

Otwórz wygenerowany plik WMItracing.etl w WPA.exe i przeciągnij i upuść wykres „Zdarzenia ogólne” z lewej strony do okienka analizy.

wprowadź opis zdjęcia tutaj

Teraz filtruj tylko do zdarzeń Microsoft-Windows-WMI-Activity i poszukaj operacji WMI i ClientProcessId.

W moim przykładzie ten CLientProcessId należy do narzędzia o nazwie Veeam ONE Monitor Server . Zatrzymanie go rozwiązało problem z wykorzystaniem procesora .

Drugi przykład pokazano tutaj:

wprowadź opis zdjęcia tutaj

Czy widzisz powtarzające się wywołania procesu o numerze PID z 1924 r., Który należy do usługi monitorowania Intel ProSet.

Tutaj użycie procesora jest również pokazane w zestawach wywołań próbkowania procesora:

wprowadź opis zdjęcia tutaj

Narzędzie Intel zbyt często wysyła zapytania do powiadomień WMI, co powoduje problemy. Zatrzymanie go rozwiązało problem.

magicandre1981
źródło
1

Czy próbowałeś sprawdzić, czy to wirus? Niektóre wirusy naprawdę lubią paradować jako usługi Windows. Upewnij się, że WmiPrvSE.exeproces znajduje się w c:\windows\system32\wbemkatalogu. Jeśli nie, możesz uruchomić ogólne programy do wykrywania programów szpiegujących. Jeśli nie jest to oprogramowanie szpiegujące, może to być inna usługa, która go nazywa. Wiem, że mam kilka szybkich gadżetów na moim komputerze i, jak na ironię, gadżet monitora wydajności czasami sprawia, że ​​mój procesor trochę przyspiesza. Ponadto może to być kolejna usługa, która od czasu do czasu wyciska ten gaz. Na przykład bloatware od HP, Dell itp.

Poza tym inna odpowiedź od TomWij wydaje się całkiem miła z powodu rozwiązania problemu!

Duall
źródło
1
Alternatywnym, bardziej ogólnym sposobem sprawdzenia tego jest użycie Process Explorer z Sysinternals, a następnie włączenie Verify Signaturesopcji; następnie, jeśli (Verified) Xw Verified Signerkolumnie jest napisane, to jest weryfikowany przez Microsoft, a plik wykonywalny jest częścią produktu / firmy X, w tym przypadku Microsoft Windows.
Tamara Wijsman,
Jestem prawie pewien, że nie ma wirusa / złośliwego oprogramowania. Ponadto WmiPrvSE jest obecny, C:\Windows\system32\wbema kolumna zweryfikowana wskazuje, że plik został zweryfikowany. @TomWij
Sathyajith Bhat
@ Sathya Prawdopodobnie powiedziałbym wtedy, że jest to wzdęcie, szczególnie dlatego, że skomentowałeś, że masz HP „w / bzdury HP w pakiecie”. Spróbuj użyć msconfig i wyłączyć wszystkie usługi i programy HP podczas uruchamiania i sprawdź, czy to pomoże.
Duall
punkt, mam zamiar ponownie zainstalować Win 7, gdy naprawię dysk SSD, pomyślałem, że będzie to interesujące pytanie - więcej, aby dowiedzieć się, jak debugować
Sathyajith Bhat