2011-02-02 12:36:08 +0000 2011-02-02 12:36:08 +0000
88
88

なぜWMI Provider Host (WmiPrvSE.exe)はCPUを急上昇させ続けるのでしょうか?

私は一般的に24時間365日ノートパソコンを使用していますが、一日の終わりにはオーバーヒートで太ももが焼けてしまうのは本当に迷惑なことです。なぜこのようなことが起こるのでしょうか?

私はHP Envy 14(HP付属のガラクタ)をWindows 7 Home Premiumで動作させています。

(注: @nhinkleさんの 過去の観察 によると、HP Wireless Managerが犯人のようですが、これを確認する方法はありますか? )

この質問は、* 今週のスーパーユーザー質問 でした。 詳細は、2011年2月28日の* ブログエントリー をお読みいただくか、* 独自の **質問を投稿してください。

回答 (6)

110
110
110
2011-02-05 23:05:12 +0000

Sathyaさんが質問で述べたように、私は私の類似のHPのラップトップでこの問題で以前に経験したことがあり、私は今、HPのラップトップのCPUスパイクがHP Wireless Assistantによって引き起こされることを科学的な方法を使用して確認しました。または、私はそれを呼び始めるかもしれないように、HPのCPUアサシン、。

実験の概要

  • Question . 何がHPのラップトップのCPUが頻繁な間隔でスパイクする原因となっているのか、具体的には_ WmiPrvSE.exe process? HP Wireless Assistant (HPWA)が問題を引き起こしています

  • 方法 :

  • 結果 . HPWAは極端なCPU使用率を引き起こしています_

  • 結論 . それは有用な何もしないので、あなたはHPWAをアンインストールする必要があります

背景情報

私は私のHP Pavillion dm4tのラップトップを得たとき、私はCPUが頻繁にほぼ毎秒、50%の使用率と同じくらいにスパイクすることに気づいた。これは、バッテリ寿命を消耗していた, とラップトップを加熱する; サティアが経験しているようにはるかに同じ症状. Windows 7のリソースモニタを見るだけで、私はプロセスWmiPrvSE.exeが故障していることを確認することができました。要するに、WMIは、プロセッサの使用状況、実行中のプロセス、誰がログオンしているか、その他のあらゆる種類の情報などのシステム情報を照会するために使用することができます。WMIホストプロセスは、WMIクエリを実行する他のプロセスのためにWMIクエリを実行するので、

この問題の原因となっている特定のプロセスを探し出すために、[ Systinternals Process Explorer ](http://msdn.microsoft.com/en-us/library/aa394582(v=vs.85)を使用しました。しかし、CPUスパイクの原因がサービスであることがわかったので、サービスマネージャでWMIに依存しているサービスを確認し、別のヒントが得られるかもしれないと考えました。

私はそれが問題を引き起こしているビルトインのWindowsサービスではないだろうと考えたので、それらを排除し、私はリストの下で作業し、各サービスを無効にしてみて、問題が持続するかどうかを見てみることにしました。リストの右上にあったのは、HPのワイヤレスアシスタントサービスでした。私はサービスメニューに戻って、そのサービスを無効にしました。タスクマネージャーに戻って見て, 私はCPUの使用率がほとんど何もなくなっていたことを見た. 私はHPWAサービスをオンに戻しました。CPU使用率は回復しました。これで、私は自分の理論を形成するのに十分なデータを持っていました。HPWA サービスをアンインストールしたところ、問題が発生することはありませんでした。私は、これがHPWAのせいであることをきっぱりと証明することにしました。私は数ヶ月間インストールしていなかったHP Wireless Assistantを再インストールしました。すぐに、プロセッサの使用量が急増しました。

まず、Resource MonitorでHPWAサービスの原因となっているプロセスを分離しました。ここにこれらの処理された両方の実行中のCPU使用率のように見えたものがあります:

それから、私は両方のプロセスを中断しました。CPU の使用法はすぐに行きました; ここにそれがグラフの前の CPU の使用法のためのしばらくの間の後でのように見えたものです:

私は使用法が戻るかどうか見るためにプロセスを再度可能にしました。それはそうでした:

HPWA

HPWA

HPWA

を有効にした少し後にプロセスを再び中断すると、CPU 使用率が下がることになりました:

私はこれをもう 1 つの反復のためにテストし、3 回目の試行では、同じ正確なことが再び起こりました。私は、HPのワイヤレスアシスタントが問題を引き起こしていたことを示すために、この十分な証拠を考慮し、その後、サービスを無効にし、今それをアンインストールします。内蔵の無線管理ツールでできないことは何もありませんので、このソフトウェアがインストールされている場合は、それを削除することをお勧めします。


注:少なくとも1人の人がHPWAをアンインストールすると、キーボードの無線スイッチが動作を停止する原因となったと報告しています。私のノートパソコンでは、HPWAをアンインストールしても問題なく動作していましたが、万が一動作しなくなってしまった場合は、Windows内部からワイヤレスカードを無効にすることができます。

+xを押してWindows Mobility Centerを開き、WmiPrvSE.exeボタンをクリックします。


HPサポートフォーラムのディスカッションによると、この問題はHP Wireless Assistantの最新バージョンで修正されています。あなたのラップトップは、オン/オフのwifiを使用するためにHPWAを必要とする場合 ボタンの場合は、HPのドライバサイトから最新版をダウンロードすれば、おそらくもうこの問題は起こらないでしょう。それにもかかわらず、wifiのオン/オフボタンに必要ないのであれば、このソフトをインストールしていても付加価値はないようです。

38
38
38
2011-02-02 13:11:14 +0000

トラブルシューティング

  1. Microsoft SysinternalsからProcDumpをダウンロードしてください。WmiPrvSE.EXEが1秒間25%に達したら、ダンプを取るようにします:

  2. ダンプを分析し、オンラインとオプションでSpeedyShareで共有します。

  3. 表示されるスタックトレースには、この原因となったプロシージャが含まれているはずです。私の次のセクションを参照してください:


  1. Windowsパフォーマンス分析ツール](http://cid-d8ad98ab9f8ec6ca.office.live.com/browse.aspx/.Public/XPerf)からセットアップをダウンロードしてください。お使いのシステムにソフトウェアをインストールします。管理者としてコマンドプロンプトを開き、次のコマンドをコピーして貼り付けます。コマンドを開始するには、ENTER onceを押して、今、あなたはスパイクが発生するまで待つ必要があります。**このコマンドを実行するには、コマンドを実行する前に、ENTERキーを押してください。しばらく待つと、ログファイルmyTrace.etlがユーザーフォルダに作成されます。 以下のコマンドを実行してファイルを表示し、解析してください。ユーザーフォルダからmyTrace.etlをzipファイルに圧縮します。
  2. 圧縮されたzipファイルをSpeedyShareで共有してください。ここでリンクを共有し、私はあなたの問題の原因を見つけ、あなたを表示する試みを行います。 EXEはCAPIストアに対してWMIクエリを実行するためのホストですが、 IPC のためにXPerfを使用しても原因を見つけることができないかもしれません。このPIDは、タスクマネージャまたは プロセスエクスプローラ にPIDカラムを追加するか、またはXが見つかったPIDであるtasklist /FI "PID eq X"を使用してプロセスに追跡することができます…

ダンプ1 の分析: 94~115行目は リモートプロシージャコール を示しています。

ダンプ2:行84-105はリモートプロシージャコールを示しています。

カーネルでは、新しいスレッドが開始されますリモートプロシージャコールのスタブを処理するために.aspx)が、本質的にはWMIプロバイダが実行して応答するクエリ要求です。この結果、レジストリやパフォーマンス情報を読み込んでいるため、CPUの使用率が高くなります。

