¿Por qué WMI Provider Host (WmiPrvSE.exe) sigue aumentando mi CPU?

88

Por lo general, mantengo mi computadora portátil encendida las 24 horas del día, los 7 días de la semana, y al final del día es realmente molesto quemarme los muslos porque se sobrecalienta.

El sobrecalentamiento parece ser el resultado de WMI Provider Host (WmiPrvSE.exe) que aumenta la utilización de la CPU al 25% cada pocos minutos. ¿Por qué pasó esto?

Tengo un HP Envy 14 (con la basura incluida de HP) ejecutándose en Windows 7 Home Premium.

(Nota: según las observaciones anteriores de @ nhinkle , parece que HP Wireless Manager podría ser el culpable, ¿hay alguna forma de confirmar esto?)

Esta pregunta fue una pregunta de superusuario de la semana .
Lea la entrada del blog del 28 de febrero de 2011 para obtener más detalles o envíe su propia Pregunta de la semana.

Sathyajith Bhat
fuente
2
Bueno, la mejor manera de confirmarlo sería desactivarlo y ver si continúa;)
Matthieu Cartier
@neuro heh, cierto, pero me gustaría ver si alguno de los
Superusuarios
2
"Es realmente molesto que me quemen los muslos" -> Los muslos no son nada, mira esto .
Tamara Wijsman
1
¿Tienes algún gadget en el escritorio? p.ej. monitor de espacio en disco
Kez
1
@kez Nope - sin gadgets - un escritorio limpio.
Sathyajith Bhat

Respuestas:

110

Como mencionó Sathya en su pregunta, he tenido experiencia previa con este problema en mi computadora portátil HP similar, y ahora he confirmado usando el método científico que los picos de CPU en las computadoras portátiles HP son causados ​​por el Asistente inalámbrico HP. O, HP CPU Assassin, como puedo comenzar a llamarlo.

Descripción general del experimento

  • Pregunta : ¿Qué está causando que la CPU de la computadora portátil HP se dispare a intervalos frecuentes, específicamente el WmiPrvSE.exe proceso?

  • Hipótesis : el Asistente inalámbrico HP (HPWA) está causando el problema

  • Método :

    1. Vea si el problema comienza a ocurrir cuando se instala HPWA.
    2. Vea si la CPU deja de aumentar y el WmiPrvSE.exeproceso deja de usar> 20% de CPU cuando se suspende el proceso HPWA.
    3. Vea si la CPU comienza a aumentar nuevamente cuando el proceso HPWA se vuelve a habilitar
    4. Repita los pasos 2 y 3 para múltiples ensayos para garantizar la precisión de los resultados.
       
  • Resultados : HPWA está causando un uso extremo de la CPU

  • Conclusión : debe desinstalar HPWA ya que no hace nada útil

Información de antecedentes

Cuando obtuve mi computadora portátil HP Pavillion dm4t, noté que la CPU con frecuencia aumentaba hasta un 50% de uso, casi cada segundo. Esto estaba agotando la duración de la batería y calentando la computadora portátil; los mismos síntomas que Sathya ha experimentado. Con solo mirar el Monitor de recursos en Windows 7, pude ver que el proceso WmiPrvSE.exetuvo la culpa.

cpu nom nom

Una búsqueda rápida en Google confirmó mi suposición de que este era el proceso de host del Instrumental de administración de Windows (WMI). En resumen, WMI se puede utilizar para consultar información del sistema, como el uso del procesador, los procesos en ejecución, quién está conectado y todo tipo de otra información. El proceso de host WMI ejecuta consultas WMI para cualquier otro proceso que las haga, por WmiPrvSE.exelo que no fue en sí mismo el culpable, simplemente fue un intermediario.

Para buscar qué proceso específico estaba causando este problema, utilicé Systinternals Process Explorer . Encontré qué instancia del WmiPrvSE.exeproceso estaba usando una gran cantidad de CPU, e hice clic en ella para abrir información detallada.

