Perché l'host del provider WMI (WmiPrvSE.exe) continua ad aggiungere la mia CPU?


88

In genere tengo il mio laptop su 24x7 e alla fine della giornata è davvero fastidioso bruciarmi le cosce a causa del surriscaldamento.

Il surriscaldamento sembra essere il risultato dell'host del provider WMI (WmiPrvSE.exe) che aumenta l'utilizzo della CPU al 25% ogni pochi minuti. Perché succede?

Ho un HP Envy 14 (con la merda in bundle HP) in esecuzione su Windows 7 Home Premium.

(Nota: sulla base delle precedenti osservazioni di @nhinkle , sembra che HP Wireless Manager potrebbe essere il colpevole, c'è un modo per confermarlo?)

Questa domanda era una domanda super utente della settimana .
Leggi il post del blog del 28 febbraio 2011 per maggiori dettagli o invia la tua domanda della settimana.


2
Bene, il modo migliore per confermare sarebbe disabilitarlo e vedere se continua;)
Matthieu Cartier,

@neuro heh, vero, ma mi piacerebbe vedere se qualcuno dei Super User ha un approccio diverso :)
Sathyajith Bhat

2
"È davvero fastidioso farmi bruciare le cosce" -> Le cosce non sono niente, controlla questo .
Tamara Wijsman,

1
Hai qualche gadget sul desktop? per esempio. monitor dello spazio su disco
Kez

1
@kez Nope - nessun gadget - un desktop pulito.
Sathyajith Bhat

Risposte:


110

Come Sathya ha menzionato nella sua domanda, ho avuto precedenti esperienze con questo problema sul mio portatile HP simile e ora ho confermato usando il metodo scientifico che i picchi di CPU sui laptop HP sono causati da HP Wireless Assistant. Oppure, HP CPU Assassin, come potrei iniziare a chiamarlo.

Panoramica dell'esperimento

  • Domanda : Cosa sta causando il picco della CPU sui laptop HP a intervalli frequenti, in particolare il WmiPrvSE.exe processo?

  • Ipotesi : HP Wireless Assistant (HPWA) sta causando il problema

  • Metodo :

    1. Verifica se il problema inizia a verificarsi quando è installato HPWA.
    2. Verifica se la CPU smette di funzionare e il WmiPrvSE.exeprocesso smette di utilizzare> 20% CPU quando il processo HPWA è sospeso.
    3. Verifica se la CPU riprende a funzionare di nuovo quando il processo HPWA viene riabilitato
    4. Ripetere i passaggi 2 e 3 per più prove per garantire risultati accurati
       
  • Risultati : HPWA sta causando un utilizzo estremo della CPU

  • Conclusione : è necessario disinstallare HPWA poiché non fa nulla di utile

Informazioni di base

Quando ho ottenuto il mio laptop HP Pavillion dm4t, ho notato che la CPU aumentava spesso fino al 50% di utilizzo, quasi ogni due secondi. Ciò riduceva la durata della batteria e riscaldava il laptop; più o meno gli stessi sintomi di Sathya. Solo guardando Resource Monitor in Windows 7, sono stato in grado di vedere che il processo WmiPrvSE.exeera in errore.

cpu nom nom

Una rapida ricerca su Google ha confermato il mio presupposto che si trattasse del processo host di Strumentazione gestione Windows (WMI). In breve, WMI può essere utilizzato per richiedere informazioni sul sistema, come l'utilizzo del processore, i processi in esecuzione, chi è connesso e ogni sorta di altre informazioni. Il processo host WMI esegue query WMI per qualsiasi altro processo che li rende, quindi WmiPrvSE.exenon è stato esso stesso il colpevole, è stato semplicemente un intermediario.

Per cercare quale processo specifico stava causando questo problema, ho usato Systinternals Process Explorer . Ho scoperto quale istanza del WmiPrvSE.exeprocesso utilizzava una grande quantità di CPU e ho fatto clic su di essa per aprire informazioni dettagliate.

esploratore di processo

