Questão Por que o host do provedor de WMI (WmiPrvSE.exe) continua aumentando minha CPU?


Eu costumo manter meu laptop em 24x7, e no final do dia é muito chato ter minhas coxas queimadas por causa do superaquecimento.

O superaquecimento parece ser um resultado do WMI Provider Host (WmiPrvSE.exe) aumentando a utilização da CPU para 25% a cada poucos minutos. Por que isso acontece?

Eu tenho um HP Envy 14 (com a porcaria da HP) rodando no Windows 7 Home Premium.

(Nota: Baseado em @ nhinkle's observações passadas, parece que o HP Wireless Manager pode ser o culpado, existe alguma maneira de confirmar isso?)

Esta questão foi uma Pergunta de super usuário da semana.
  Leia o 28 de fevereiro de 2011 entrada de blog para mais detalhes ou envie seu próprio Pergunta da semana.


82


origem


Bem, a melhor maneira de confirmar isso seria desativá-lo e ver se ele continua;) - Matthieu Cartier
@neuro heh, verdade, mas eu gostaria de ver se algum dos Super Usuários tem uma abordagem diferente :) - Sathya♦
"É muito chato ter minhas coxas queimando" -> Coxas não são nada, confira isso. - Tom Wijsman
Você tem gadgets na área de trabalho? por exemplo. monitor de espaço em disco - Kez
@kez Nope - sem gadgets - um desktop limpo. - Sathya♦


Respostas:


Como Sathya mencionou em sua pergunta, eu já tive experiência anterior com esse problema no meu laptop HP similar, e agora confirmei que usar o método científico que a CPU incide em laptops HP é causado pelo HP Wireless Assistant. Ou, HP CPU Assassin, como eu posso começar a chamá-lo.

Visão geral do experimento

  • Questão: O que está fazendo com que a CPU do laptop HP aumente em intervalos freqüentes, especificamente  WmiPrvSE.exe  processo?

  • Hipótese: O HP Wireless Assistant (HPWA) está causando o problema

  • Método:

    1. Veja se o problema começa a ocorrer quando o HPWA é instalado.
    2. Veja se a CPU pára de cravar e o WmiPrvSE.exe O processo pára usando> 20% da CPU quando o processo da HPWA é suspenso.
    3. Veja se a CPU começa a aumentar novamente quando o processo da HPWA é reativado
    4. Repita as etapas 2 e 3 para várias tentativas para garantir resultados precisos
  • Resultados: HPWA está causando uso excessivo de CPU

  • Conclusão: Você deve desinstalar o HPWA, pois não faz nada útil

Informação de fundo

Quando eu peguei meu laptop HP Pavillion dm4t, notei que a CPU frequentemente aumentava para até 50% de uso, quase a cada dois segundos. Isso estava drenando a vida da bateria e aquecendo o laptop; os mesmos sintomas que Sathya experimentou. Apenas observando o Monitor de Recursos no Windows 7, pude ver que o processo WmiPrvSE.exe estava com defeito.

cpu nom nom

Uma rápida pesquisa no Google confirmou minha suposição de que essa era a Instrumentação de Gerenciamento do Windows Processo de host (WMI). Em suma, o WMI pode ser usado para consultar informações do sistema, como uso do processador, processos em execução, quem está conectado e todos os tipos de outras informações. O processo do host WMI executa consultas WMI para qualquer outro processo que as WmiPrvSE.exe não era o culpado, era simplesmente um intermediário.

A fim de descobrir qual processo específico estava causando esse problema, usei Explorador de Processos do Systinternals. Eu encontrei qual instância do WmiPrvSE.exe processo estava usando uma grande quantidade de CPU e clicou nele para abrir informações detalhadas.

process explorer

Infelizmente, não pude ver nenhuma maneira de descobrir qual processo estava fazendo todas as consultas, mas como eu havia isolado isso como a origem dos picos de CPU e sabia que era um serviço, fui ao gerente de serviços para ver qual serviços dependiam do WMI, pensando que isso poderia me levar a outra pista.

services nom nom

Eu percebi que não seria um serviço interno do Windows causando o problema, então, eliminando esses problemas, decidi trabalhar na lista e tentar desabilitar cada serviço e verificar se o problema persistia. Bem no topo da lista estava o HP Wireless Assistant Service. Voltei ao menu de serviços e desativei esse serviço. Olhando para trás no gerenciador de tarefas, vi que o uso da CPU foi quase nada. Eu o serviço HPWA de volta. O uso da CPU foi cancelado. Eu agora tinha dados suficientes para formar minha teoria. Desinstalei o serviço da HPWA e nunca mais tive o problema.

Verificando a hipótese

