91 votes

Pourquoi l'hôte du fournisseur WMI (WmiPrvSE.exe) fait-il grimper mon processeur en flèche ?

Je laisse généralement mon ordinateur portable allumé 24 heures sur 24, 7 jours sur 7, et à la fin de la journée, c'est vraiment ennuyeux d'avoir les cuisses brûlées à cause de la surchauffe.

La surchauffe semble être due à l'hôte fournisseur WMI (WmiPrvSE.exe) qui fait grimper l'utilisation du processeur à 25 % toutes les quelques minutes. Pourquoi cela se produit-il ?

J'ai un HP Envy 14 (avec la merde fournie par HP) fonctionnant sous Windows 7 Home Premium.

(Note : Basé sur @nhinkle's observations passées Il semble que HP Wireless Manager soit le coupable, y a-t-il un moyen de le confirmer ?)

Cette question était un Question de la semaine pour les super utilisateurs .
Lire le 28 février 2011 entrée de blog pour plus de détails ou soumettez votre propre La question de la semaine.

2 votes

Eh bien, la meilleure façon de le confirmer serait de le désactiver et de voir si cela continue ;)

0 votes

@neuro heh, c'est vrai mais j'aimerais voir si l'un des Super Utilisateurs a une approche différente :)

2 votes

"C'est vraiment ennuyeux d'avoir les cuisses qui brûlent" --> Les cuisses ne sont rien, regarde ça .

111voto

Christian Points 1102

Comme Sathya l'a mentionné dans sa question, j'ai eu une expérience antérieure de ce problème sur mon ordinateur portable HP similaire, et j'ai maintenant confirmé en utilisant la méthode scientifique que les pics de CPU sur les ordinateurs portables HP sont causés par le HP Wireless Assistant. Ou, HP CPU Assassin, comme je pourrais commencer à l'appeler.

Aperçu de l'expérience

  • Question : Qu'est-ce qui fait que le processeur des ordinateurs portables HP connaît des pics à intervalles fréquents, en particulier le processeur de l'ordinateur. WmiPrvSE.exe processus ?

  • Hypothèse : L'assistant sans fil HP (HPWA) est à l'origine du problème.

  • Méthode :

    1. Voyez si le problème commence à se produire lorsque le HPWA est installé.
    2. Regardez si le CPU arrête de monter en flèche et si le WmiPrvSE.exe cesse d'utiliser >20% du CPU lorsque le processus HPWA est suspendu.
    3. Regardez si le CPU recommence à monter en flèche lorsque le processus HPWA est réactivé.
    4. Répétez les étapes 2 et 3 pour plusieurs essais afin de garantir la précision des résultats.
       
  • Résultats : HPWA provoque une utilisation extrême du CPU

  • Conclusion : Vous devriez désinstaller HPWA car il ne sert à rien.

Informations générales

Lorsque j'ai acheté mon ordinateur portable HP Pavillion dm4t, j'ai remarqué que le processeur atteignait fréquemment 50 % d'utilisation, presque toutes les deux secondes. Cela épuisait l'autonomie de la batterie et chauffait l'ordinateur portable ; les mêmes symptômes que ceux rencontrés par Sathya. En regardant simplement le moniteur de ressources de Windows 7, j'ai pu voir que le processus WmiPrvSE.exe était en faute.

cpu nom nom

Une rapide recherche sur Google a confirmé mon hypothèse selon laquelle il s'agissait de la Instrumentation de gestion Windows (WMI). En bref, WMI peut être utilisé pour demander des informations sur le système, comme l'utilisation du processeur, les processus en cours, les personnes connectées et toutes sortes d'autres informations. Le processus hôte WMI exécute les requêtes WMI pour tout autre processus qui en fait, donc WmiPrvSE.exe n'était pas lui-même le coupable, il était simplement un intermédiaire.

Afin de trouver le processus spécifique qui causait ce problème, j'ai utilisé Systinternals Process Explorer . J'ai trouvé quelle instance du WmiPrvSE.exe utilisait une grande quantité de CPU, et a cliqué dessus pour ouvrir des informations détaillées.