explorador de procesos

Desafortunadamente, no pude encontrar ninguna manera de averiguar qué proceso estaba haciendo todas las consultas, pero como había aislado esto como la fuente de los picos de CPU y sabía que era un servicio, fui al gerente de servicios para ver qué Los servicios dependían de WMI, pensando que eso podría llevarme a otra pista.

servicios nom nom

Pensé que no sería un servicio integrado de Windows que causara el problema, así que al eliminarlos, decidí trabajar en la lista e intentar deshabilitar cada servicio, y ver si el problema persistía. Justo en la parte superior de la lista estaba el Servicio de Asistente Inalámbrico HP. Regresé al menú de servicios e inhabilité ese servicio. Mirando hacia atrás en el administrador de tareas, vi que el uso de la CPU se había reducido a casi nada. I el servicio HPWA de nuevo. Uso de CPU disparado de nuevo. Ahora tenía suficientes datos para formar mi teoría. Desinstalé el servicio HPWA y nunca volví a tener el problema.

Verificando la Hipótesis

Varios meses después, Sathya hace esta pregunta. Decidí demostrar de una vez por todas que esto era culpa de HPWA. Reinstalé el Asistente inalámbrico HP, que no había instalado en meses. De inmediato, el uso del procesador se disparó. Luego realicé el experimento descrito anteriormente.

Primero, aislé el proceso responsable del servicio HPWA en el Monitor de recursos. HPWA_Service.exey HPWA_Main.exeson los dos. Así es como se veía el uso de la CPU con ambas ejecuciones procesadas:

administrador de tareas con hpwa corriendo

Entonces, suspendí ambos procesos. El uso de la CPU se redujo de inmediato; Esto es lo que parecía después de unos momentos para que se borrara el uso anterior de la CPU en el gráfico:

administrador de tareas sin ejecutar hpwa

Volví a habilitar los procesos para ver si el uso volvería a funcionar. Lo hizo:

administrador de tareas acaba de habilitar hpwa
El primer pico cuando habilito HPWA

administrador de tareas después de habilitar hpwa
Poco después de habilitar HPWA

La suspensión de los procesos nuevamente dio como resultado que el uso de la CPU se redujera:

menor uso de la CPU después de deshabilitar hpwa

Probé esto para una iteración más, y en la tercera prueba, sucedió exactamente lo mismo. Consideré esta evidencia suficiente para demostrar que el Asistente inalámbrico HP estaba causando el problema, y ​​posteriormente deshabilité el servicio, y ahora lo desinstalaré.

Todo lo que HPWA parece hacer es informar al usuario cuando su conexión inalámbrica está encendida o apagada, y engullir la CPU. No hay nada que pueda hacer con él que no pueda hacer con las herramientas de administración inalámbrica incorporadas, por lo que le aconsejaría que si tiene este software instalado, lo elimine.


Nota: Al menos una persona ha informado que la desinstalación de HPWA provocó que su interruptor inalámbrico en el teclado dejara de funcionar. En mi computadora portátil, siguió funcionando bien después de desinstalar HPWA, pero en caso de que la suya deje de funcionar, siempre puede desactivar la tarjeta inalámbrica desde Windows. Presione Winkey+ xpara abrir el Centro de movilidad de Windows, luego haga clic en el Turn Wireless Offbotón.

centro de movilidad de windows


Según una discusión sobre los foros de soporte de HP, el problema se ha solucionado en versiones más recientes de HP Wireless Assistant. Si su computadora portátil necesita HPWA para usar el botón de encendido / apagado wifi, puede descargar la última versión del sitio web de controladores de HP, y probablemente ya no tendrá este problema. Sin embargo, si no lo necesita para el botón de encendido / apagado wifi, parece que no hay ningún valor agregado al tener este software instalado.