Sfortunatamente, non riuscivo a vedere alcun modo per scoprire quale processo stava facendo tutte le query, ma poiché avevo isolato questo come fonte dei picchi della CPU e sapevo che era un servizio, sono andato dal responsabile dei servizi per vedere quale i servizi dipendevano da WMI, pensando che potesse portarmi a un altro indizio.

servizi nom nom

Ho pensato che non sarebbe stato un servizio di Windows integrato a causare il problema, quindi eliminandoli, ho deciso di scrivere l'elenco e provare a disabilitare ciascun servizio e vedere se il problema persisteva. In cima all'elenco c'era il servizio HP Wireless Assistant. Sono tornato al menu dei servizi e ho disabilitato quel servizio. Guardando indietro nel Task Manager, ho visto che l'utilizzo della CPU era andato quasi a nulla. Riaccendo il servizio HPWA. Backup dell'utilizzo della CPU. Ora avevo abbastanza dati per formare la mia teoria. Ho disinstallato il servizio HPWA e non ho mai più avuto il problema.

Verifica dell'ipotesi

Alcuni mesi dopo, Sathya pone questa domanda. Ho deciso di dimostrare una volta per tutte che era colpa di HPWA. Ho reinstallato HP Wireless Assistant, che non avevo installato da mesi. Immediatamente, l'utilizzo del processore è aumentato. Ho quindi proseguito con l'esperimento descritto sopra.

Innanzitutto, ho isolato il processo responsabile del servizio HPWA in Resource Monitor. HPWA_Service.exee HPWA_Main.exesono i due. Ecco come appariva l'utilizzo della CPU con entrambi questi processi in esecuzione:

task manager con hpwa in esecuzione

Quindi, ho sospeso entrambi i processi. L'utilizzo della CPU è subito diminuito; ecco come appariva dopo alcuni istanti per il precedente utilizzo della CPU sul grafico per cancellare:

task manager senza hpwa in esecuzione

Ho nuovamente abilitato i processi per vedere se l'utilizzo sarebbe tornato indietro. Ha fatto:

task manager ha appena abilitato hpwa
Il primo picco mentre abilito HPWA

task manager dopo aver abilitato hpwa
Poco dopo aver abilitato HPWA

La sospensione dei processi ha comportato la riduzione dell'utilizzo della CPU:

ridurre l'utilizzo della cpu dopo aver disabilitato hpwa

Ho provato questo per un'altra iterazione e alla terza prova è successa la stessa cosa esatta. Ho preso in considerazione queste prove sufficienti per dimostrare che HP Wireless Assistant stava causando il problema, quindi ho disabilitato il servizio e ora lo disinstallerò.

Tutto ciò che HPWA sembra fare è informare l'utente quando il wireless è acceso o spento e divorare la CPU. Non c'è nulla che tu possa fare con esso che non puoi fare con gli strumenti di gestione wireless integrati, quindi consiglierei che se hai questo software installato, lo rimuovi.


Nota: almeno una persona ha riferito che la disinstallazione di HPWA ha causato l'interruzione del funzionamento dell'interruttore wireless sulla tastiera. Sul mio laptop, ha continuato a funzionare bene dopo aver disinstallato HPWA, ma nel caso in cui il tuo smetta di funzionare, puoi sempre disabilitare la scheda wireless da Windows. Premi Winkey+ xper aprire Windows Mobility Center, quindi fai clic sul Turn Wireless Offpulsante.

centro di mobilità windows


Secondo una discussione sui forum di supporto HP, il problema è stato risolto nelle versioni più recenti di HP Wireless Assistant. Se il tuo laptop ha bisogno di HPWA per utilizzare il pulsante di attivazione / disattivazione wifi, puoi scaricare l'ultima versione dal sito Web dei driver HP e probabilmente non avrai più questo problema. Tuttavia, se non è necessario per il pulsante di attivazione / disattivazione del wifi, sembra che non ci sia ancora alcun valore aggiunto dall'installazione di questo software.


