DPC レイテンシ: ドライバーがカクつきの原因になるとき

割り込みの中にいるドライバーはマシン上のどのスレッドよりも上で動くため、タスク マネージャーにもフレーム タイムのグラフにも現れません。そのコスト、正直な測定方法、どのファイルがどのデバイスか、そして効果のある唯一の対処を説明します。

確認すべきリストはひととおり見ました。何も動いておらず、温度も問題なく、ドライブは速く、ゲームは SSD に入っているのに、それでもマシンがガクッと止まります。タスク マネージャーはアイドル状態のシステムを示しています。フレーム タイムのグラフは遅れたフレームを示しますが、なぜ遅れたのかは何も教えてくれません。

まさにこの形を説明できる原因が 1 つあります。そしてそれは、ほとんどの人が手に取るどのツールでも見えません。それらの下で起きているからです。

まず、正直な一文から。 コアを占有するドライバーの対処は、そのメーカーが出すそのドライバーです。w0a の役割は、測定、ファイル名、そして古いツールが残した値の修復です。以前この近くで提供していた唯一のスイッチ、デバイスの割り込みを選んだコアに割り当てる機能は、2026 年 10 月 8 日から読み取り専用です。ゲームでの A/B 比較で、それによってフレームが増えたことが一度も示されなかったためです。

実際に起きていること

デバイス (ネットワーク カード、ディスク コントローラー、サウンド チップ、USB コントローラー) がプロセッサの対応を必要とすると、割り込みを発生させ、Windows はドライバーの割り込みサービス ルーチンをただちに実行します。このルーチンは、あらゆるスレッド優先度より上で動きます。「高優先度」なのではなく、スレッド スケジューラーの完全に外側にあります。それが戻るまで、そのコアにはほかに何もスケジュールできません。

そこは負担の大きい場所なので、ドライバーはそこでは最小限のことだけを行い、残りを遅延プロシージャ呼び出し (DPC) に回すことになっています。DPC は少し後に実行されますが、やはりそのコアのどのスレッドよりも先に実行されます。

どちらかが実行されている間、そのコアは何も描画せず、入力も読みません。レンダー スレッドがそのコアにあれば、フレームは遅れます。マウスのレポートがその後ろに並んでいれば、入力が遅れます。そしてどちらの出来事もタスク マネージャーには現れません。原因として結び付けるプロセスがないからです。

ここで 1 ミリ秒が大きい理由

追いかける価値があるのは、この計算のためです:

測定する方法と、測定が失敗する 2 つの形

w0a のレイテンシ テストはカーネル トレース セッションを開き、実際にマウスを動かす 12 秒の間に、各ドライバーがコアをどれだけ長く占有したかを記録します。管理者権限が必要です。長さについてはテストが 12 秒のマウス操作を求める理由、色についてはレイテンシ テストの読み方で説明しています。

次の 2 つの結果は答えではなく、どちらも「問題なし」に丸められることなく、答えではないものとして報告されます:

3 つ目の、もっと気づきにくいものもあります。イベントを取りこぼしたセッションは最悪の実行をまるごと逃している可能性があるため、ページはその数値が本当の最悪値ではないかもしれないと表示します。これはカクつき探偵があらゆる場所で使うのと同じ原則です。実行できなかったルールは「確認していない」と数え、決して「問題なし」とは数えません。

数値を正確に

数値ルール
テストの長さ既定で 12 秒。1 秒に 1 回おかしくなるドライバーを捕らえられるほど長く、その間ずっと実際にマウスを動かし続けられるほど短い長さです。
十分なマウス データデバイス自身のレポートで 2 秒分、かつ 250 サンプル以上。1000 Hz のマウスなら 2,000 です。それより少ないと、99 パーセンタイルは統計ではなく、2 番目か 3 番目に悪いサンプルにすぎません。
ドライバーの判定ドライバーの 1 回の実行の最悪値が 1 ms 以上で警告、4 ms 以上で危険と表示されます。これはこの分野で 20 年使われてきた線引きで、慣習であり、w0a がお使いのマシンで行った測定ではありません。
完全な測定ドライバーの数値が完全と見なされるのは、カーネル側が実行され、かつそのロガーがイベントを 1 つも取りこぼさなかった場合だけです。答えを返さないカウンターは、問題のない実行ではなく、取りこぼしのある実行と同じに扱います。
システムの下限マウスの 99 パーセンタイル、リフレッシュ間隔の半分、ドライバーの最悪の実行の合計です。最後のものはカーネル側を測定したときだけ足します。測定していないカーネルに 0 を足すと、ツールが最も知らないときにかぎって見栄えのよい数値が出てしまうからです。これは下限であり、合計ではありません。ゲーム自身の入力サンプリング、そのレンダー キュー、GPU の処理、パネルの応答はすべてその外側です。チェーンの残りはソフトウェアでは直せない入力遅延で説明しています。