nhinkle
fuente
+1: respuesta muy agradable e integral. Este es el estado de mi CPU - con el HP CPU Assassin - i.imgur.com/dMwaJ.png
Sathyajith Bhat
Y esto es posterior a la suspensión de los servicios i.imgur.com/dn2Em.png
Sathyajith Bhat
18
Whoa! ¡Esta es una publicación realmente increíble ! Uno de los mensajes más documentados y screenshotted he nunca visto! +1 !!
studiohack
2
+1, Impresionante trabajo de detective y publicación rápida con capturas de pantalla, que usa el software de asistente inalámbrico en Windows, es lo primero que elimino en una nueva PC.
Moab
1
Para mí, fue el servicio Dell Data Vault el que causó el pico de CPU en el proveedor WMI. También es una dependencia como se menciona en esta respuesta. Encontré esto con el método de inicio limpio de Windows .
Cerveser
38

Solución de problemas

  1. Descargue ProcDump desde Microsoft Sysinternals.

  2. Deje que se descargue una vez que WmiPrvSE.EXE llegue al 25% durante 1 segundo:

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

    Esto creará un volcado en su carpeta de usuario.

    Siéntase libre de repetir esto 1 - 2 veces más para que tenga más descargas y pueda estar seguro de que la causa se descarta y no otro evento más normal.

  3. Analice sus volcados en línea y, opcionalmente, compártalos en SpeedyShare .

    Alternativa : WinDBG podría usarse con el comando !analyze -v, asegúrese de establecer símbolos .

  4. El seguimiento de la pila que se muestra debe incluir el procedimiento que causa esto.

Quizás busque en Google algunos de los mejores procedimientos de la pila para tener una mejor idea de lo que hacen.
Si no te ayudan, es posible que necesites un análisis más avanzado. Vea mi próxima sección:


  1. Descargue la configuración de Windows Performance Analysis Tools para su versión de Windows.
  2. Instale el software en su sistema.
  3. Abra un símbolo del sistema como administrador y copie y pegue el siguiente comando:

    xperf -start perf!GeneralProfiles.InBuffer -stackwalk profile && timeout -1 && xperf -stop perf!GeneralProfiles.InBuffer %HOMEPATH%\myTrace.etl
    
  4. Presione ENTER una vez para iniciar el comando, ahora tendrá que esperar hasta que se haya producido el pico.

  5. Justo después de tu pico vas a la consola y presionas ENTER.
  6. Después de esperar un tiempo, se generará un archivo de registro myTrace.etl en su carpeta de usuario.
  7. Ejecute el siguiente comando para mostrar el archivo y analizarlo (se requieren WinDBG / Símbolos ):

    xperf %HOMEPATH%\myTrace.etl
    

Si quieres que lo investigue:

  1. Comprima myTrace.etl de su carpeta de usuario en un archivo zip.
  2. Comparta el archivo comprimido comprimido en SpeedyShare .
  3. Comparta el enlace aquí, intentaré encontrar y mostrarle la causa de su problema.

Como WmiPrvSE.EXE es un host para ejecutar consultas WMI en el almacén CAPI, es posible que no pueda encontrar la causa incluso con XPerf debido a IPC , otra solución que acabo de encontrar sería habilitar el registro WMI y verificar los registros como se describe aquí , ClientProcessId sería el PID del proceso que realizó la consulta WMI. Este PID puede rastrearse hasta el proceso agregando una columna PID al Administrador de tareas o al Explorador de procesos , o tasklist /FI "PID eq X"donde X es el PID que encontró ...


Análisis del volcado 1 : las líneas 94-115 indican una llamada a procedimiento remoto .
Análisis del volcado 2 : las líneas 84-105 indican una llamada a procedimiento remoto .

En el Kernel, se inicia un nuevo subproceso para manejar un código auxiliar de llamada a procedimiento remoto , que en esencia es una solicitud de consulta que el proveedor de WMI ejecutará y responderá. Esto da como resultado una alta actividad de la CPU debido a la lectura de la información del registro y / o rendimiento.