+1 - risposta molto bella e completa. Questo è lo stato della mia CPU - w / the HP CPU Assassin - i.imgur.com/dMwaJ.png
Sathyajith Bhat

E questo è post che sospende i servizi i.imgur.com/dn2Em.png
Sathyajith Bhat

18
Whoa! questo è un post davvero fantastico ! Uno dei post più documentati e schermati che abbia mai visto! +1 !!
studiohack

2
+1, fantastico lavoro investigativo e post spettrale con schermate, che utilizza il software di assistente wireless in Windows, è la prima cosa che rimuovo su un nuovo PC.
Moab,

1
Per me è stato il Dell Data Vault Service a causare il picco della CPU nel provider WMI. È anche una dipendenza, come menzionato in questa risposta. Ho trovato questo con il metodo di avvio pulito di Windows .
Cerveser,

38

Risoluzione dei problemi

  1. Scarica ProcDump da Microsoft Sysinternals.

  2. Lascia che esegua un dump una volta che WmiPrvSE.EXE raggiunge il 25% per 1 secondo:

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

    Ciò creerà un dump nella cartella Utente.

    Sentiti libero di ripetere 1 - 2 volte in più in modo da avere più discariche e puoi essere certo che la causa è stata eliminata e non un altro evento più normale.

  3. Analizza i tuoi dump online e, facoltativamente, condividili su SpeedyShare .

    Alternativa : WinDBG può essere utilizzato con il comando !analyze -v, assicurarsi di impostare i simboli .

  4. La traccia dello stack che mostra dovrebbe includere la procedura che causa questo.

Forse google alcune delle migliori procedure dello stack per avere un'idea migliore di ciò che fanno.
Se non ti aiutano, potresti aver bisogno di analisi più avanzate. Vedi la mia prossima sezione:


  1. Scarica l'installazione da Strumenti di analisi delle prestazioni di Windows per la tua versione di Windows.
  2. Installa il software sul tuo sistema.
  3. Apri un prompt dei comandi come amministratore e copia incolla il comando successivo:

    xperf -start perf!GeneralProfiles.InBuffer -stackwalk profile && timeout -1 && xperf -stop perf!GeneralProfiles.InBuffer %HOMEPATH%\myTrace.etl
    
  4. Premi ENTER una volta per avviare il comando, ora dovrai attendere che si verifichi il picco.

  5. Subito dopo il picco vai alla console e premi ENTER.
  6. Dopo aver atteso qualche tempo, nella cartella dell'utente verrà prodotto un file di registro myTrace.etl.
  7. Eseguire il comando seguente per mostrare il file e analizzarlo ( WinDBG / Simboli richiesti):

    xperf %HOMEPATH%\myTrace.etl
    

Se vuoi che lo guardi:

  1. Comprimi myTrace.etl dalla tua cartella utente in un file zip.
  2. Condividi il file zip compresso su SpeedyShare .
  3. Condividi qui il link, cercherò di trovare e mostrarti la causa del tuo problema.

Poiché WmiPrvSE.EXE è un host per l'esecuzione di query WMI sull'archivio CAPI, potrebbe non essere possibile trovare la causa anche con XPerf a causa dell'IPC , un'altra soluzione che ho appena trovato sarebbe quella di abilitare la registrazione WMI e il controllo dei registri come descritto qui , ClientProcessId sarebbe il PID del processo che ha effettuato la query WMI. Questo PID può essere ricondotto al processo aggiungendo una colonna PID a Task Manager o Process Explorer o con tasklist /FI "PID eq X"dove X è il PID che hai trovato ...


Analisi del dump 1 : le righe 94-115 indicano una chiamata di procedura remota .
Analisi del dump 2 : le righe 84-105 indicano una chiamata di procedura remota .

Nel kernel, viene avviato un nuovo thread per gestire uno stub di chiamata di procedura remota , che in sostanza è una richiesta di query a cui il provider WMI eseguirà e risponderà. Ciò comporta un'elevata attività della CPU a causa della lettura del registro e / o delle informazioni sulle prestazioni.