process explorer

Malheureusement, je n'ai trouvé aucun moyen de savoir quel processus effectuait toutes les requêtes, mais comme j'avais isolé la source des pics de CPU et que je savais qu'il s'agissait d'un service, j'ai consulté le gestionnaire de services pour voir quels services dépendaient de WMI, en pensant que cela pourrait me conduire à un autre indice.

services nom nom

Je me suis dit que ce n'était pas un service Windows intégré qui causait le problème, donc en éliminant ceux-là, j'ai décidé de descendre dans la liste et d'essayer de désactiver chaque service, pour voir si le problème persistait. En haut de la liste se trouvait le service HP Wireless Assistant. Je suis retourné dans le menu des services et j'ai désactivé ce service. En regardant de nouveau dans le gestionnaire de tâches, j'ai vu que l'utilisation du CPU était presque nulle. J'ai réactivé le service HPWA. L'utilisation du CPU est remontée en flèche. J'avais maintenant assez de données pour élaborer ma théorie. J'ai désinstallé le service HPWA et je n'ai plus jamais eu ce problème.

Vérification de l'hypothèse

Plusieurs mois plus tard, Sathya pose cette question. J'ai décidé de prouver une fois pour toutes que c'était la faute de l'HPWA. J'ai réinstallé le HP Wireless Assistant, que je n'avais pas installé depuis des mois. Tout de suite, l'utilisation du processeur a augmenté. J'ai ensuite procédé à l'expérience décrite ci-dessus.

D'abord, j'ai isolé le processus responsable du service HPWA dans le Resource Monitor. HPWA_Service.exe y HPWA_Main.exe sont les deux. Voici à quoi ressemblait l'utilisation du CPU avec ces deux traitements en cours :

task manager with hpwa running

Ensuite, j'ai suspendu les deux processus. L'utilisation du CPU a immédiatement baissé ; voici à quoi cela ressemblait après quelques instants, le temps que l'utilisation précédente du CPU sur le graphique s'efface :

task manager without hpwa running

J'ai réactivé les processus pour voir si l'utilisation allait remonter. C'est le cas :

task manager just enabled hpwa
Le premier pic lorsque j'active HPWA

task manager after enabling hpwa
Peu de temps après avoir activé HPWA

En suspendant à nouveau les processus, l'utilisation du processeur a diminué :

lower cpu usage after disabling hpwa

J'ai testé ceci pour une autre itération, et au troisième essai, la même chose s'est produite à nouveau. J'ai considéré que c'était une preuve suffisante pour montrer que l'assistant sans fil HP était à l'origine du problème. J'ai donc désactivé le service et je vais maintenant le désinstaller.

Tout ce que le HPWA semble faire, c'est d'informer l'utilisateur lorsque son réseau sans fil est activé ou désactivé, et d'engloutir le CPU. Il n'y a rien que vous puissiez faire avec lui que vous ne puissiez pas faire avec les outils de gestion sans fil intégrés, donc je vous conseille de supprimer ce logiciel si vous l'avez installé.


Note : Au moins une personne a signalé que la désinstallation de HPWA a provoqué l'arrêt du fonctionnement de leur commutateur sans fil sur le clavier. Sur mon ordinateur portable, il a continué à fonctionner correctement après la désinstallation de HPWA, mais si le vôtre ne fonctionne plus, vous pouvez toujours désactiver la carte sans fil depuis Windows. Appuyez sur <img src="https://i.stack.imgur.com/aPOi2.png" alt="Winkey"> + x pour ouvrir le Centre de mobilité de Windows, puis cliquez sur le bouton Turn Wireless Off bouton.

windows mobility center


Selon une discussion sur les forums d'assistance HP, le problème a été corrigé dans les versions plus récentes de l'assistant sans fil HP. Si votre ordinateur portable a besoin de HPWA pour utiliser le bouton wifi on/off, vous pouvez télécharger la dernière version sur le site des pilotes HP, et vous n'aurez probablement plus ce problème. Néanmoins, si vous n'en avez pas besoin pour le bouton wifi on/off, il ne semble toujours pas y avoir de valeur ajoutée à avoir ce logiciel installé.