Vários meses depois, Sathya faz essa pergunta. Eu decidi provar de uma vez por todas que isso era culpa da HPWA. Eu reinstalei o HP Wireless Assistant, que eu não tinha instalado em meses. Imediatamente, o uso do processador disparou. Depois, experimentei o experimento descrito acima.

Primeiro, isolei o processo responsável pelo serviço da HPWA no Monitor de Recursos. HPWA_Service.exe e HPWA_Main.exe são os dois. Aqui está como era o uso da CPU com ambas as execuções processadas:

task manager with hpwa running

Então, eu suspendi os dois processos. O uso da CPU imediatamente caiu; Aqui está o que pareceu depois de alguns momentos para o uso da CPU anterior no gráfico para limpar:

task manager without hpwa running

Ativei novamente os processos para ver se o uso voltaria. Fez:

task manager just enabled hpwa
O primeiro pico quando eu habilito a HPWA

task manager after enabling hpwa
  Pouco tempo depois que eu habilitei a HPWA 

Suspender os processos novamente resultou no uso da CPU voltando para baixo:

lower cpu usage after disabling hpwa

Eu testei isso por mais uma iteração, e no terceiro teste, a mesma coisa aconteceu novamente. Eu considerei essa evidência suficiente para mostrar que o HP Wireless Assistant estava causando o problema e, posteriormente, desabilitei o serviço e agora o desinstalarei.

Tudo o que o HPWA parece fazer é informar ao usuário quando seu wireless está ligado ou desligado, e devorar a CPU. Não há nada que você possa fazer com isso que você não pode fazer com as ferramentas de gerenciamento sem fio internas, então eu aconselho que se você tiver este software instalado, você o remove.


Nota: Pelo menos uma pessoa relatou que a desinstalação do HPWA fez com que o comutador sem fio do teclado parasse de funcionar. No meu laptop, ele continuou funcionando bem após a desinstalação do HPWA, mas caso o seu pare de funcionar, você sempre pode desativar a placa sem fio dentro do Windows. pressione Winkey+x para abrir o Windows Mobility Center, em seguida, clique no Turn Wireless Off botão.

windows mobility center


De acordo com uma discussão Nos fóruns de suporte da HP, o problema foi corrigido em versões mais recentes do HP Wireless Assistant. Se o seu laptop precisar que a HPWA use o botão de ativação / desativação do Wi-Fi, você poderá fazer o download da versão mais recente no site de drivers da HP e provavelmente não terá mais esse problema. No entanto, se você não precisa dele para o botão de ligar / desligar do Wi-Fi, ainda parece não haver valor acrescentado por ter este software instalado.


106



+1 - resposta muito boa e abrangente. Este é o estado da minha CPU - com o HP CPU Assassin - i.imgur.com/dMwaJ.png - Sathya♦
E isso é post suspendendo os serviços i.imgur.com/dn2Em.png - Sathya♦
UAU! isto é um seriamente incrível postar! Um dos posts mais documentados e screenshotdos que eu sempre visto! +1 !! - studiohack♦
+1, trabalho de detetive incrível e post spiffy com screenshots, que usa software assistente sem fio no Windows, é a primeira coisa que eu removo em um novo PC. - Moab
Para mim foi o Serviço de armazenamento de dados da Dell causando o pico da CPU no provedor WMI. É também uma dependência, como mencionado nesta resposta. Eu encontrei isso com o Método de inicialização limpa do Windows. - Cerveser


Solução de problemas

  1. Baixar Procump da Microsoft Sysinternals.

  2. Deixe levar um dump quando o WmiPrvSE.EXE atingir 25% por 1 segundo:

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

    Isto irá criar um despejo na sua pasta de usuário.

    Sinta-se à vontade para repetir este 1-2 vezes mais para ter mais dumps e ter certeza de que a causa será descartada e não outro evento mais normal.

  3. Analise seu despejo (s) conectados e, opcionalmente, compartilhá-lo em SpeedyShare.

    Alternativa: WinDBG poderia ser usado com o comando !analyze -v, tenha certeza de definir símbolos.

  4. O rastreamento de pilha que mostra deve incluir o procedimento que causa isso.

