コンテンツにスキップ

Windows 11 25H2におけるDPCとKernel Executiveワーカー

目次

DpcQueueDepthのグループ、worker limits、watchdogパラメータは、しばしば汎用的なlatency tweaksのセットとして受け取られます。実際にはこれらはカーネルの内部リミットと保護メカニズムです。その効果は、特定のDPCキュー、プロセッサ数、ドライバーの種類、またはworkerのエラーがある場合にのみ現れます。

カーネルがどのDPC、worker threads、watchdogのリミットを読み取るか、値がどのように正規化されるか、そしてこれらのメカニズムが実際にどこで適用されるかを確認しました。

Windows 11 25H2 build 26200.9168、ブランチSession Manager\KernelおよびSession Manager\Executive。ハードウェア依存の機能と特定のドライバーは測定に含まれていません。

ntoskrnl.exeの静的解析:readersとconsumersの検索、値の範囲と正規化の確認、Microsoftの公開ドキュメントとの照合。

DPCとwatchdogのパス:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel

Value Type Default/normalization 何を制御するか
DpcQueueDepth REG_DWORD 4 DPC queueの深さ
MinimumDpcRate REG_DWORD 3 DPC処理の最小頻度
IdealDpcRate REG_DWORD 20 目標DPC rate
AdjustDpcThreshold REG_DWORD 20 DPC policy適応のしきい値
ThreadDpcEnable REG_DWORD 1 thread-DPC processing
DpcWatchdogPeriod REG_DWORD 120000 DPC watchdog period
DpcCumulativeSoftTimeout REG_DWORD 120000 調査対象ビルドにて 累積soft budget
PassiveWatchdogTimeout REG_DWORD 300 秒 KD時のpassive-level watchdog
ForceIdleGracePeriod REG_DWORD 5 秒 force-idle grace period
PerfIsoEnabled REG_DWORD 0 performance isolation
CacheIsoBitmap REG_DWORD 0 Intel CAT L3 mask
SchedulerAssistThreadFlagOverride REG_DWORD 0 scheduler assist override
VpThreadSystemWorkPriority REG_DWORD 30、範囲1..31 virtual processor work priority
AlwaysTrackIoBoosting REG_DWORD 0 診断用I/O boost tracking

Kernel Executive workersのパス:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Executive

Value Type Default/normalization 何を制御するか
AdditionalCriticalWorkerThreads REG_DWORD 0、clamp 0..100 追加のcritical workers
AdditionalDelayedWorkerThreads REG_DWORD 0、clamp 0..100 delayed workers
MaximumKernelWorkerThreads REG_DWORD 4096、32..16384 kernel workersの上限
ForceEnableMutantAutoboost REG_DWORD 0 mutant autoboost
WorkerThreadTimeoutInSeconds REG_DWORD 600、60..3600 worker timeout

Session Manager\KernelとSession Manager\Executiveは異なる構成ブランチです。各値にとって、そのビルドでカーネルのreaderが開くパスが重要です。

カーネルはDpcQueueDepth、MinimumDpcRate、IdealDpcRate、AdjustDpcThresholdを使用してキューの制御とDPC processingの適応を行います。確認されたdefaults 4/3/20/20はすでにWindows 11 25H2の標準状態と一致しており、これらの数値を再度書き込んでも何も変わりません。

有用性: これらのパラメータは特定のDPC backlogの解析には役立つ可能性がありますが、ETW/WPRトレースなしで盲目的に変更しても原因を診断することはできません。大きなキューは処理を遅延させ、latencyのテールを増加させる可能性があります。

ThreadDpcEnable=1はthreaded-DPC infrastructureを有効にし、0は処理を通常のDIRQL pathに戻し、interrupt-offのウィンドウを延長する可能性があります。MaximumKernelWorkerThreadsはkernel workersの共通プールを制限します。AdditionalCriticalWorkerThreadsとAdditionalDelayedWorkerThreadsは基本プールに追加されます:クライアント版Windowsでは、override適用前はそれぞれ5 criticalおよび7 delayed workersです。

スレッドが多いほどlatencyが低くなるわけではありません:追加のworkersはstack、scheduler time、cache resourcesを消費し、キューは別のコンポーネントによって制限されている可能性があります。AdditionalDelayedWorkerThreads=32は確かにdelayed workersを追加しますが、測定された汎用的な利得はありません。

