web-dev-qa-db-ja.com

25%のCPUを使用するsvchost.exe

しばらくの間、私のsvchost.exeの1つが私の4コアであるWin7 Ultimate PCで常に25%のCPU時間を費やしていることに気づいていました。この特定のサービスホストはホストしています:

  1. 暗号化サービス(CryptSvc)
  2. DNSクライアント(DnsCache)
  3. ネットワークロケーション認識(NlaSvc)
  4. ワークステーション(ランマンワークステーション)

ウイルスを疑ったが、Windows Essentialは最新で何も報告せず、Autorunsは異常なことを何も表示しない。

助けてくれてありがとう!

リクエストに応じて、25%のCPUを占めるスレッドのスタック:

ntkrnlpa.exe!KeSetEvent+0x2a1
ntkrnlpa.exe!KeDelayExecutionThread+0x5cc
ntkrnlpa.exe!KeWaitForMutexObject+0x393
ntkrnlpa.exe!KeQueryHighestNodeNumber+0x9fe
halmacpi.dll!KfRaiseIrql+0xcb
halmacpi.dll!KeRaiseIrqlToSynchLevel+0x8f
halmacpi.dll!HalEndSystemInterrupt+0x67
halmacpi.dll!HalInitializeProcessor+0xae8
ncsi.dll!NcsiIdentifyUserSpecificProxies+0x3a47
ncsi.dll+0x31f0
ncsi.dll!NcsiIdentifyUserSpecificProxies+0x4c92
ncsi.dll+0x1e93
ncsi.dll+0x20a2
ncsi.dll+0x1808
ncsi.dll+0x2240
ntdll.dll!RtlIsCriticalSectionLockedByThread+0x474
kernel32.dll!BaseThreadInitThunk+0x12
ntdll.dll!RtlInitializeExceptionChain+0x63
ntdll.dll!RtlInitializeExceptionChain+0x36

HALのある種の割り込み問題の問題のように見えますか?すべてのドライバーを更新して報告します。

5
Mikle

誰かがこのような状況に陥った場合、最初のステップは、ホストされている各サービスを1つずつ停止し、それぞれの間に少し待って、使用量が減少するかどうかを確認することです。問題を特定のサービスに絞り込んだら、Web検索を実行して、他の人が同じ問題を経験しているかどうかを確認できます。

この例では、それは確かにDNSサービスであった可能性があります(Mikle 示さなかった 理由 彼はそうではないと考えている 、そしてHALについての彼の仮定は疑わしい)。

示されているサービスのうち、100%のCPU負荷を引き起こすことがわかっているのはDNSサービスだけです。 (他のサービスに関する高いCPU負荷への唯一の言及は、DNSサービスと同じsvchostインスタンスを共有しているVista +の場合です。残念ながら、多くの場合、診断されないままになります。[1][2])4コアプロセッサであると彼が言ったので、CPU負荷の25%しかかからなかったであろうということは理にかなっています。したがって、DNSサービスは使用していたコアの100%を使用していました。

この問題は、HOSTSファイルが「大きくなりすぎる」たびに発生します。何らかの理由で、HOSTSファイルの全体が多すぎると、DNSサービスはテールスピンに入り、CPUのペギングを開始し、回復しません(いいえ、最終的に終了するまでに長い時間を置いても機能しません)数日経っても終わらないからです)。

この場合に発生した可能性が高いのは、Mikleがいくつかの MSMVPs から入手できるような大きなHOSTSファイルをダウンロードしてインストールしたか、SpyBotの 免疫 -を使用したことです。 関数

残念ながら、この場合の唯一のオプションは、HOSTSファイルを少数のエントリのみに削除するか、DNSサービスを無効にすることです。

DNSサービスがハンドルから外れると、通常のサービスのように単純に停止することはできない可能性があることに注意してください。実際には、それをホストしているsvchost.exeのインスタンスを強制終了する必要があります。これはXPでは通常独自のコピーを取得するため、それほど悪くはありませんが、7では、他のいくつかのサービスとコピーを共有します(ただし、重要なことは何もないので、簡単に再起動できます) DNSサービスを無効にすると、他のサービス)。

3
Synetech

管理者としてProcessExplorer(これもMicrosoft Sysinternalsから)を起動します。

消費しすぎているsvchost.exeの[スレッド]タブを見てください。
非常にビジーなスレッドのスタックを取得して、その動作を確認するか、ここにスタックをコピーできます。

1
Tamara Wijsman

私もこれが起こっていました。しかし、それはあなたに起こっていたものかもしれないし、そうでないかもしれません。あなたがこれを約5年前に尋ねたように、これはおそらく質問者以外の人を助けるでしょう。私も大きなHOSTSファイルを持っています。これにより、起動直後にDNSサービスが非常にビジーになる可能性があります。しかし、この現象はインターネットが正常に応答した後に消えます。 171,000をわずかに超えるエントリで、私のCore I3-2100は2〜3分後に使用可能になります。それ以降も持続する場合は、おそらくそうではありません。

Process Explorerを提供している人が答えたことを実行し、犯人を見つけました。私の場合、ASUSのマザーボードを持っているので、Asus AI SuiteIIを信頼してインストールしました。これは、Process ExplorerがCPUの24〜25%、つまり事実上すべてのシングルコアを使用していることを示した「AsRoutineController.exe」というファイルをインストールします。 AISuiteアプレットを起動するバーに関連しているようです。システムトレイからAISuite IIを停止すると、AI SuiteIIが停止しました。 AI Suite IIアプリを再起動しても、問題は再開されませんでした。残念ながら、これは、ネットが正常に応答し始めた後でも、過去に新しいブートで発生するのを見てきました。したがって、処理能力の25%が失われるのを防ぐ唯一の方法は、AI Suite IIをアンインストールすることだけであるように思われます(それが原因である場合)。

1
CodeLurker

それを行うのはDNSクライアントです。サービスを停止すると終了します。 (とにかくこのサービスは必要ありません。DNSルックアップを高速化することを目的としていますが、手動に設定してから違いに気づいていません。)

1
BillP3rd