リストの読み方

各ドライバーは、ファイル名、1 回の最長の占有時間、測定時間に占める割合、実行回数とともに表示されます。最長の占有時間で並べ替えてください。フレームを失わせるのはその数値です。

よく読み違える点が 2 つあります:

どのファイルが何か、それぞれどうするか

手がかりはファイル名がすべてで、それが属する系統が対処を決めます:

系統何か実際に効くもの
ワイヤレス ネットワークWi-Fi アダプターのドライバーWindows Update が提供する汎用ドライバーではなく、ベンダー自身のドライバー。ケーブルにすれば、この行は完全になくなります。
有線ネットワークマザーボードまたは増設の NICボード ベンダーのドライバー。割り込みモデレーションをオフにしても、この行の対処にはなりません。オフにするとパケットがまとめられなくなり、受信したパケットごとに割り込みが発生し、ドライバーの実行は減るどころか増えます。そのため「インターネット」ページは、物理コアが 6 つ未満のマシンでは割り込みモデレーションに手を付けません。ネットワークの調整を参照してください。
ストレージディスクへの経路にあるコントローラーNVMe では、Windows 自身のドライバーとベンダーのドライバーを試し、レイテンシ テストで低く出たほうを残します。サードパーティのストレージ ドライバーは削除する価値があります。
USBホスト コントローラーチップセット ドライバー、そしてマウスをハブ経由ではなくボードのポートに挿すこと。
オーディオコーデックと、その上に重ねられたものベンダーのドライバー。それでも続く場合、Windows の汎用オーディオ ドライバーにすると、たいてい下がります。RGB やオーディオのユーティリティはこの経路で動きます。
ディスプレイグラフィックス ドライバーベンダー自身のサイト。更新の後に始まった場合は、以前のバージョンに戻してください。
Windows 自身のコンポーネントほかのドライバーの代わりに費やされた時間単独で「更新」するものはありません。上のドライバーを直せば、この行も下がります。
電源管理クロックとアイドル状態を切り替える経路プロセッサの最小状態を上げることと、ファームウェアで C ステートの深さを減らすことは、どちらもこれを短くしますが、どちらもアイドル時の消費電力を上げます。これはトレードオフであり、対処ではありません。

ここではフィルター ドライバーにも 1 行割く価値があります。トラフィック シェーピングや接続ルーティングのツールは、すべてのパケットを自前のドライバーに通します。数秒に及ぶネットワークのカクつきは、その最もよく知られた副作用です。カクつき探偵はそれらを見つけると名指しします。マウスとキーボードの経路にフィルターを入れるマクロ ツールやライティング ツールにも同じことが言えます。

対処と、対処にならないもの

対処は、その 1 つのドライバーをハードウェア メーカーから更新することです。 システム全体ではなく、ドライバー更新ツール経由でもなく、Windows の再インストールでもありません。ページがファイル名を正確に示すのは、それがどのデバイスのものか調べられるようにするためです。

これを直さず、そのためここでは拒否しているもの: タイマー分解能の上書き、カーネルのメモリ管理の値 (DisablePagingExecutive、LargeSystemCache)、そして「レイテンシ」という言葉とともに出回っているレジストリのリスト。どれも、ドライバーがコアを占有する時間を変えません。占有しているのはドライバーのコードだからです。デバイスを手当たり次第に無効にするのも診断ではありません。ただし、前後に測定して 1 つのデバイスをテストとして無効にするのは、まったく正当な実験です。これらのリストと一緒に出回るデバイス レベルの値も同じです。MSISupported はデバイスの割り込みモードを切り替えるもので、間違って設定すると画面が真っ暗になることがあります。そのため w0a は決して書き込まず、下の割り込みの割り当ての修復カードも手を付けません。

w0a がこの近くで触れる 2 つの設定

デバイスの割り込みポリシー: 読み取り専用、修復カードあり

Windows での保存場所: デバイスごとに HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\<device>\<instance>\Device Parameters\Interrupt Management\Affinity Policy の下。DevicePolicy (DWORD) はデバイスの割り込みの配置方法を選びます。これが 4 (「指定されたプロセッサ」) のとき、AssignmentSetOverride は割り込みが使えるプロセッサのマスクです。

Windows の既定値: どちらの値も存在しません。その場合 Windows が配置を自分で計算し、Microsoft は既定のポリシーが当てはまる場合は常にそれを推奨しています。

w0a がすること: これらの値を読み取り、書き込みはしません。2026 年 10 月 8 日から、以前「レイテンシ テスト」ページで提供していた割り当ては廃止されています。理由は 3 つです: ゲームでの A/B 比較でそれによってフレームが増えたことが示されなかったこと、Microsoft は Windows が計算する配置を推奨していること、そして間違ったマスクは起動しないデバイスを意味することです。

