Windows 11 25H2 中的 DPC 与 Kernel Executive 工作线程
本页内容
DpcQueueDepth 组、worker limits 和 watchdog 参数常被视为一套通用的延迟 tweaks。实际上它们是内核的内部限制和保护机制。其效果仅在特定的 DPC 队列、处理器数量、驱动程序类型或 worker 错误下才会显现。
我们检查了什么
Section titled “我们检查了什么”我们检查了内核读取哪些 DPC、worker threads 和 watchdog 限制,这些值如何被规范化,以及这些机制实际应用于何处。
Windows 11 25H2 build 26200.9168,分支 Session Manager\Kernel 和 Session Manager\Executive。硬件相关功能和特定驱动程序未纳入测量。
ntoskrnl.exe 静态分析:查找 readers 和 consumers,检查取值范围和值规范化;与 Microsoft 公开文档进行核对。
规范路径和值
Section titled “规范路径和值”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 周期 |
DpcCumulativeSoftTimeout |
REG_DWORD |
120000 在所研究的 build 中 |
累积 soft budget |
PassiveWatchdogTimeout |
REG_DWORD |
300 秒 |
KD 时的 passive-level watchdog |
ForceIdleGracePeriod |
REG_DWORD |
5 秒 |
force-idle 宽限期 |
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 工作优先级 |
AlwaysTrackIoBoosting |
REG_DWORD |
0 |
诊断性 I/O boost 跟踪 |
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 在此 build 中打开的是哪个路径。
DPC queue 和 rates
Section titled “DPC queue 和 rates”内核使用 DpcQueueDepth、MinimumDpcRate、IdealDpcRate 和 AdjustDpcThreshold 来控制队列和 DPC processing 的自适应。所检查的 defaults 4/3/20/20 已与 Windows 11 25H2 的默认状态一致;重复写入这些数字不会改变任何东西。
实用性: 这些参数在分析特定 DPC backlog 时可能有用,但如果没有 ETW/WPR 跟踪,盲目修改无法诊断原因。较大的队列可能会推迟处理并增加延迟尾部。
Thread DPC 和 worker limits
Section titled “Thread DPC 和 worker limits”ThreadDpcEnable=1 启用 threaded-DPC infrastructure,0 将工作返回到普通 DIRQL path,并可能延长 interrupt-off 窗口。MaximumKernelWorkerThreads 限制 kernel workers 的总池。AdditionalCriticalWorkerThreads 和 AdditionalDelayedWorkerThreads 会添加到基础池:在客户端 Windows 上,在应用 override 之前分别为 5 个 critical 和 7 个 delayed workers。
更多线程并不意味着更低延迟:额外的 workers 会消耗 stack、scheduler time 和 cache resources,而队列可能受另一个组件限制。AdditionalDelayedWorkerThreads=32 确实会添加 delayed workers,但没有测量到通用的收益。
Watchdog 和 timeout
Section titled “Watchdog 和 timeout”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 是检测故障驱动程序机制的一部分。
Kernel Executive policy
Section titled “Kernel Executive policy”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 周期。分支 Kernel 和 Executive 不可互换。
已确认的内容
Section titled “已确认的内容”- 所研究 build 的
ntoskrnl.exe中参数的 readers 和 consumers。 - 默认值和规范化边界,包括 watchdog 参数之间的依赖关系。
- 分支
Kernel和Executive的区分:相邻子项中的同名记录不会被应用。
未确认的内容
Section titled “未确认的内容”- 修改参数对 FPS、延迟或响应速度的影响。
- 在没有确认的 DPC 队列或 worker 问题的情况下修改限制的收益。
不要盲目修改这些参数:没有 ETW/WPR 跟踪就无法确定 backlog 的原因。对于工作系统,请保持 watchdog 启用,并将这些参数用于诊断,而不是作为一套优化。
恢复默认值或删除可选记录。内核参数会在下次 Windows 启动时应用。
Readers 和 consumers 已在 Windows 11 25H2 build 26200.9168 的 ntoskrnl.exe 中检查。不发布 offsets 或伪代码。最终用户指标未纳入本系列。
- DPCs and threads,Microsoft Learn,检查于 2026-09-01。
- Bug checks 0x133 DPC_WATCHDOG_VIOLATION,Microsoft Learn,检查于 2026-09-01。
如何复现观察的动态部分——参见如何自行检查。
研究和所使用的工具属于 BoosterX 开发者,因此开发者对结果有直接利益。方法和适用范围已在上文描述,结论可通过公开数据和所列公开来源进行验证。
公开来源检查于:2026-09-02。
- 2026-09-20: 将「结果」部分移至「恢复状态」之前的必选位置;在方法中增加了利益冲突免责声明和自行检查动态观察的链接。
- 2026-09-02: 首次发布;确认了 readers、defaults 和 clamps,增加了实际收益的边界。
