Windows 10 Fall Creators Updateをインストールして以来、CPU時間の約14%を常に使用しているsvchost.exe
プロセスがあります。
このsvchost.exe
インスタンスは、3つのサービスをホストします。
CPU時間は、そのプロセス内のスレッドによって消費されます Process Hacker は、これらの3つのサービスのいずれにも属しません。
これらの3つのサービスは重要なシステムサービスと見なされているので、それらについて何もすることは困難です。これらのサービスはservices.msc
で停止または無効にすることはできず、プロセスを終了するとバグチェック(CRITICAL_PROCESS_DIED
)がトリガーされます。設定UIを通じてWindows Defenderファイアウォールを無効にしても、CPU使用率は低下しません。
アイデアが足りません。何が原因でしょうか?これをさらにデバッグするにはどうすればよいですか?これらのサービスを停止する回避策はありますか?
更新:@ HelpingHand を使用してデバッグした後、これをWindows Defender Firewallサービスに分離しました。プロセスモニターは、レジストリに常にアクセスしていることを示しています。
そのプロセスにフィルターされたプロセスモニターキャプチャのCSVエクスポートが利用可能です ここ 。
私はまだその行動を止める方法を探しています。
Update 2:Windowsパフォーマンスアナライザーによる分析では、ほとんどのCPU時間はrpcrt4.dll
のコードによって消費されていることが示されています。
結局のところ、これはインターネット接続共有(ICS)に関連していました。
以下では、同様の問題を抱えている他の人々の助けになることを願って、この結論に至った経緯について説明します。
最初のステップは、問題の原因となっているサービスを特定することです。 Windowsのタスクマネージャーもこれを行う方法を最近学習しましたが、サービスの構成を編集することもできる Process Hacker を使用しました。
問題のsvchost.exe
インスタンスをダブルクリックし、Serviceタブを選択すると、そのプロセス内で実行されているサービスが表示されます。
svchost.exe
は、多くのWindowsサービスを同時にホストできるため、問題の原因となっているサービスを特定することが困難です。 通常、Windows 10の最新バージョンでは、十分なときにサービスを分離しますRAMが使用可能 ですが、一部のサービスはまだプロセスを共有しています。
これはそのような場合であり、問題を引き起こしているサービスを特定する最も簡単な方法は、それらを分離することです。
プロセスハッカーはこれを行うことができます。メインウィンドウのServiceタブで、サービスがプロセスを共有できるかどうかを構成できます。
3つの疑わしいサービスのうち少なくとも2つをOwn Processとして構成して、将来的に分離されるようにする必要があります。
どうやら、Windows Defenderは、ユーザーがサービスの構成をいじるのを好まないので、この設定を正常に変更するには、
その後、問題のあるsvchost.exe
は単一のサービスのみをホストするため、容疑者がいます:
ファイアウォールサービスの内部を分析するために、Windows Performance RecorderとWindows Performance Analyzerツールを使用します。これは Windows ADK の一部です。
データを記録することから始めます。容疑者svchost.exe
がバックグラウンドで動いている間に、ダウンロード このファイル をプロファイルとして追加し、Windows Performance Recorderを次のように設定して、記録を開始します。
記録を30秒ほど実行してから、記録を保存します。保存後、WPAで開くをクリックして、すぐに分析用に開きます。
これは、物事がトリッキーになるところです。私の場合、System Activity→Generic Eventsの下の正しい場所を見るには、@ magicandre1981からのヒントが必要でした。そこでは、RPCイベントの数が疑わしいほど高く見えました。
ドリルダウンすると、Windows Defender Firewallのsvchost.exe
がwin:Start
およびwin:Stop
イベントのServer側に多く表示されていました。
次のステップは、これらのRPC呼び出しを送信したユーザーを見つけることでした。クライアント側を見ると、別のsvchost.exe
インスタンスが不審に見えていました。
実際、Process Hackerは、そのプロセス内で実行されているサービスを検出できませんでした。これにより、一貫してCPU負荷が発生していました。
この場合、Windowsのタスクマネージャはサービスの識別に成功しました。
実際、サービスはStarting状態でスタックしていました。必要ないので無効にし、次回の再起動後にCPU負荷が通常に戻った。
コメントで助けてくれた@HelpingHandと@ magicandre1981に感謝の意を表します。
TenForumsの投稿 で後に発見されたように、Windows Defender Firewallをリセットすると、この問題が修正されます。
それはもっと簡単です、私はこの手順を使用してWindowsファイアウォールの設定をリセットすることで成功しました(特にCPU負荷に関連するスパイクがある場合):-
Windows Defenderファイアウォールをデフォルト設定にリセットすると、問題が解決しました。
これを行うには、[設定]-> [更新とセキュリティ]-> [Windows Defender]-> [Windows Defenderセキュリティセンター]-> [ファイアウォールとネットワーク保護]-> [ファイアウォールのデフォルト設定を復元]を開きます。
これが他の誰かに役立ち、うまくいくことを願っています...かなり広範囲にわたる問題のようです。
私の場合、さまざまな失敗した修正(上記の提案の一部(Windowsファイアウォールのリセットなど)を含む)を試した後、「診断ポリシーサービス」を無効にして、CPUの負荷がようやく止まりました。これは理想的なソリューションではないかもしれませんが、重要なサービスではないようです。これを無効にする方法は次のとおりです。
Ranga Rajesh KumarのYouTubeチャンネル に、この解決策を教えてくれてありがとう。