38voto

Tamara Wijsman Points 56163

Dépannage

  1. Télécharger ProcDump de Microsoft Sysinternals.

  2. Laissez-le se vider une fois que WmiPrvSE.EXE atteint 25% pendant 1 seconde :

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

    Cela créera un dump dans votre dossier utilisateur.

    N'hésitez pas à répéter cette opération 1 à 2 fois de plus afin d'avoir plus de vidanges et d'être certain que la cause est la vidange et non un autre événement plus normal.

  3. Analysez votre/vos décharge(s) en ligne et, éventuellement, le partager sur SpeedyShare .

    Alternative : WinDBG pourrait être utilisé avec la commande !analyze -v assurez-vous de symboles fixes .

  4. La trace de la pile qui s'affiche doit inclure la procédure qui provoque ce problème.

Googlez peut-être quelques-unes des procédures les plus élevées de la pile pour avoir une meilleure idée de ce qu'elles font.
S'ils ne vous aident pas, vous aurez peut-être besoin d'une analyse plus poussée. Voir ma prochaine section :


  1. Téléchargez l'installation à partir de Outils d'analyse des performances de Windows pour votre version de Windows.

  2. Installez le logiciel sur votre système.

  3. Ouvrez une invite de commande en tant qu'administrateur et copier-coller la commande suivante :

    xperf -start perf!GeneralProfiles.InBuffer -stackwalk profile && timeout -1 && xperf -stop perf!GeneralProfiles.InBuffer %HOMEPATH%\myTrace.etl
  4. Appuyez sur ENTER une fois pour lancer la commande, maintenant vous devrez attendre que le pic se produise.

  5. Juste après votre pic vous allez à la console et appuyez sur ENTER .

  6. Après un certain temps, un fichier journal myTrace.etl sera produit dans votre dossier utilisateur.

  7. Exécutez la commande suivante pour afficher le fichier et l'analyser ( WinDBG / Symboles nécessaire) :

    xperf %HOMEPATH%\myTrace.etl

Si vous voulez que j'y regarde de plus près :

  1. Compressez monTrace.etl de votre dossier utilisateur dans un fichier zip.
  2. Partagez le fichier zip compressé sur SpeedyShare .
  3. Partagez le lien ici, je ferai une tentative pour trouver et vous montrer la cause de votre problème.

Comme WmiPrvSE.EXE est un hôte permettant d'exécuter des requêtes WMI contre le magasin CAPI, il se peut que vous ne puissiez pas trouver la cause, même avec XPerf, pour les raisons suivantes IPC Une autre solution que je viens de trouver serait d'activer l'enregistrement WMI et de vérifier les enregistrements comme décrit ci-dessous aquí le ClientProcessId serait le PID du processus qui a effectué la requête WMI. Ce PID peut être retracé jusqu'au processus en ajoutant une colonne PID au Gestionnaire des tâches ou à l'application Explorateur de processus ou avec tasklist /FI "PID eq X" où X est le PID que vous avez trouvé...


Analyse de Décharge 1 : Les lignes 94 à 115 indiquent un Appel de procédure à distance .
Analyse de Décharge 2 : Les lignes 84 à 105 indiquent un Appel de procédure à distance .

Dans le noyau, un nouveau fil est lancé. pour gérer un stub d'appel de procédure à distance Il s'agit essentiellement d'une demande de requête que le fournisseur WMI exécutera et à laquelle il répondra. Il en résulte une forte activité du CPU en raison de la lecture du registre et/ou des informations sur les performances.

Comme un dump est une capture d'un seul instant, vous ne pourrez pas voir quel processus a exécuté le RPC.
Vous avez donc besoin d'un programme qui trace, comme XPerf, pour voir le fil d'exécution précédent qui effectue le RPC.

Ou, si vous activer les informations d'état RPC vous pouvez utiliser rpcdbg pour voir qui a lancé l'appel.

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'exemple ci-dessus définit un breakpoint sur le RPC, de sorte que vous obtenez de voir qui l'exécute dans la deuxième ligne de la pile. Mais bon, il est peu probable que le fait de définir un breakpoint sur le premier appel (veuillez noter qu'il s'agit de débogage en direct) vous aidera à voir qui appelle le fournisseur WMI à chaque fois...