Talvez pesquise alguns dos principais procedimentos da pilha para ter uma ideia melhor do que eles fazem.
Se eles não ajudarem, talvez você precise de uma análise mais avançada. Veja minha próxima seção:


  1. Baixe a instalação de Ferramentas de análise de desempenho do Windows para a sua versão do Windows.
  2. Instale o software no seu sistema.
  3. Abra um prompt de comando como administrador, e copie e cole o próximo comando:

    xperf -start perf!GeneralProfiles.InBuffer -stackwalk profile && timeout -1 && xperf -stop perf!GeneralProfiles.InBuffer %HOMEPATH%\myTrace.etl
    
  4. pressione ENTRAR  uma vez para iniciar o comando, agora você terá que esperar até que o pico tenha ocorrido.

  5. Logo após o seu pico você vai ao console e pressiona ENTRAR.
  6. Depois de esperar algum tempo, um arquivo de log myTrace.etl será produzido na sua pasta de usuário.
  7. Execute o seguinte comando para mostrar o arquivo e analisá-lo (WinDBG/Símbolos requeridos):

    xperf %HOMEPATH%\myTrace.etl
    

Se você quiser que eu olhe para isso:

  1. Compactar myTrace.etl da pasta do usuário para um arquivo zip.
  2. Compartilhe o arquivo zip compactado SpeedyShare.
  3. Compartilhe o link aqui, eu tentarei encontrar e mostrar a causa do seu problema.

Como o WmiPrvSE.EXE é um host para executar consultas WMI no armazenamento CAPI, talvez você não consiga encontrar a causa, mesmo com o XPerf, devido a IPC, outra solução que acabei de encontrar seria habilitar o log do WMI e verificar os logs conforme descrito Aqui, o ClientProcessId seria o PID do processo que fez a consulta WMI. Este PID pode ser rastreado de volta ao processo adicionando uma coluna PID ao Gerenciador de Tarefas ou Process Explorer, ou com tasklist /FI "PID eq X" onde X é o PID que você encontrou ...


Análise de Despejo 1: Linhas 94-115 indicam um Chamada de Procedimento Remoto.
Análise de Despejo 2: Linhas 84-105 indicam um Chamada de Procedimento Remoto.

No Kernel, um novo segmento é iniciado manipular um stub de chamada de procedimento remoto, que, em essência, é uma solicitação de consulta que o Provedor WMI executará e responderá. Isso resulta em uma alta atividade da CPU devido à leitura das informações de registro e / ou desempenho.

Como um dump é uma captura de um único momento, você não poderá ver qual processo executou o RPC.
Então, você precisa de um programa que rastreia como o XPerf para ver o thread anterior que estaria fazendo o RPC.

Ou se você habilitar informações de estado de RPC, você pode usar rpcdbg para ver quem iniciou a chamada.

Exemplo:

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]

O exemplo acima define um ponto de interrupção no RPC, para que você possa ver quem o executa na segunda linha da pilha. Mas bem, é improvável que definir um ponto de interrupção na primeira chamada (observe que isso é uma depuração ao vivo) ajudará você a ver quem chama o Provedor WMI toda vez ...

Há muito mais informações nesse artigo sobre Informação do Estado RPC isso pode ajudar, mas não é para os frágeis como nós passarmos por tudo isso quando podemos usar o XPerf. :-)


Como sabemos agora sobre o funcionamento interno de como o RPC funciona, podemos também usar Monitor de API:

  1. Baixe, instale e inicie o API Monitor. (duas vezes se você tiver 64 bits: uma vez x86, uma vez x64)
  2. Vamos para Arquivo -> Executar como administrador
  3. Colocou o Filtro de captura de API ao Rpcrt4.dll módulo.

    enter image description here

  4. Semelhante ao ponto de interrupção, queremos saber quem chama o RpcServerUseProtSeq funções:

    enter image description here

  5. Gancho cada Processo em execução exceto para aqueles com um PID baixo (para evitar falhas).
    Ideal, você não quer enganchar dwm.exe/winlogon.exe ou inferior.
    Você também pode tentar processos únicos e desengatá-los mais tarde Processos Hooked janela...

    Embora ... eu tentei e poderia ligar sobre qualquer processo.

  6. Se tudo correr bem, o Processo Enganchado isso faz com que a chamada RPC contenha threads.
    E, ao clicar nesses tópicos, você verá várias chamadas.
    Se você fizer isso, você encontrou o processo causando o problema!

Solução

Manter o seu computador atualizado é importante, instalando HPWA 4.0.10.0 resolve isso! ;-)


37



@TomWij - Análise de despejo on-line 1, 2. Despejos em Dropbox. Além disso, conheço o PID. o que posso fazer com isso? - Sathya♦
resposta muito legal, @TomWiji, a documentação realmente ajuda ... - studiohack♦
Acabou de instalar a HPWA, parece que não entra em ação. Pode ser necessário reiniciar. Se o mesmo ocorrer no meu PC, tentarei atualizar a postagem e mostrar como a maioria dos métodos de solução de problemas pode mostrar que o problema ocorreu. - Tom Wijsman
Eu gostei da resposta de nhinkles um pouco melhor - mas isso é ótimo e útil também - mas acima de tudo, uma ferramenta como o monitor de API é algo que eu tenho começado a perder ultimamente, então obrigado e +1 pela dica. - Tobias Plutat
@Tom, eu não estava com essa impressão e certamente não queria implicar isso. Ainda eu fez sinta o desejo de reconhecer duas respostas excelentes para o problema com um pouco mais de verbosidade e diferenciação do que com as votações sozinhas. :) - Tobias Plutat