Poiché un dump è una cattura di un singolo momento, non sarai in grado di vedere quale processo ha eseguito l'RPC.
Quindi, è necessario un programma che traccia come XPerf per vedere il thread precedente che farebbe l'RPC.

Oppure, se si abilitano le informazioni sullo stato RPC , è possibile utilizzare rpcdbg per vedere chi ha avviato la chiamata.

Esempio:

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]

L'esempio sopra imposta un punto di interruzione sull'RPC, in modo da vedere chi lo esegue nella seconda riga di stack. Ma è improbabile che l'impostazione di un punto di interruzione sulla prima chiamata (si noti che si tratta di debug in tempo reale) ti aiuterà a vedere chi chiama il provider WMI ogni volta ...

Ci sono molte più informazioni in questo articolo sulle informazioni sullo stato RPC che potrebbero aiutare, ma non è per i deboli di cuore come noi passare attraverso tutto ciò quando invece potremmo semplicemente usare XPerf. :-)


Come ora sappiamo del funzionamento interno di come funziona l'RPC, potremmo anche usare API Monitor :

  1. Scarica, installa e avvia API Monitor. ( due volte se hai 64 bit: una volta x86, una volta x64)
  2. Vai a File -> Esegui come amministratore
  3. Impostare il filtro di acquisizione API sul Rpcrt4.dllmodulo.

    inserisci qui la descrizione dell'immagine

  4. Simile al punto di interruzione, vogliamo sapere chi chiama le RpcServerUseProtSeqfunzioni:

    inserisci qui la descrizione dell'immagine

  5. Agganciare ciascun processo in esecuzione ad eccezione di quelli con un PID basso (per evitare arresti anomali).
    Ideale, non vuoi agganciare dwm.exe/ winlogon.exeo abbassare.
    Puoi anche provare singoli processi e sganciarli successivamente dalla finestra Processi agganciati ...

    Anche se ... l'ho provato e ho potuto agganciare qualsiasi processo.

  6. Se tutto va bene, il processo di Hooked che effettua la chiamata RPC conterrà thread.
    E facendo clic su questi thread, dovresti vedere un sacco di chiamate.
    Se lo fai, hai trovato il processo che causa il problema!

Soluzione

Mantenere il computer aggiornato è importante, l'installazione di HPWA 4.0.10.0 risolve questo problema! ;-)


@TomWij - Analisi del dump online 1 , 2 . Dump su dropbox . Inoltre, conosco il PID. cosa posso farci?
Sathyajith Bhat

1
Risposta molto bella, @ TomWiji, la documentazione aiuta davvero ...
studiohack

Ho appena installato HPWA, ma non sembra attivarsi. Potrebbe essere necessario riavviare. Se lo stesso accade sul mio PC, proverò ad aggiornare il post e mostrerò come la maggior parte dei metodi di risoluzione dei problemi potrebbe mostrarti che si verifica il problema.
Tamara Wijsman,

2
Mi è piaciuta la risposta di nhinkles un po 'meglio, ma è anche molto utile e utile, ma soprattutto uno strumento come il monitoraggio API è qualcosa che mi è sfuggito di recente, quindi grazie e +1 per l'informazione.
Tobias Plutat,

2
@Tom, non avevo quell'impressione e certamente non volevo implicarlo. Eppure io mi sento il bisogno di riconoscere due ottime risposte al problema con un po 'più di dettaglio e la differenziazione di quanto io potessi con i soli upvotes. :)
Tobias Plutat,

13

Il blog di Microsoft è WMIprvse un vero cattivo? mostra come individuare quale processo è responsabile della CPU utilizzata da WmiPrvSE.exe.

Il metodo utilizza l'opzione Visualizzatore eventi di "Mostra registri analitici e di debug" per tracciare tutte le attività WMI, ottenendo così l'ID di processo del processo colpevole.


Sì, ha detto che alcuni giorni prima ed è anche elencato nel mio post tra XPerf e Dump Analysis ma non ha verificato il PID, fatto XPerf o API Monitor finora, quindi dovrò aspettare prima di applicare ulteriormente analisi.
Tamara Wijsman,