Il y a beaucoup plus d'informations dans cet article sur Informations sur l'état du CPR cela pourrait aider, mais ce n'est pas pour les timorés comme nous de passer par tout cela quand nous pourrions simplement utiliser XPerf à la place :-)


Comme nous connaissons maintenant le fonctionnement interne du RPC, nous pourrions tout aussi bien utiliser la méthode suivante Moniteur API :

  1. Téléchargez, installez et démarrez API Monitor. ( <strong>deux fois </strong>si vous avez 64 bits : une fois x86, une fois x64)

  2. Aller à Fichier --> Exécuter en tant qu'administrateur

  3. Définissez le Filtre de capture de l'API à la Rpcrt4.dll module.

    enter image description here

  4. De la même manière que pour le breakpoint, nous voulons savoir qui appelle la RpcServerUseProtSeq fonctions :

    enter image description here

  5. Crochet chacun Processus d'exécution à l'exception de ceux dont le PID est faible (pour éviter les collisions).
    Idéal, vous ne voulez pas accrocher dwm.exe / winlogon.exe ou moins.
    Vous pouvez également essayer des processus uniques et les décrocher plus tard de l'application Processus d'accrochage fenêtre...

    Bien que... J'ai essayé et je pourrais accrocher n'importe quel processus.

  6. Si tout se passe bien, le Processus d'accrochage qui effectue l'appel RPC contiendra des threads.
    Et en cliquant sur ces fils, vous devriez voir une série d'appels.
    Si c'est le cas, vous avez trouvé le processus à l'origine du problème !

Solution

Il est important de maintenir votre ordinateur à jour, en installant HPWA 4.0.10.0 résout ce problème ! ;-)

14voto

harrymc Points 394411

L'article du blog de Microsoft WMIprvse est-il un vrai méchant ? montre comment trouver le processus responsable de l'utilisation du CPU par WmiPrvSE.exe.

Cette méthode utilise l'option "Show Analytic and Debug Logs" de l'Observateur d'événements pour suivre toute l'activité WMI et obtenir ainsi l'identifiant du processus coupable.

7voto

DannyT Points 213

J'ajoute juste ceci pour tous ceux qui sont dans le même bateau, cette page est partout sur Google. J'ai eu le même problème avec WmiProvderHost qui a fait grimper le CPU jusqu'à 50% et a vidé la batterie sur mon Lenovo Yoga2 Pro sous Windows 8.1.

Après avoir suivi certains des excellents conseils d'investigation ci-dessus, j'ai découvert que le problème pour moi était en fait le suivant Studio GoPro (logiciel de montage vidéo gratuit fourni avec les caméras GoPro). Il installe un service de surveillance qui attend que vous connectiez votre caméra et pour moi c'était le coupable.

4voto

magicandre1981 Points 94338

Pour le déboguer, utilisez xperf à partir de l'onglet Kit d'outils de performance Windows et exécutez ce fichier 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

Ouvrez le fichier WMItracing.etl généré dans WPA.exe et faites glisser le graphique "Generic Events" du côté gauche vers le volet d'analyse.

enter image description here

Maintenant, filtrez pour Microsoft-Windows-WMI-Activity uniquement, et recherchez les opérations WMI et le ClientProcessId.

Dans mon exemple, ce CLientProcessId appartient à un outil appelé Serveur Veeam ONE Monitor . En l'arrêtant, le problème d'utilisation du CPU a été résolu. .

Un deuxième exemple est présenté ici :

enter image description here

Vous voyez ici des appels récurrents d'un processus avec le PID de 1924 qui appartient au service Intel ProSet Monitoring.

Ici, l'utilisation du CPU est également indiquée dans les callstacks d'échantillonnage du CPU :

enter image description here

Ainsi, l'outil Intel effectue trop souvent des requêtes de notification WMI, ce qui cause les problèmes. En l'arrêtant, on a résolu le problème.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X