戻し方: ツールがデバイスの割り込みを固定して何かが壊れた場合 (マウスが途切れる、デバイス マネージャーに「コード 10」が出る)、デバイスの割り込みの割り当て カードが、古い w0a のバージョンが残した割り当ても含めて、すべての PCI デバイスから両方の値を削除します。実際に何かを削除したときだけ再起動を求め、MSISupported には手を付けません。

「高負荷時: フロー制御、割り込みモデレーション、セグメント結合をオフにする」(「インターネット」ページ)

書き込むもの: ネットワーク アダプターの *FlowControl キーワードを宣言しているすべてのアダプターで、そこに 0 を書き込みます。*InterruptModeration、*RscIPv4、*RscIPv6 は、物理コアが 6 つ以上あるマシンで、かつ 2.5 Gbit/s 未満で動作することがわかっているアダプターでだけ書き込みます。そのようなマシンでは、すでにオフでなければ、ネットワーク スタックのレベルでもセグメント結合をオフにします。

小さいマシンでモデレーションをオンのままにする理由: モデレーションとセグメント結合を両方オフにすると、モデレーション間隔ごとに 1 つではなく、受信したパケットごとに割り込みが発生し、遅延呼び出しの負荷は受信するコアにかかります。つまりモデレーションをオフにすることは、レイテンシ テストでネットワーク ドライバーの行を短くする方法ではありません。w0a 自身の説明では、それが取り除くのは、バッチ タイマーが切れるまでパケットがアダプター内で待つ数十から数百マイクロ秒の待ち時間で、加えるのはパケットごとの割り込みです。ドライバーのリストへの影響は測定していません。ネットワーク ドライバーが問題の行なら、このボックスを適用した状態と適用しない状態でテストを実行してください。

ボックス自体が約束すること: 高負荷時の Ping について、マイクロ秒単位です。そのメッセージには、平均 Ping は変わらないと書かれています。

適用されるタイミング: アダプターが再起動したときです。w0a は何かを書き込んだときは必ず再起動を求めます。

戻し方: ネットワーク アダプターのオフロード カードが、オフロード、割り込みモデレーション、省電力イーサネット、セレクティブ サスペンド、受信バッファーを、ドライバーが宣言しているとおりのドライバー自身の既定値に戻します。

自分で確認する

これらのコマンドは読み取るだけです。コマンド プロンプトまたは PowerShell で:

reg query "HKLM\SYSTEM\CurrentControlSet\Enum\PCI" /s /v DevicePolicy
reg query "HKLM\SYSTEM\CurrentControlSet\Enum\PCI" /s /v AssignmentSetOverride

英語版の Windows では End of search: 0 match(es) found. と表示され、これはオーバーライドを持つデバイスがない、つまり Windows の既定の状態であることを意味します。一致したものは、見つかったキーの下に表示され、そのパスの PCI の部分でデバイスがわかります。

PowerShell で、ネットワーク アダプターについて:

Get-NetAdapterAdvancedProperty -Name "*" -RegistryKeyword "*FlowControl","*InterruptModeration","*RscIPv4","*RscIPv6" -AllProperties

これは、「インターネット」ページのボックスが書き込める 4 つのキーワードについて、各アダプターの現在の設定を一覧表示します。あるキーワードで表示されないアダプターはそれを宣言しておらず、ボックスはそこに何も書き込みません。

もう一度測定する

同じ方法、同じ 12 秒、同じマシンで。ページは前回の実行と比較し、5% 未満の変化は改善ではなく「変化なし」として報告します。手の動きは毎回違うので、何も変えていないマシンでも 2 回の実行は数パーセント違うからです。

ドライバーの行が下がったのにカクつきが変わらなかったなら、本当のことが 1 つわかりました: これは原因ではなかったということです。残りのリストはWindows 11 でゲームがカクつく理由にあります。ガクッと止まるのではなく、フレーム レートが下がったまま戻らないのであれば、そもそもこれではありません。そちらのリストはゲーム中の急な FPS 低下です。

関連

CS2 をプレイしていますか? 今でも効果がある起動オプションと、ビデオ設定のどの項目が実際にフレーム レートを左右するか: CS2 のカクつきと低 FPS を直す方法: 測定に基づくチェックリスト

w0a は、指示されるまで Windows の設定を変更しません。また調整は、新しい値を書き込む前に元の値を保存します。 通知を受け取る

このページは役に立ちましたか?

何が足りなかったか、何がうまくいかなかったかを教えてください。いただいた内容はすべて読んでいます。

送信されるのは、入力した内容とこのページの名前だけです。サーバーは不正利用を防ぐために接続元の IP アドレスも記録し、報告と一緒に削除します。16 歳未満の方は、この欄を使わないでください。 プライバシー ポリシー

このページで解決しなかった場合は、ご連絡ください。どの記事を読んだかを書いていただければ、その記事を修正します。