7

Aggiungendo questo per chiunque altro nella stessa barca, questa pagina è su Google. Ho avuto lo stesso problema con WmiProvderHost che ha aumentato la CPU fino al 50% e ha scaricato la batteria sul mio Lenovo Yoga2 Pro su Windows 8.1.

Seguendo alcuni degli eccellenti consigli di indagine di cui sopra, ho scoperto che il problema per me era in realtà GoPro Studio (software di editing video gratuito fornito con fotocamere GoPro). Installa un servizio di monitoraggio che ti aspetta per connettere la videocamera e per me questo è stato il colpevole.


3
Windows 8.1, dopo aver chiuso il programma residente GoPro, l'utilizzo della CPU dell'host del provider WMI è passato dal 40% all'8%
user63227

Windows 8.1, anche con un elevato utilizzo della CPU grazie al software GoPro. Chiuso dalla barra delle applicazioni ed è tornato alla normalità (e disabilitato all'avvio ora).
Robin,

4

Per eseguire il debug, utilizzare xperf dal toolkit Performance di Windows ed eseguire questo file 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

Aprire WMItracing.etl generato in WPA.exe e grag & drop il grafico "Eventi generici" dal lato sinistro nel riquadro di analisi.

inserisci qui la descrizione dell'immagine

Ora filtra solo gli eventi Microsoft-Windows-WMI-Activity e cerca le operazioni WMI e ClientProcessId.

Nel mio esempio questo CLientProcessId appartiene a uno strumento chiamato Veeam ONE Monitor Server . Arrestandolo, risolto il problema di utilizzo della CPU .

E il secondo esempio è mostrato qui:

inserisci qui la descrizione dell'immagine

Vedi delle chiamate ricorrenti di un processo con PID del 1924 che appartiene al servizio di monitoraggio Intel ProSet.

Qui l'utilizzo della CPU è mostrato anche nei callstack di campionamento della CPU:

inserisci qui la descrizione dell'immagine

Quindi, lo strumento Intel esegue le query di notifica WMI troppo spesso e questo causa i problemi. Fermandolo, risolto il problema.


1

Hai provato a vedere se è un virus? Ad alcuni virus piace davvero sfilare come i servizi Windows in quel modo. Assicurarsi che il WmiPrvSE.exeprocesso si trovi nella c:\windows\system32\wbemdirectory. In caso contrario, potresti voler eseguire programmi generali di rilevamento spyware. Se non è uno spyware, potrebbe essere un altro servizio che lo chiama. So di avere alcuni gadget in esecuzione sul mio computer, e ironicamente il gadget di monitoraggio delle prestazioni a volte fa un po 'aumentare la mia CPU. Inoltre, potrebbe essere un altro servizio che preme quel gas ogni tanto. Ad esempio, bloatware di HP, Dell, ecc.

A parte questo, l'altra risposta di TomWij sembra piuttosto carina per la risoluzione dei problemi!


1
Un modo più generico alternativo per verificare ciò è utilizzare Process Explorer da Sysinternals e quindi abilitare l' Verify Signaturesopzione; quindi, se indicato (Verified) Xnella Verified Signercolonna, viene verificato da Microsoft e l'eseguibile fa parte del prodotto / azienda X, in questo caso Microsoft Windows.
Tamara Wijsman,

Sono abbastanza sicuro che non ci siano virus / malware. Inoltre, WmiPrvSE è presente nella C:\Windows\system32\wbemcolonna e verificato indica che il file è verificato. @TomWij
Sathyajith Bhat

@ Sathya probabilmente direi che è il bloatware allora, soprattutto perché hai commentato che avevi un HP "w / the HP bundle merda". Provare a utilizzare msconfig e disabilitare tutti i servizi e programmi HP all'avvio e vedere se ciò aiuta.
Duall,

punto, ho intenzione di reinstallare Win 7 una volta risolto il mio SSD, ho pensato che questa sarebbe una domanda interessante - più per imparare a eseguire il debug
Sathyajith Bhat
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.