web-dev-qa-db-ja.com

Windows 10 Fall Creators Updateの後、svchost.exeインスタンスは常にCPU時間を使用しています

Windows 10 Fall Creators Updateをインストールして以来、CPU時間の約14%を常に使用しているsvchost.exeプロセスがあります。

graph of CPU utilization

このsvchost.exeインスタンスは、3つのサービスをホストします。

Base Filtering Engine, CoreMessaging, Windows Defender Firewall

CPU時間は、そのプロセス内のスレッドによって消費されます Process Hacker は、これらの3つのサービスのいずれにも属しません。

screenshot from Process Hacker

これらの3つのサービスは重要なシステムサービスと見なされているので、それらについて何もすることは困難です。これらのサービスはservices.mscで停止または無効にすることはできず、プロセスを終了するとバグチェック(CRITICAL_PROCESS_DIED)がトリガーされます。設定UIを通じてWindows Defenderファイアウォールを無効にしても、CPU使用率は低下しません。

アイデアが足りません。何が原因でしょうか?これをさらにデバッグするにはどうすればよいですか?これらのサービスを停止する回避策はありますか?


更新:@ HelpingHand を使用してデバッグした後、これをWindows Defender Firewallサービスに分離しました。プロセスモニターは、レジストリに常にアクセスしていることを示しています。

screenshot from Process Monitor

そのプロセスにフィルターされたプロセスモニターキャプチャのCSVエクスポートが利用可能です ここ

私はまだその行動を止める方法を探しています。


Update 2:Windowsパフォーマンスアナライザーによる分析では、ほとんどのCPU時間はrpcrt4.dllのコードによって消費されていることが示されています。

screenshot from Windows Performance Analyzer

10
fefrei

結局のところ、これはインターネット接続共有(ICS)に関連していました。

以下では、同様の問題を抱えている他の人々の助けになることを願って、この結論に至った経緯について説明します。


最初のステップは、問題の原因となっているサービスを特定することです。 Windowsのタスクマネージャーもこれを行う方法を最近学習しましたが、サービスの構成を編集することもできる Process Hacker を使用しました。

問題のsvchost.exeインスタンスをダブルクリックし、Serviceタブを選択すると、そのプロセス内で実行されているサービスが表示されます。

svchost.exe (1688) Properties

svchost.exeは、多くのWindowsサービスを同時にホストできるため、問題の原因となっているサービスを特定することが困難です。 通常、Windows 10の最新バージョンでは、十分なときにサービスを分離しますRAMが使用可能 ですが、一部のサービスはまだプロセスを共有しています。

これはそのような場合であり、問​​題を引き起こしているサービスを特定する最も簡単な方法は、それらを分離することです。

プロセスハッカーはこれを行うことができます。メインウィンドウのServiceタブで、サービスがプロセスを共有できるかどうかを構成できます。

MpsSvc Properties

3つの疑わしいサービスのうち少なくとも2つをOwn Processとして構成して、将来的に分離されるようにする必要があります。

どうやら、Windows Defenderは、ユーザーがサービスの構成をいじるのを好まないので、この設定を正常に変更するには、

  • そのサービスにAdministratorsグループFull Accessを付与し、
  • サービスを無効にし、
  • 再起動してサービスを停止します(個別に停止することはできません)。
  • サービスの種類をOwn Processに変更し、サービスを再度有効にします(Auto Startに設定)および
  • 最後にもう一度リブートして、これらの変更を適用します。

その後、問題のあるsvchost.exeは単一のサービスのみをホストするため、容疑者がいます:

Windows Defender Firewall (MpsSvc)

ファイアウォールサービスの内部を分析するために、Windows Performance RecorderとWindows Performance Analyzerツールを使用します。これは Windows ADK の一部です。

データを記録することから始めます。容疑者svchost.exeがバックグラウンドで動いている間に、ダウンロード このファイル をプロファイルとして追加し、Windows Performance Recorderを次のように設定して、記録を開始します。

Windows Performance Recorder: check First level triage and CPU Usage Profile

記録を30秒ほど実行してから、記録を保存します。保存後、WPAで開くをクリックして、すぐに分析用に開きます。

これは、物事がトリッキーになるところです。私の場合、System ActivityGeneric Eventsの下の正しい場所を見るには、@ magicandre1981からのヒントが必要でした。そこでは、RPCイベントの数が疑わしいほど高く見えました。

46.918 Microsoft-Windows-RPC events

ドリルダウンすると、Windows Defender Firewallのsvchost.exewin:Startおよびwin:StopイベントのServer側に多く表示されていました。

RpcServerCall

次のステップは、これらのRPC呼び出しを送信したユーザーを見つけることでした。クライアント側を見ると、別のsvchost.exeインスタンスが不審に見えていました。

RpcClientCall

実際、Process Hackerは、そのプロセス内で実行されているサービスを検出できませんでした。これにより、一貫してCPU負荷が発生していました。

Service group name: netsvcs

この場合、Windowsのタスクマネージャはサービスの識別に成功しました。

Internet Connection Sharing (ICS)

実際、サービスはStarting状態でスタックしていました。必要ないので無効にし、次回の再起動後にCPU負荷が通常に戻った。


コメントで助けてくれた@HelpingHandと@ magicandre1981に感謝の意を表します。


TenForumsの投稿 で後に発見されたように、Windows Defender Firewallをリセットすると、この問題が修正されます。

11
fefrei

それはもっと簡単です、私はこの手順を使用してWindowsファイアウォールの設定をリセットすることで成功しました(特にCPU負荷に関連するスパイクがある場合):-

Windows Defenderファイアウォールをデフォルト設定にリセットすると、問題が解決しました。

これを行うには、[設定]-> [更新とセキュリティ]-> [Windows Defender]-> [Windows Defenderセキュリティセンター]-> [ファイアウォールとネットワーク保護]-> [ファイアウォールのデフォルト設定を復元]を開きます。

これが他の誰かに役立ち、うまくいくことを願っています...かなり広範囲にわたる問題のようです。

2
Mohamad Osama

私の場合、さまざまな失敗した修正(上記の提案の一部(Windowsファイアウォールのリセットなど)を含む)を試した後、「診断ポリシーサービス」を無効にして、CPUの負荷がようやく止まりました。これは理想的なソリューションではないかもしれませんが、重要なサービスではないようです。これを無効にする方法は次のとおりです。

  1. 管理者として「システム構成」(「msconfig.exe」)を開きます
  2. [全般]タブ:[選択的なスタートアップ]を選択します
  3. [サービス]タブ:[診断ポリシーサービス]をオフにします
  4. Windowsを再起動します。

Ranga Rajesh KumarのYouTubeチャンネル に、この解決策を教えてくれてありがとう。

0
Philly Dee