Como un volcado es una captura de un solo momento, no podrá ver qué proceso realizó el RPC.
Por lo tanto, necesita un programa que rastree como XPerf para ver el hilo anterior que estaría haciendo el RPC.

O, si habilita la información de estado de RPC , puede usar rpcdbg para ver quién inició la llamada.

Ejemplo:

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]

El ejemplo anterior establece un punto de interrupción en el RPC, para que pueda ver quién lo ejecuta en la segunda línea de la pila. Pero bueno, es poco probable que establecer un punto de interrupción en la primera llamada (tenga en cuenta que se trata de depuración en vivo) lo ayudará a ver quién llama al proveedor de WMI cada vez ...

Hay mucha más información en ese artículo sobre la información de estado de RPC que podría ayudar, pero no es para los débiles como nosotros que pasamos por todo eso cuando podríamos usar XPerf. :-)


Como ahora sabemos sobre el funcionamiento interno de cómo funciona el RPC, también podríamos usar API Monitor :

  1. Descargue, instale e inicie API Monitor. ( dos veces si tiene 64 bits: una vez x86, una vez x64)
  2. Vaya a Archivo -> Ejecutar como administrador
  3. Establezca el filtro de captura API en el Rpcrt4.dllmódulo.

    ingrese la descripción de la imagen aquí

  4. Similar al punto de interrupción, queremos saber quién llama a las RpcServerUseProtSeqfunciones:

    ingrese la descripción de la imagen aquí

  5. Enganche cada proceso en ejecución, excepto aquellos con un PID bajo (para evitar bloqueos).
    Ideal, no quieres enganchar dwm.exe/ winlogon.exeo bajar.
    También puede probar procesos individuales y desengancharlos más tarde desde la ventana Procesos enganchados ...

    Aunque ... Lo he intentado y podría conectarme con cualquier proceso.

  6. Si todo va bien, el proceso enganchado que realiza la llamada RPC contendrá hilos.
    Y al hacer clic en estos hilos, debería ver un montón de llamadas.
    Si lo hace, ¡ha encontrado el proceso que causa el problema!

Solución

Mantener su computadora actualizada es importante, ¡instalar HPWA 4.0.10.0 lo resuelve! ;-)

Tamara Wijsman
fuente
@TomWij - Análisis de volcado en línea 1 , 2 . Volcados en Dropbox . Además, conozco el PID. que puedo hacer con el
Sathyajith Bhat
1
muy buena respuesta, @TomWiji, la documentación realmente ayuda ...
studiohack
Acabo de instalar HPWA, no parece funcionar. Podría necesitar un reinicio. Si ocurre lo mismo en mi PC, intentaré actualizar la publicación y mostrarle cómo la mayoría de los métodos de solución de problemas podrían mostrarle que ocurre el problema.
Tamara Wijsman
2
Me gustó la respuesta de nhinkles un poco mejor, pero esto también es genial y útil, pero sobre todo, una herramienta como el monitor API es algo que he estado empezando a perder últimamente, así que gracias y +1 por el aviso.
Tobias Plutat
2
@ Tom, no tenía esa impresión y ciertamente no quería implicarlo. Sin embargo , sentí la necesidad de reconocer dos excelentes respuestas al problema con un poco más de verbosidad y diferenciación de lo que pude con los votos positivos solo. :)
Tobias Plutat
13

La entrada del blog de Microsoft ¿Es WMIprvse un verdadero villano? muestra cómo encontrar qué proceso es responsable de la CPU que está utilizando WmiPrvSE.exe.

El método utiliza la opción del visor de eventos "Mostrar registros analíticos y de depuración" para rastrear toda la actividad de WMI, obteniendo así la identificación del proceso del proceso culpable.

harrymc
fuente
Sí, dije eso algunos días antes y también aparece en mi publicación entre XPerf y Dump Analysis, pero hasta ahora no ha revisado el PID, XPerf o API Monitor, así que tendré que esperarlo antes de aplicar más análisis.
Tamara Wijsman
7