DpcCumulativeSoftTimeoutは累積DPC時間を制限します。DpcWatchdogPeriod=0は許容され、このwatchdogを無効にします;2000未満の任意の非ゼロ値は2000 msになります。PassiveWatchdogTimeoutはkernel debuggerが有効な場合にのみ使用されるため、通常のシステムでは標準の300秒であってもこのtimerはアクティブではありません。WorkerThreadTimeoutInSecondsはworker operationのハングを制限します。

DpcCumulativeSoftTimeoutには下限2000 msがあり、DpcWatchdogPeriodを超えることはできません。値240000を得るには、watchdog periodも240000でなければなりません。WorkerThreadTimeoutInSecondsは60..3600秒の範囲に正規化されます;0を書き込んでもtimeoutは無効にならず、最小値になります。

保護timeoutを無効にすると診断は失われますが、ブロックの原因は修正されません。productionシステムにとって、watchdogは故障したドライバーを検出するメカニズムの一部です。

ForceEnableMutantAutoboostはブランチExecutiveにあり、ForceIdleGracePeriod、PerfIsoEnabled、CacheIsoBitmap、SchedulerAssistThreadFlagOverride、VpThreadSystemWorkPriority、AlwaysTrackIoBoostingはブランチKernelから読み取られます。この違いは重要です:隣接するサブキーにある同名のエントリは適用されません。

CacheIsoBitmapはIntel Resource Director/CATのサポートがある場合にのみ使用されます;CATなしでは値は分離を生み出しません。SchedulerAssistThreadFlagOverride=0と1は自動有効化を残し、2はブランチを強制的に無効にします。VpThreadSystemWorkPriorityは1..31を許可し、そうでなければ1にリセットされます;defaultは30、31は単なる上限です。AlwaysTrackIoBoosting=1はboost pathsでの診断用allocationとstack-captureを有効にするものであり、I/O priorityを高いまま保持するものではありません。

有用性: 確認されたconsumerなしでは、効果は通常存在しないか、実用的な判断には小さすぎます。このような値は、一般的な最適化セットとしてではなく、個別のkernel診断の対象として有用です。

確認されたdefaults 4/3/20/20はWindows 11 25H2の標準状態と一致します。追加のworkersはデフォルトでゼロ、kernel workersの上限は4096で範囲は32..16384です。Watchdogパラメータは正規化されます:2000 ms未満の値は2000になり、DpcCumulativeSoftTimeoutはwatchdog periodを超えません。ブランチKernelとExecutiveは互換性がありません。

  • 調査対象ビルドのntoskrnl.exeにおけるパラメータのreadersとconsumers。
  • watchdogパラメータ間の依存関係を含む、デフォルト値と正規化の境界。
  • ブランチKernelとExecutiveの分離:隣接するサブキーにある同名のエントリは適用されません。
  • パラメータ変更がFPS、latency、応答性に与える影響。
  • DPCキューまたはworkerに確認された問題がない状態でのリミット変更の有用性。

これらのパラメータを盲目的に変更しないでください:ETW/WPRトレースなしではbacklogの原因を特定できません。稼働中のシステムではwatchdogを有効のままにし、パラメータは最適化セットとしてではなく診断に使用してください。

標準値に戻すか、オプションのエントリを削除してください。カーネルパラメータは次回のWindows起動時に適用されます。

ReadersとconsumersはWindows 11 25H2 build 26200.9168のntoskrnl.exeで確認されました。offsetsや疑似コードは公開されていません。エンドユーザー向けメトリクスはこのシリーズに含まれていません。

観察の動的な部分を再現する方法については、自分で確認する方法を参照してください。

研究と使用されたツールはBoosterXの開発者に帰属するため、開発者は結果に対して直接の利害関係を持ちます。方法論と適用範囲は上記に記載されており、結論は公開データと列挙された公開ソースによって検証できます。

公開ソースの確認日:2026-09-02。

  • 2026-09-20: 「結果」セクションを「状態の復元」の前の必須位置に移動;利益相反に関する免責事項と、方法論における動的観察の自主検証へのリンクを追加。
  • 2026-09-02: 初回公開;readers、defaults、clampsを確認し、実用的な有用性の境界を追加。