⚠この記事はブログ移転前のアーカイブです

DPC Latencyによる音飛び、プチフリの原因は多岐にわたり、なかなか直すのが難しかったりします。

DPC Latencyを低く抑えるため自分がやった対策をまとめてみました。レイテンシを無くすためにサウンドカードやオーディオIFを買ったのに改善されない、といった方はぜひ試してみてください。

まず、DPC Latencyをチェックするために以下のソフトウェアをDLしましょう

DPC Latency Checker

LatencyMon

ほんとはLatency Monだけでいいです。ただ、測定方法が違うのかLatencyMonはDPC Latency Checkerとちょっと異なる数値を出すことがあるので、音飛び時のモニタリングはDPC Latency Checkerを使うことをおすすめします。

LatencyMonはデフォルトではユーザープロセスのレイテンシの合計、DPC Latency Checkerはおそらくカーネルタイムのレイテンシを計測しています。LatencyMonでもカーネルタイムのレイテンシを表示するオプションはありますが、DPC Latency Checkerと異なる値が出る上に、音飛びのない正常な状態でもDPCレイテンシが10000超えするなど計測値に信頼性がないです。LatencyMonを使用するときは「ユーザープロセスのレイテンシ」のオプションにしておいてください。デフォルトなので特に考える必要はないかと思いますが。

じゃあLatencyMonは何に使うのかというとドライバー個別のレイテンシチェックに使います。後述。

これらの改善法を試す前提として、WindowsUpdateを済ませておく。BIOS(UEFI)は最新にしておきましょう。

もくじ
  • コンパネの省電力設定
  • 不要なサービスの停止
  • ドライバ整理
  • tcpip.sys iusb3xhc.sys
  • USB機器の見直し

省電力設定を無効に

Windowsコントロールパネル -> ハードウェアとサウンド -> 電源オプション

選択中の電源プランの詳細設定を開きます。今から挙げる項目の設定を変更します。項目自体がない人もいますのであしからず。

screenshot.36

  • ハードディスク -> 次の時間が経過後~オプション : 『なし』
  • ワイヤレスアダプタ -> 省電力 : 『最大パフォーマンス』
  • USB設定 -> USBセレクティブ サスペンド : 『無効』
  • プロセッサの電源管理 : すべての項目を『100%』に

不要なサービスの停止

不要なサービスを停止させることでPCに余計なリソースを割かないようにします。

スタート -> 「コンピュータ」を右クリック -> 管理

screenshot.38コンピュータの管理画面でサービスの項目を表示します。

『状態』タブをクリックし、現在動作しているサービスをリストの上に持っていきます。

停止させたいサービスダブルクリックし、『停止』ボタンをクリック。更にスタートアップの種類を無効にしておきます。

サービスを止めると、Windows起動時や、そのサービスを利用するソフトウェアがエラーを吐いたりします。また、止めてはいけないサービスも存在しますので、停止させるサービスは慎重に選んでください。起動不可・操作不能になっても当ブログでは責任を負えません。サービス説明文を読んだり、サービス名をググって本当に停止させても良いかよく調べてください。以下のサイトも参考になります。

 

http://enjoypcblog.blog32.fc2.com/blog-entry-336.html

http://mikasaphp.net/win7p2.html

screenshot.39

サービス停止後は再起動してください。

 ドライバの整理

参考:windowsの要らないデバイスドライバを整理してみる

コマンドプロンプト(管理者)で以下のコマンドを1行ずつ実行する。

set devmgr_show_nonpresent_devices=1
start devmgmt.msc
ドライバの一覧はサービスの停止で実行したコンピュータの管理画面で確認できますが、使用していない機器や、重複したドライバは表示されていないのです。これらを表示させるために環境変数をセットする必要があります。
表示 -> 非表示のデバイスを表示 をクリック
screenshot.41
すると、グレーアウトしたデバイスが表示されるはずです。これは現在接続されていないデバイスです。
既にその機器を使用する予定がない、今後しばらく使うことはない機器でドライバの再インストールが可能なデバイスは全て削除しましょう。
これらも下手に削除すると操作不能、起動不能、謎のエラーなど、発生する可能性がありますので慎重に確実に消して良い物を選びましょう。
screenshot.42

例えばCanon MP470 series USB Deviceってプリンターですよね。既に使用していないなら消しても構いませんが、私はたまに印刷もするので残しておきます。

私が削除したドライバは

  • もう使ってないUSBキーボードやマウスのドライバ
  • 記憶域ボリューム でグレーアウトしたものすべて
  • 不明なデバイスすべて
  • ディスクドライブ 重複したものや、もう使っていないデバイスすべて
  • もう手放したスマホのドライバー

削除したいドライバーを選択し、「Delete」キーをおすだけで削除できます。選択してズラズラ削除とかは出来ないので根気よく。

また、既存のドライバも出来るものは再インストールしておきましょう。

削除後は再起動を。このデバイス整理でDPCレイテンシが良くなる方が多いようです。

「tcpip.sys 」「iusb3xhc.sys」

「LatencyMon」を起動してください。画面右上の「▶」ボタンをクリックして測定を開始します。

「Driver」タブに移動してください。

screenshot.40レイテンシの影響が大きい順に並んでいます。この画像はDPCレイテンシ改善後の画像なのでそれほどでもないのですが、「Highest execution (ms)」の項目が1.0くらいを超えると音飛び、プチフリが発生することが多いです。

トップに来やすい項目としては「tcpip.sys」「iusb3xhc.sys」です。改善後もトップに立っています。

tcpip.sysがレイテンシの影響度でトップにある場合以下の理由が考えられます。

  • 何らかの拍子で無駄にネットワークドライバがインストールされた
  • 無線LANでインターネットにつないでいる

無線LANでネットにつないでいる場合、どうしてもtcpip.sysのレイテンシ影響度が大きくなってしまう傾向にあるようです。余程な理由がなければ有線に切り替えてください。

また、ネットワークドライバが多くインストールされているとレイテンシがひどくなることがあります。

ネットワークドライバがインストールされるタイミングといえば、例えば

  • SoftEther VPN Clientの仮想LANカード追加
  • 無線LAN子機
  • VMWare、VirtualBoxなどの仮想化ソフトウェアの仮想LANカード

などです。心当たりはありますか?既に使っていなかったり、無駄に仮想LANカードを追加している人がいたら、先ほどのドライバ整理の手順で該当LANカードを削除してください。SoftEther VPN Clientはソフトから直接削除できます。もう使ってない古い無線LAN子機も削除しましょう。

 

USBの見直し

LatencyMonで、「iusb3xhc.sys」がトップに立っている場合、PCに多くのUSBデバイスやUSBハブが挿さっていませんか?使っていないものや使用頻度の低いものは取り外すこと。

USB2.0用の機器はUSB2.0ポートへ。USB3.0用機器は3.0ポートへ挿すようにしましょう。

USB3.0を無効にすることでDPC Latencyを改善させることも可能です。一部のマザーボードではBIOS(UEFI)設定に「USB 3.0 Support」のような項目があるので、これをDisableにします。


DPC Latencyを改善するのってめちゃくちゃ苦労すると思います。これ以外にも改善法があればぜひ教えて下さい。