A entrada do blog da Microsoft O WMIprvse é um verdadeiro vilão? mostra como localizar qual processo é responsável pela CPU que o WmiPrvSE.exe está usando.

O método usa a opção Visualizador de Eventos de "Mostrar Logs Analíticos e de Depuração" para rastrear todas as atividades do WMI, obtendo assim o id do processo do processo culpado.


13



Sim, disse isso alguns dias antes e ele também está listado no meu post entre o XPerf e o Dump Analysis, mas ele não verificou o PID, fez o XPerf ou fez o API Monitor até o momento, então vou ter que esperar por ele antes de aplicar uma análise mais aprofundada. - Tom Wijsman


Apenas adicionando isso para qualquer outra pessoa no mesmo barco, esta página está em todo o Google. Eu tive o mesmo problema com WmiProvderHost spiking CPU até 50% e drenar a bateria no meu Lenovo Yoga2 Pro no Windows 8.1.

Seguindo alguns dos excelentes conselhos de investigação acima, descobri que a questão para mim era na verdade Estúdio GoPro (software gratuito de edição de vídeo que vem com câmeras GoPro). Ele instala um serviço de monitoramento que espera que você conecte sua câmera e, para mim, esse foi o culpado.


6



Windows 8.1, depois de fechar o programa residente da GoPro, o uso da CPU do Host do Provedor WMI caiu de 40% para 8% - user63227
Windows 8.1, também experimentando alto uso de CPU graças ao software GoPro. Fechado da bandeja do sistema e está de volta ao normal (e desativado na inicialização agora). - Robin


Para depurá-lo, use xperf do Toolkit de desempenho do Windows e execute este arquivo 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

Abra o arquivo WMItracing.etl gerado no WPA.exe e clique e arraste o gráfico "Eventos genéricos" do lado esquerdo para o painel de análise.

enter image description here

Agora filtre para Microsoft-Windows-WMI-Activitysomente eventos e procure por operações WMI e o ClientProcessId.

No meu exemplo, este CLientProcessId pertence a uma ferramenta chamada Veeam ONE Monitor Server. Parando, consertou o problema de uso da CPU.

E segundo exemplo é mostrado aqui:

enter image description here

Você vê chamadas recorrentes de um processo com PID de 1924 que pertence ao serviço de monitoramento ProSet da Intel.

Aqui, o uso da CPU também é mostrado nos callstacks de amostragem da CPU:

enter image description here

Portanto, a ferramenta Intel faz consultas de notificação do WMI com muita freqüência e isso causa os problemas. Parando, resolveu o problema.


4





Você já tentou ver se é um vírus? Alguns vírus realmente gostam de desfilar como o Windows presta serviços como esse. Certifique-se de que WmiPrvSE.exe processo está localizado no c:\windows\system32\wbem diretório. Caso contrário, você pode querer executar programas gerais de detecção de spyware. Se não for spyware, talvez seja outro serviço que está chamando. Eu sei que tenho alguns gadgets rápidos em execução no meu computador e, ironicamente, o gadget do monitor de desempenho às vezes faz com que o meu CPU aumente um pouco. Além disso, poderia ser outro serviço que pressiona esse gás de vez em quando. Por exemplo, o bloatware da HP, Dell, etc.

Além disso, a outra resposta do TomWij parece muito boa para resolver o problema!


1



Uma forma alternativa mais genérica de verificar isso é usar Process Explorer da Sysinternals e, em seguida, ativar o Verify Signatures opção; então, se diz (Verified) X no Verified Signer coluna então é verificado pela Microsoft e o executável faz parte do produto / empresa X, nesse caso Microsoft Windows. - Tom Wijsman
Tenho certeza de que não há vírus / malware. Além disso, o WmiPrvSE está presente em C:\Windows\system32\wbem e coluna verificada indica que o arquivo está verificado. @TomWij - Sathya♦
@ Sathya Eu provavelmente diria que é o bloatware então, especialmente porque você comentou que você tinha um HP "w / the HP bundled crap". Tente usar o msconfig e desabilitar todos os serviços e programas da HP na inicialização e veja se isso ajuda. - Duall
ponto, eu pretendo reinstalar o Win 7 depois de corrigir o meu SSD, pensei que esta será uma questão interessante - mais ainda para aprender a depurar - Sathya♦