DPC and Kernel Executive workers in Windows 11 25H2
On this page
Short answer
Section titled “Short answer”The DpcQueueDepth group, worker limits and watchdog parameters are often perceived as a set of universal latency tweaks. In reality, these are internal limits and protective mechanisms of the kernel. Their effect only manifests with a specific DPC queue, processor count, driver type or worker failure.
What was checked
Section titled “What was checked”We checked which DPC limits, worker threads and watchdog values the kernel reads, how the values are normalized, and where these mechanisms are actually applied.
Scope of research
Section titled “Scope of research”Windows 11 25H2 build 26200.9168, branches Session Manager\Kernel and Session Manager\Executive. Hardware-dependent features and specific drivers were not part of the measurements.
Methodology
Section titled “Methodology”Static analysis of ntoskrnl.exe: searching for readers and consumers, checking value ranges and normalization; cross-checking against public Microsoft documentation.
Canonical path and values
Section titled “Canonical path and values”DPC and watchdog path:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel
| Value | Type | Default/normalization | What it controls |
|---|---|---|---|
DpcQueueDepth |
REG_DWORD |
4 |
DPC queue depth |
MinimumDpcRate |
REG_DWORD |
3 |
minimum DPC processing rate |
IdealDpcRate |
REG_DWORD |
20 |
target DPC rate |
AdjustDpcThreshold |
REG_DWORD |
20 |
DPC policy adaptation threshold |
ThreadDpcEnable |
REG_DWORD |
1 |
thread-DPC processing |
DpcWatchdogPeriod |
REG_DWORD |
120000 |
DPC watchdog period |
DpcCumulativeSoftTimeout |
REG_DWORD |
120000 in the build studied |
accumulated soft budget |
PassiveWatchdogTimeout |
REG_DWORD |
300 seconds |
passive-level watchdog under KD |
ForceIdleGracePeriod |
REG_DWORD |
5 seconds |
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, range 1..31 |
virtual processor work priority |
AlwaysTrackIoBoosting |
REG_DWORD |
0 |
diagnostic I/O boost tracking |
Kernel Executive workers path:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Executive
| Value | Type | Default/normalization | What it controls |
|---|---|---|---|
AdditionalCriticalWorkerThreads |
REG_DWORD |
0, clamp 0..100 |
additional critical workers |
AdditionalDelayedWorkerThreads |
REG_DWORD |
0, clamp 0..100 |
delayed workers |
MaximumKernelWorkerThreads |
REG_DWORD |
4096, 32..16384 |
upper limit of kernel workers |
ForceEnableMutantAutoboost |
REG_DWORD |
0 |
mutant autoboost |
WorkerThreadTimeoutInSeconds |
REG_DWORD |
600, 60..3600 |
worker timeout |
Session Manager\Kernel and Session Manager\Executive are different configuration branches. For each value, the path that the kernel reader opens in the given build matters.
DPC queue and rates
Section titled “DPC queue and rates”The kernel uses DpcQueueDepth, MinimumDpcRate, IdealDpcRate and AdjustDpcThreshold to control the queue and adapt DPC processing. The verified defaults 4/3/20/20 already match the stock state of Windows 11 25H2; rewriting these numbers changes nothing.
Usefulness: these parameters can be useful when analyzing a specific DPC backlog, but without an ETW/WPR trace, changing them blindly does not diagnose the cause. A large queue can postpone processing and increase the latency tail.
Thread DPC and worker limits
Section titled “Thread DPC and worker limits”ThreadDpcEnable=1 enables the threaded-DPC infrastructure, 0 returns work to the normal DIRQL path and can lengthen interrupt-off windows. MaximumKernelWorkerThreads limits the overall kernel worker pool. AdditionalCriticalWorkerThreads and AdditionalDelayedWorkerThreads are added to the base pools: on client Windows these are respectively 5 critical and 7 delayed workers before the override is applied.
More threads do not mean less latency: additional workers consume stack, scheduler time and cache resources, while the queue may be limited by another component. AdditionalDelayedWorkerThreads=32 does add delayed workers, but there is no measured universal gain.
Watchdog and timeout
Section titled “Watchdog and timeout”DpcCumulativeSoftTimeout limits the accumulated DPC time. DpcWatchdogPeriod=0 is allowed and disables this watchdog; any non-zero value below 2000 becomes 2000 ms. PassiveWatchdogTimeout is used only when the kernel debugger is enabled, so on a normal system this timer is not active even with the stock 300 seconds. WorkerThreadTimeoutInSeconds limits a hung worker operation.
DpcCumulativeSoftTimeout has a lower bound of 2000 ms and cannot exceed DpcWatchdogPeriod. To get the value 240000, the watchdog period must also be 240000. WorkerThreadTimeoutInSeconds is normalized to the range 60..3600 seconds; writing 0 does not disable the timeout but results in the minimum value.
Disabling the protective timeout removes diagnostics but does not fix the cause of the block. For a production system, the watchdog is part of the mechanism for detecting faulty drivers.
Kernel Executive policy
Section titled “Kernel Executive policy”ForceEnableMutantAutoboost is in branch Executive, while ForceIdleGracePeriod, PerfIsoEnabled, CacheIsoBitmap, SchedulerAssistThreadFlagOverride, VpThreadSystemWorkPriority and AlwaysTrackIoBoosting are read from branch Kernel. This distinction is critical: a same-named entry in the neighboring subkey is not applied.
CacheIsoBitmap is used only with Intel Resource Director/CAT support; without CAT the value does not create isolation. SchedulerAssistThreadFlagOverride=0 and 1 leave automatic enabling in place, 2 forcibly disables the branch. VpThreadSystemWorkPriority allows 1..31, otherwise it is reset to 1; the default is 30, and 31 is merely the upper bound. AlwaysTrackIoBoosting=1 enables diagnostic allocation and stack capture on boost paths, rather than keeping I/O priority elevated.
Usefulness: without a confirmed consumer, the effect is usually absent or too small for a practical decision. Such values are useful as the subject of separate kernel diagnostics, not as a general optimization set.
Results
Section titled “Results”The verified defaults 4/3/20/20 match the stock state of Windows 11 25H2. Additional workers are zero by default, the upper limit of kernel workers is 4096 with a range of 32..16384. Watchdog parameters are normalized: a value below 2000 ms becomes 2000, and DpcCumulativeSoftTimeout does not exceed the watchdog period. The Kernel and Executive branches are not interchangeable.
What is confirmed
Section titled “What is confirmed”- Readers and consumers of the parameters in
ntoskrnl.exeof the build studied. - Default values and normalization bounds, including the dependencies between watchdog parameters.
- The separation of the
KernelandExecutivebranches: a same-named entry in the neighboring subkey is not applied.
What is not confirmed
Section titled “What is not confirmed”- The effect of changing the parameters on FPS, latency or responsiveness.
- The benefit of changing the limits without a confirmed DPC queue or worker problem.
Practical conclusion
Section titled “Practical conclusion”Do not change these parameters blindly: without an ETW/WPR trace, the cause of the backlog cannot be established. For a working system, keep the watchdog enabled, and use the parameters for diagnostics rather than as an optimization set.
Restoring the state
Section titled “Restoring the state”Return the stock values or delete the optional entries. Kernel parameters are applied on the next Windows boot.
Sources and limitations
Section titled “Sources and limitations”Readers and consumers were verified in ntoskrnl.exe Windows 11 25H2 build 26200.9168. No offsets or pseudocode are published. End-user metrics were not part of this series.
- DPCs and threads, Microsoft Learn, checked 2026-09-01.
- Bug checks 0x133 DPC_WATCHDOG_VIOLATION, Microsoft Learn, checked 2026-09-01.
For how to reproduce the dynamic part of the observations, see How to check it yourself.
The research and the tools used belong to the BoosterX developer, so the developer has a direct interest in the results. The methodology and scope are described above, and the conclusions can be verified against open data and the public sources listed.
Public sources checked: 2026-09-02.
Change history
Section titled “Change history”- 2026-09-20: the “Results” section was moved to the mandatory position before “Restoring the state”; a conflict-of-interest disclaimer and a link to self-verification of the dynamic observations were added to the methodology.
- 2026-09-02: first publication; readers, defaults and clamps confirmed, bounds of practical usefulness added.
