どのようにすれば、高頻度の据え置きプロシージャー呼び出しの根本原因に到達できますか?


40

私はデュアルコアプロセッサを持っています、そして2つのうちの1つは常に100%です。 ProcessExplorerを見ると、それが遅延プロシージャコールであることがわかります。ネットを読んでみると、たくさんの異なる答えが出てきます。

私の場合の問題は何かを絞り込もうとするためのいくつかのステップを説明することは可能ですか?

更新1: 確かに、問題はセーフモードでも解決しません。

更新2: 私はPCの背面から私ができるすべてのものを抜いていた、そしてそれは私に40%もっと自由なプロセッサを買った。私もダウンロードしました RATTV3ツール しかし、私のマシンでは何らかの理由でドライバごとの内訳が表示されません。 DPCLatencyCheckerとRATTV3の両方の良い説明があります ここに

更新3: LatencyMon (下記の私の答えを参照してください)それが私に言う nvstor32.sys - これはNVidiaのSATAドライバです - 約5300μsの時間があります。

アップデート4: リカバリディスクを起動するかどうかを考えながら(ハードウェアの問題ではないかどうか)、DVD / CDプレーヤーが動作していないことに気付きました。ボタンを押す)。マシンがマザーボードを交換したばかりだったことを考えると、彼らはそれを差し込むことを忘れていたのかもしれないと思いました。再起動時には、すべて問題ありませんでした。これ以上DPCはありません(現在の最高300µs)。

アップデート5: 翌日、問題が戻ってきて、CDプレーヤーが再び動かず、パスワードテキストボックス内のカーソルでさえもスローモーションで点滅していました。次回はCDプレーヤーを完全に抜いてみるつもりです...

アップデート6: 気付いたのはシステムイベントログ nvstor32.sys 言ってエラーを与える Parity error detected in \Device\RaidPort0その後、再初期化の送信に関する警告が表示されます。今ちょうどちょうどどれを解決する必要があります RaidPort0 ...(注意、私はRAIDの設定をしていません、それは単に標準的なAcerです)。ああ、そして私のAvastセットアップは私がシステムロールバックをしたとき(あるいはそれが呼ばれたものは何でも)殺されたようだ。

アップデート7: 最後にDVDを取り外して再起動する時間がありました。これ以上DPCの問題はありません! (多くのページフォルトが、しかしそれは後であります)。次のステップ:それがケーブルなのか、それともDVDプレーヤーなのかを調べてください。

アップデート8: SATAケーブルを借りて、それで起動しました、問題ありません。 CD / DVDプレーヤーは動作しますが、DPCの問題はありません nvstor32.sys、プロセッサがブロックされていません。ハッピーエンド...ほとんど:私はまだAvastに関する問題、明らかなDPCの問題を抱えている storport.sys 起動時に(おそらくUSBは普通なのでしょうか)、そしてハードページフォールトがたくさんあります。しかし、それらは他の質問の主題になるでしょう。

追記: 私は最近、同じ問題を抱え始め、同じ方法を使用して、USBスティック(ReadyBoostに使用していたもの)を突き止めることに成功しました。


3
本当に良いツールとここの上の助け... msfn.org/board/topic/…
Moab

回答:


43

これが私のDPCレイテンシーが高い原因を突き止めた話です。


私のシステムでは、サウンドの再生中にクリックやポップ音がしていました。これは、カーネルモードの何かがCPUを占有していることを意味していました。私の最初の考えは周りに突くことだった プロセスエクスプローラ そして、何かが場違いに見えたかどうかを確認してください。私の注意を引いた唯一のことは、演奏に費やされた過度の時間の長さでした。 据え置きプロシージャー呼び出し (DOC):

Screenshot of Process Explorer showing high DPC time

私はDPCがドライバの内部で実行されているコードであることを知っていました。課題は把握することでした どっち ドライバ。私はになった DPC待ち時間チェッカー これは、レイテンシがどれほど悪いのかを示していました。

screenshot of DPC Latency Checker

DPC待ち時間チェッカー のデバイスを通過することをお勧めします デバイスマネージャ バグのあるドライバを隔離することを望んで、必須ではないハードウェアを1つずつ無効にする(ネットワークカード、サウンドカードなど)。 (デバイスを無効にしたときに、DPCの待ち時間が突然低下した場合:問題の原因が見つかりました。)

screenshot of disabling devices