Solo agregando esto para cualquier otra persona en el mismo barco, esta página está en todo Google. Tuve el mismo problema con la CPU de WmiProvderHost hasta un 50% y agotando la batería de mi Lenovo Yoga2 Pro en Windows 8.1.

Siguiendo algunos de los excelentes consejos de investigación anteriores, descubrí que el problema para mí era en realidad GoPro Studio (software de edición de video gratuito que viene con cámaras GoPro). Instala un servicio de monitoreo que espera a que conecte su cámara y para mí este fue el culpable.

DannyT
fuente
3
Windows 8.1, después de cerrar el programa residente de GoPro, mi uso de CPU host del proveedor de WMI bajó del 40% al 8%
user63227
Windows 8.1, también experimenta un alto uso de CPU gracias al software GoPro. Lo cerró de la bandeja del sistema y vuelve a la normalidad (y ahora está desactivado al inicio).
Robin
4

Para depurarlo, use xperf del kit de herramientas de rendimiento de Windows y ejecute este archivo 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 el archivo WMItracing.etl generado en WPA.exe y arrastre y suelte el gráfico "Eventos genéricos" del lado izquierdo al panel de análisis.

ingrese la descripción de la imagen aquí

Ahora filtre solo a los eventos de Microsoft-Windows-WMI-Activity y busque las operaciones de WMI y el ClientProcessId.

En mi ejemplo, este CLientProcessId pertenece a una herramienta llamada Veeam ONE Monitor Server . Deteniéndolo, solucionó el problema de uso de la CPU .

Y el segundo ejemplo se muestra aquí:

ingrese la descripción de la imagen aquí

¿Ve llamadas recurrentes de un Proceso con PID de 1924 que pertenece al servicio Intel ProSet Monitoring?

Aquí el uso de la CPU también se muestra en las pilas de llamadas de muestreo de la CPU:

ingrese la descripción de la imagen aquí

Entonces, la herramienta Intel hace consultas de notificación WMI con demasiada frecuencia y esto causa los problemas. Deteniéndolo, solucionó el problema.

magicandre1981
fuente
1

¿Has intentado ver si es un virus? A algunos virus realmente les gusta desfilar como servicios de Windows como ese. Asegúrese de que el WmiPrvSE.exeproceso esté ubicado en el c:\windows\system32\wbemdirectorio. De lo contrario, es posible que desee ejecutar programas generales de detección de spyware. Si no se trata de software espía, es posible que otro servicio lo llame. Sé que tengo algunos dispositivos rápidos ejecutándose en mi computadora, e irónicamente, el dispositivo del monitor de rendimiento a veces hace que mi CPU aumente un poco. Además, podría ser otro servicio que presiona ese gas de vez en cuando. Por ejemplo, bloatware de HP, Dell, etc.

Aparte de eso, la otra respuesta de TomWij parece bastante buena para solucionarlo.

Duall
fuente
1
Una forma alternativa más genérica de verificar esto es usar Process Explorer de Sysinternals y luego habilitar la Verify Signaturesopción; entonces, si dice (Verified) Xen la Verified Signercolumna, entonces Microsoft lo verifica y el ejecutable es parte del producto / compañía X, en este caso Microsoft Windows.
Tamara Wijsman
Estoy bastante seguro de que no hay virus / malware. Además, WmiPrvSE está presente C:\Windows\system32\wbemy la columna verificada indica que el archivo está verificado. @TomWij
Sathyajith Bhat
@ Sathya Probablemente diría que es el bloatware entonces, especialmente porque usted comentó que tenía un HP "con la basura incluida de HP". Intente usar msconfig y deshabilite todos los servicios y programas de HP en el inicio y vea si eso ayuda.
Duall
punto, tienen la intención de volver a instalar Windows 7 una vez que arreglar mi SSD, considera que va a ser una interesante pregunta - más aún que aprender cómo depurar
Sathyajith Bhat