私は一般的に私のラップトップを24時間年中無休の状態に保っています、そして一日の終わりには過熱のために私の太ももを焼くのは本当に厄介です。
過熱は、WMI Provider Host(WmiPrvSE.exe)が数分ごとにCPU使用率を25%に急上昇させたためと考えられます。なぜこれが起こるのですか?
私は、Windows 7 Home Premiumで実行されているHP Envy 14(HPが付属のがらくた付き)を持っています。
(注:@ nhinkleの 過去の観測 に基づくと、HP Wireless Managerが原因である可能性があります。確認する方法はありますかこれ?)
この質問は今週のスーパーユーザー質問でした。
2011年2月28日ブログのエントリを読むか、 /] 自分の今週の質問を送信してください。
Sathyaが彼の質問で述べたように、私は私の同じようなHPラップトップの上でこの問題に関する以前の経験をしました、そして私は今HPラップトップのCPUスパイクがHP Wireless Assistantによって引き起こされるという科学的方法を使って確認しました。または、HP CPU Assassinを呼び出します。
質問:HPラップトップのCPUが頻繁に急上昇している原因、特にWmiPrvSE.exe
処理しますか?
仮説:HPワイヤレスアシスタント(HPWA)が問題を引き起こしています
方法:
WmiPrvSE.exe
プロセスが20%を超えるCPUの使用を停止するかどうかを確認します。結果:HPWAが極端なCPU使用率を引き起こしています
結論:HPWAはアンインストールしても役に立ちません。
私のHP Pavillion dm4tラップトップを手に入れたとき、私はCPUが頻繁に50%もの使用率まで、ほぼ一秒おきに急上昇することに気づいた。これはバッテリーの寿命を浪費させ、ラップトップを暖めていました。 Sathyaが経験したのとほとんど同じ症状。 Windows 7のリソースモニタを見るだけで、プロセスWmiPrvSE.exe
に問題があることがわかりました。
簡単なGoogle検索の結果、これは Windows Management Instrumentation (WMI)Hostプロセスであると推測されました。つまり、WMIを使用して、プロセッサの使用状況、実行中のプロセス、ログオンしているユーザー、その他あらゆる種類の情報などのシステム情報を照会できます。 WMIホストプロセスは、それらを作成する他のプロセスに対してWMIクエリを実行します。したがって、WmiPrvSE.exe
はそれ自体が原因ではなく、単に仲介者でした。
どの特定のプロセスがこの問題を引き起こしているかを突き止めるために、私は Systinternals Process Explorer を使いました。私は、どのインスタンスのWmiPrvSE.exe
プロセスが大量のCPUを使用しているのかを見つけ、それをクリックして詳細な情報を開きました。
残念ながら、どのプロセスがすべてのクエリを実行しているのかを突き止める方法はありませんでしたが、これをCPUスパイクの原因として特定し、サービスであることがわかっていたので、サービスマネージャにアクセスしました。サービスはWMIに依存しており、それが私を別の手がかりに導いてくれるかもしれないと考えていました。
私はそれが問題の原因となっている組み込みのWindowsサービスではないことを考え出した、それでそれらを排除して、私はリストを下にして各サービスを無効にして問題が解決するかどうか見ることに決めた。リストの一番上にあるのが、HP Wireless Assistant Serviceです。サービスメニューに戻り、そのサービスを無効にしました。タスクマネージャを振り返ってみると、CPU使用率がほとんどないことがわかりました。私はHPWAサービスに戻りました。 CPU使用率が回復しました。私は今私の理論を形作るのに十分なデータを持っていた。私はHPWAサービスをアンインストールし、そして二度と問題を抱えていなかった。
数ヵ月後、Sathyaはこの質問をします。私はこれがHPWAのせいであることを一度限り証明することにしました。私は数ヶ月でインストールしていなかったHP Wireless Assistantを再インストールしました。すぐに、プロセッサ使用率は急上昇しました。それから私は上で概説した実験を経験しました。
まず、HPWAサービスを担当するプロセスをリソースモニターで分離しました。 HPWA_Service.exe
とHPWA_Main.exe
は2つです。これら両方の処理された実行でCPU使用率がどのように見えたかはここにあります:
その後、両方のプロセスを中断しました。 CPU使用率はすぐに低下しました。グラフ上の前回のCPU使用率を確認するためにしばらくして、次のようになりました。
使用状況が回復するかどうかを確認するために、プロセスを再度有効にしました。それはしました:
HPWAを有効にしたときの最初の急上昇
HPWAを有効にしてからしばらくして
プロセスを再び一時停止すると、CPU使用率は元に戻ります。
もう1回繰り返してテストしましたが、3回目の試行でも、まったく同じことが起こりました。私はこの十分な証拠を考慮して、HPワイヤレスアシスタントが問題の原因であり、その後サービスを無効にしたため、アンインストールします。
HPWAがしているように見えるのは、ワイヤレスがオンまたはオフになったときにユーザーに通知し、CPUを奪うことだけです。内蔵のワイヤレス管理ツールではできないことができることは何もないので、このソフトウェアをインストールしている場合は削除することをお勧めします。
注:少なくとも1人が、HPWAをアンインストールするとキーボードのワイヤレススイッチが機能しなくなったと報告しています。私のラップトップでは、HPWAをアンインストールした後も問題なく動作していましたが、あなたが動かなくなってしまった場合は、いつでもWindowsの中からワイヤレスカードを無効にすることができます。押す +x Windows Mobility Centerを開くには、Turn Wireless Off
ボタンをクリックします。
HPサポートフォーラムの ディスカッション によると、この問題はHPワイヤレスアシスタントの最新バージョンで修正されています。あなたのラップトップがwifiのオン/オフボタンを使うのにHPWAを必要とするなら、あなたはHPのドライバのウェブサイトから最新バージョンをダウンロードすることができ、おそらくもうこれ以上問題はないでしょう。それにもかかわらず、あなたが無線LANのオン/オフボタンのためにそれを必要としない場合、それでもこのソフトウェアをインストールしておくことによる付加価値はないようです。
Microsoft Sysinternalsから ProcDump をダウンロードします。
WmiPrvSE.EXEが1秒間で25%に達すると、ダンプを取ります。
procdump.exe -c 25 -s 1 -x WmiPrvSE.EXE %HOMEPATH%\WmiPrvSE.dmp
これはあなたのUserフォルダにダンプを作成します。
これを1〜2回繰り返して自由に繰り返して、より多くのダンプを作成し、原因が確実にダンプされ、他の通常のイベントではないことを確認できます。
ダンプを分析して{ online }、必要に応じて SpeedyShare で共有します。
Alternative: WinDBG は、コマンド!analyze -v
と共に使用できます。必ず set symbols を使用してください。
表示されるスタックトレースはこれを引き起こすプロシージャを含むはずです。
おそらく、スタックの最上位手順のいくつかをグーグルして、それらが何をするのかをよりよく理解するようにします。
それらが役に立たない場合は、もっと高度な分析が必要かもしれません。次のセクションを見てください。
コマンドPromptをadministratorとして開き、次のコマンドをコピーして貼り付けます。
xperf -start perf!GeneralProfiles.InBuffer -stackwalk profile && timeout -1 && xperf -stop perf!GeneralProfiles.InBuffer %HOMEPATH%\myTrace.etl
押す ENTER onceコマンドを起動するには、スパイクが発生するまで待つ必要があります。
次のコマンドを実行してファイルを表示し、分析します( WinDBG / Symbols 必須)。
xperf %HOMEPATH%\myTrace.etl
あなたが私にそれを調べて欲しいなら:
WmiPrvSE.EXEはCAPIストアに対してWMIクエリを実行するためのホストであるため、 IPC のためXPerfを使用しても原因を特定できない可能性があります。 here の説明に従ってWMIのログ記録とログのチェックを有効にするには、ClientProcessIdをWMIクエリを作成したプロセスのPIDにします。このPIDは、PID列をタスクマネージャまたは Process Explorer に追加するか、tasklist /FI "PID eq X"
を使用してプロセスに追跡することができます。ここで、Xは見つけたPIDです。
ダンプ1 の分析:行94-115は リモートプロシージャコール を示します。
ダンプ2 の分析:行84-105は リモートプロシージャコール を示します。
カーネルでは、新しいスレッドが開始されます Remote Procedure Callスタブを処理するため 、これは本質的にはWMIプロバイダが実行して応答するクエリ要求です。これにより、レジストリやパフォーマンスの情報が読み取られるため、CPU使用率が高くなります。
ダンプは一瞬のキャプチャなので、どのプロセスがRPCを実行したのかわかりません。
そのため、RPCを実行している前のスレッドを確認するには、XPerfのようにトレースするプログラムが必要です。
または、{ RPC状態情報を有効にする _の場合は、 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 State Information についてもっと多くの情報があるかもしれませんが、代わりにXPerfを使うことができたときに私たちのような気が遠くなるのを通過するのはそれだけではありません。 :-)
RPCがどのように機能するかについての内部の動作についてはわかったので、 API Monitor を使用することもできます。
APIキャプチャフィルタをRpcrt4.dll
モジュールに設定します。
ブレークポイントと同様に、誰がRpcServerUseProtSeq
関数を呼び出すのかを知りたいです。
(クラッシュを防ぐために)PIDが小さいものを除いて、各実行中のプロセスをフックします。
理想的には、dwm.exe
/winlogon.exe
以下をフックしたくはありません。
また、単一のプロセスを試して、後でHooked Processesウィンドウからフック解除することもできます。
しかし...私はそれを試してみたし、任意のプロセスについてフックすることができます。
すべてうまくいけば、RPC呼び出しを行うフックプロセスにスレッドが含まれます。
そして、これらのスレッドをクリックすると、たくさんの呼び出しが表示されるはずです。
そうした場合、問題の原因となっているプロセスが見つかりました。
コンピュータを常に最新の状態に保つことが重要です。 HPWA 4.0.10. をインストールすると解決できます!;-)
マイクロソフトのブログエントリWMIprvseは本当の悪役ですか? WmiPrvSE.exeが使用しているCPU。
このメソッドは、[Show Analytic and Debug Logs]の[Event viewer]オプションを使用してすべてのWMIアクティビティを追跡し、それによって有罪プロセスのprocess-idを取得します。
同じ船に乗っている誰かにこれを付け加えるだけで、このページはグーグルのいたるところにある。 Windows 8.1上のLenovo Yoga 2 Proで、WmiProvderHostが最大50%のCPUのスパイクとバッテリーの消耗を起こしても、同じ問題が発生しました。
上記の優れた調査アドバイスに従って、私の問題は実際にGoPro Studio(GoProカメラに付属の無料のビデオ編集ソフトウェア)であることがわかりました。それはあなたがあなたのカメラを接続するのを待つ監視サービスをインストールします、そして私にとってこれは原因でした。
デバッグするには、 Windows Performanceツールキット のxperfを使用して、次の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
WPA.exeで生成されたWMItracing.etlを開き、左側から[Generic Events]グラフを分析ウィンドウにグラムアンドドロップします。
今すぐMicrosoft-Windows-WMI-Activityイベントのみにフィルタをかけ、WMI操作とClientProcessIdを探します。
私の例では、このCLientProcessIdはVeeam ONE Monitor Serverというツールに属しています。 停止すると、CPU使用率の問題が修正されました 。
そして、2番目の例がここに示されています。
Intel ProSet Monitoringサービスに属するPIDが1924のProcessの呼び出しが繰り返し発生します。
ここでは、CPU使用率もCPUサンプリングコールスタックに表示されています。
そのため、IntelツールはWMI通知クエリを頻繁に実行し、これが問題を引き起こします。 停止して問題を修正しました。
ウイルスかどうか見てみましたか。一部のウイルスは、Windowsサービスがそのようなものとしてパレードするのを本当に好みます。 WmiPrvSE.exe
プロセスがc:\windows\system32\wbem
ディレクトリにあることを確認してください。そうでない場合は、一般的なスパイウェア検出プログラムを実行することをお勧めします。スパイウェアでなければ、それを呼び出している別のサービスかもしれません。コンピュータ上でいくつかのガジェットをすばやく実行していることを知っていますが、皮肉なことにパフォーマンスモニタのガジェットでCPUが少し急増することがあります。また、それは時々そのガスを押す別のサービスかもしれません。たとえば、HP、Dellなどのブロートウェアです。
それ以外に、TomWijからの他の答えはそれを解決するためにかなりいいようです!