残念ながら、可能なことはすべて無効にした後(まだ可能である間) つかいます コンピュータ - マウスが接続されているハードドライブ、ビデオカード、マウス、またはUSBハブを無効にしないでください、待ち時間はまだ高かったです。次に私は Windowsパフォーマンスツールキット (の一部 Windows SDK Peter Weilandによるすばらしいブログ記事、 「DPC時間を測定する」 。 Windows Performance Toolkitをインストールした後:

Screenshot of Windows SDK installer, with Windows Performance Toolkit being selected

昇格したコマンドプロンプトを開き、実行しました。

>xperf -on Latency

注意 Latency グループ です   可能性のある定義済みのイベントのセット   からトレース カーネルグループ プロバイダー:

>xperf -providers kg
   Base           : PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+PROFILE+MEMINFO
   Diag           : PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSWITCH+PERF_COUNTER+COMPACT_CSWITCH
   DiagEasy       : PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSWITCH+PERF_COUNTER
   Latency        : PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSWITCH+PROFILE
   ...

この場合 Latency に対応   カーネルフラグ

  • PROC_THREAD プロセスとスレッドの作成/削除
  • ローダ カーネルとユーザーモードのImage Load / Unloadイベント
  • プロフィール CPUサンプルプロファイル
  • CSWITCH コンテキストスイッチ
  • DPC DPCイベント
  • 割り込み 割り込みイベント
  • DISK_IO ディスクI / O
  • HARD_FAULTS ハードページフォルト

しばらく実行した後、トレースを停止してファイルに保存しました。

C:\Users\Ian\Desktop\xperf -d thingy1.etl

それから私はコマンドでトレースの結果を見ました:

C:\Users\Ian\Desktop\xperf thingy1.etl

これはグラフィカルな Windowsパフォーマンスアナライザ 。を右クリック DPC CPU使用率 グラフ、選択した 要約テーブル 。これは、DPCでドライバーによって費やされた時間の内訳を示しています。

screenshot of XPerf output

すぐに私は1人の運転手を見ることができます( tsvp.sys 1 DPC実行あたり平均2.8ミリ秒かかる、これは他のどのドライバよりも1桁遅い。

screenshot

グーグル tsvp.sys 私に答えをくれた: CommView 、私は最近インストールしました。

問題は、このドライバを無効にする方法です。を使う オートラン ドライバサービスとしてインストールされていることがわかります。

screenshot of autoruns

デバイスマネージャを使って、このドライバをホストするサービスを無効にすることができます。まずあなたがしなければならない 隠しデバイスを表示 その後、 Non-Plug and Play Drivers ノード:

screenshot of device manager

最後に私はドライバサービスを停止することができました、そして私はからスタートアップモードを変更しました System (ドライバはWindowsの重要な部分であり、Windowsはそれなしでは起動できません)、 Demand (必要なときにドライバを起動できることを意味します):

screenshot of device manager

ドライバサービスを停止するとすぐにDPCの待ち時間が修正されました。

screenshot

CommViewを完全にアンインストールしてもしなくてもかまいませんが、現時点では「DPC遅延のケース」を解決しました。


更新 :Windows 8以降 あなたはもう見ることができません 非プラグアンドプレイドライバ デバイスマネージャで

注Windows 8およびWindows Server 2012以降、プラグアンドプレイマネージャーは非PnP(レガシー)デバイス用のデバイス表現を作成しません。そのため、デバイスマネージャに表示するデバイスはありません。   デバイスマネージャの表示に隠しデバイスを含めるには、[表示]をクリックして[隠しデバイスの表示]を選択します。

マイクロソフトはその機能を削除し、何もしないでそれを置き換えた。よくやった。

典型的なオタク怒りでは、 役に立たない答え

  • デバイスマネージャが非PNPドライバを表示したことがない
  • なぜあなたはこれが必要なのですか?

幸いなことに、NirSoftは代替品を作成しました。 ServiWin すべてのサービスを表示、停止、および開始できます(Microsoftが管理者に表示を許可する必要があると判断したサービスも含む)。

screenshot of ServiWin


13

経過報告

私がこれまで見つけた最高のツールは LatencyMon これは基本的に、前の2つのツールが実行することすべてを、あなたに考えさせることなく行います。ダウンロードページはあなたに電子メールで登録するように頼みます - しかし、私がそうしたとき私には何も起こりませんでした - しかしあなたはとにかくダウンロードするためにページの一番下までスクロールすることができます。

alt text


6

私の場合は私が使った LatencyMon (Benjolの答えから)そして、運転を凍結している運転手、宇宙、そしてすべてが(また) storport.sys これはマイクロソフトのドライバです " 高性能バス msgstr "問題がIOに関連しているのではないかと私は疑いました。

私はまた先に行き、私のを見ました Windows 7のイベントビューア 、フォルダ Windowsログ - >応用 そして、30分から2時間ごとに発生しているボリュームシャドウコピー(VSS)からのエラーのいくつかのバッチを見つけました。詳細は以下のとおりです。

Volume Shadow Copy Service error: Error calling a routine on the Shadow Copy Provider {b5946137-7b9f-4925-af80-51abd60b20d5}. Routine returned E_INVALIDARG. Routine details GetSnapshot({00000000-0000-0000-0000-000000000000},000000000023C850). 

Operation:
   Get Shadow Copy Properties

Context:
   Execution Context: Coordinator

私はそれから調査し始めました 一体何がVSSなのか そしてそれが何のために使われているのか。私は渡った いくつか - ページ数 - - VSSのトラブルシューティング 。私が1人の大きな疑いを抱いていたものすべてを見ていった。私のバックアップソフトウェア クラッシュプラン

その先導に続いて、私はすぐに見つけました VSSエラーに関連するページ 。そこにある指示に従ってVSSを使用するオープンファイルのバックアップを無効にすると、フリーズ、カーネルCPU使用率の高さなどが完全に消滅しました。誤解しないでください。CrashPlanは素晴らしいです。この機能だけでは私のマシンでは動作しませんでした。

ところで、このページはTHE ONEでした。私が私の問題の根本的な原因を見つけるのを手助けしてくれたのです。 @ Benjolと、以前に回答してくれたその他すべての人に感謝します。私の答えが他の人にも役立つことを願っています...


Chuimに感謝します。多分私の正確な問題でもありますが、私は数週間この問題を解決するために取り組んできましたが、ついにVSSとstorport.sysに絞り込みましたがあなたの投稿これで問題が解決するかどうかはまだわかりませんが、これまでのところDPCの待ち時間が長かったために私が得た最高のリードです。
Matt Palmerlee

開いているファイルをバックアップしないようにクラッシュプランの設定を調整することでうまくいったことを確認しました。本当にありがとう!今私は恐ろしいオーディオの一時停止やグリッチなしでSkyrimをプレイすることができます!
Matt Palmerlee

私が新しいPCを構築した後に私がオーディオの吃音を経験していて、Crashplanが原因でもあることを発見したことを付け加えたいと思います。でこの回答を見つけました computercabal.com/2012/07/debugging-audio-skipping-lagging.html 。これを追跡するためにたくさんの作業をしてくれてありがとう!
chucknelson

4

あなたのシステムを忙しくしているのはおそらくデバイスドライバでしょう。これを分析する1つの方法は実行することです DPC待ち時間チェッカー 。その後、一度に1つのドライバを無効にして、DPCの負荷が下がるかどうかを確認します。 (プロセスエクスプローラも動作します。)

[コンピュータの管理]でデバイスドライバを無効にすることができます - >デバイスマネージャ。


おかげで、私はそのリンクについて読むつもりです。無知ですが、「分岐を切らずに」安全に無効にできるデバイス(キーボード、スクリーン、マウスなど)はどれですか?
Benjol

1
わからない、私の主な容疑者はマイクロソフト以外のサービスだろう。うまくいかない場合は、セーフモードで起動してドライバを再度有効にすることができます。
Andomar

はい、そのページには避けるべきドライバのリストが含まれています。それがそれらの1つではないことを願わなければなりません。
Benjol

それ以前は、リカバリディスクから起動してみます。 それでも 問題を抱えている、それはハードウェアの問題である可能性が高いですか?
Benjol

1
待ち時間チェッカーの場合は+1。私の経験では、ここで最も一般的な原因はワイヤレスネットワークカードのドライバです。
Shinrai

3

この問題は解決するのが難しく、常に悪いドライバやIRQの衝突が原因ではないので、ここに私の答えを追加するべきだと私は思います。

私はプロのUSBサウンドカードでポップ/クラックル音を引き起こしていた高いRPCレイテンシを持っていました。承認された回答に記載されているツールは、問題を引き起こしている特定のドライバを識別するのに役立ちませんでした。待ち時間は、HAL、USBPORT.SYS、およびWindowsカーネルという多数のプロセスで発生していました。これらのプロセスをさらに深く掘り下げても、明らかな原因は明らかになりませんでした。

私の場合、この問題は低レベルで、特定のチップセットとBIOSのリビジョンを備えたGigaByteマザーボードに特有のものであることがわかりました。解決策は、Intel SpeedStepと、その場でCPUの速度と電圧を調整するその他すべてのマザーボード特有の機能を無効にすることでした。これらのオプションをオフにすると、RPCの待ち時間はすぐに修正されました。


1

私のグラフィックスカードをGeForce GTX 550 Tiにアップグレードしたときに現れた私のnVidia 10/100/1000イーサネットコントローラのIRQエラーを解決した後、このエラーが発生し始めました。

それは新しいGeForceドライバ295.73へのアップグレードとそれから割り込み競合を解決した後に、私は既存のnForce SATA / RAIDコントローラドライバを削除、破損、またはアンインストールしたようです。私はRAIDを使用しません、エラーはまだ持続し、そして時々Vista Ultimate 64ビットをロックしました。

私がウェブ上で見つけたすべてのトラブルシューティングの提案を試した後、簡単な解決策はそれ自身を提示しました...私はnForce SATA / RAIDコントローラ15.58にアップグレードしましたが、他のnForceドライバだけを残しました。

それは私のためにそれを修正し、そして私は今私のすべての私のドライバーの衝突を解決しました。それがあなたにも役立つことを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.