ダンプは一瞬のキャプチャなので、どのプロセスがRPCを実行したのかはわかりません。

または、 RPC State Information を有効にすると、 rpcdbg を使って、誰が呼び出しを開始したかを見ることができます。

例:

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]

上の例では、RPC にブレークポイントを設定しているので、スタックの 2 行目で誰が実行したかを見ることができます。しかしまあ、最初の呼び出しにブレークポイントを設定しても(これはライブ デバッグであることに注意してください)、毎回誰が WMI プロバイダを呼び出しているのかがわかるようになるとは思えません…。

RPC の状態情報 ](http://technet.microsoft.com/en-us/library/cc738291(WS.10) の記事にはもっと多くの情報がありますが、私たちのような気弱な人のために XPerf を使うのはちょっと… :-)


RPC がどのように動作するかの内部の仕組みを知っているので、API Monitor を使うことができます:

  1. API Monitorをダウンロードしてインストールし、起動します。( **x86, x64の場合は2回)
  2. File** –> Run As Administrator
  3. API Capture Filter**をRpcrt4.dllモジュールに設定します。ブレイクポイントと同様に、誰がRpcServerUseProtSeqの機能を呼び出しているのかを知りたいです:

  4. 低PIDのものを除いて、各Running Processをフックします(クラッシュを防ぐため)。うまくいけば、RPCコールを行うHooked Processにはスレッドが含まれています。 このスレッドをクリックすると、たくさんのコールが表示されます。

13
13
13
2011-02-06 19:14:14 +0000

Microsoftのブログエントリ Is WMIprvse a real villain? _では、WmiPrvSE.exeが使用しているCPUの原因となっているプロセスを見つける方法を紹介しています。

この方法では、"Show Analytic and Debug Logs “のイベントビューアオプションを使用して、すべてのWMIアクティビティをトレースし、有罪プロセスのプロセスIDを取得します。

7
7
7
2014-11-14 08:17:34 +0000

ちょうど同じ船で他の人のためにこれを追加し、このページはすべてのGoogleの上にあります。私はWindows 8.1上のLenovo Yoga2 ProでWmiProvderHostがCPUを50%までスパイクし、バッテリーを消耗させるという同じ問題を抱えていました。それはカメラを接続するのを待つ監視サービスをインストールし、私の場合はこれが原因でした。

4
4
4
2015-08-02 16:07:23 +0000

デバッグするには、 Windows Performance toolkit の xperf を使用して、以下の cmd ファイルを実行してください。

今、Microsoft-Windows-WMI-Activityイベントのみにフィルタリングして、WMI操作とClientProcessIdを探します。

2番目の例はここに示されています:

インテルのProSet監視サービスに属しているPID1924のプロセスのコールが繰り返し発生しているのがわかります。それを停止すると、問題が修正されました。

1
1
1
2011-02-02 13:36:08 +0000

ウィルスかどうか試してみましたか?ウイルスの中には、Windowsのサービスのように、その周りをパレードするのが好きなものもあります。007プロセスがWmiPrvSE.exeディレクトリにあることを確認してください。そうでない場合は、一般的なスパイウェア検出プログラムを実行してみてください。それがスパイウェアでない場合、それはおそらくそれを呼び出している別のサービスかもしれません。私は、私のコンピュータ上でいくつかのガジェットを素早く実行していることを知っていますが、皮肉なことに、パフォーマンスモニターのガジェットは時々私のCPUを少しスパイクさせます。また、別のサービスが時々そのガスを押している可能性もあります。例えば、HPやDELLなどからのブルートウェア

それ以外にも、TomWijからの他の回答は、トラブルシューティングのためにかなり良いようですね!