Windows 11 25H2 中的 DPC 與 Kernel Executive worker
本頁內容
DpcQueueDepth、worker limits 與 watchdog 參數這一組,常被視為一套通用的延遲微調。實際上它們是核心的內部限制與防護機制。只有在特定的 DPC 佇列、處理器數量、驅動程式類型或 worker 錯誤下,其效果才會顯現。
檢查了核心會讀取哪些 DPC、worker threads 與 watchdog 限制、這些值如何被正規化,以及這些機制實際套用於何處。
Windows 11 25H2 build 26200.9168,分支 Session Manager\Kernel 與 Session Manager\Executive。硬體相依功能與特定驅動程式不在測量範圍內。
ntoskrnl.exe 靜態分析:尋找 readers 與消費者、檢查數值範圍與正規化;與 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 period |
DpcCumulativeSoftTimeout |
REG_DWORD |
120000 於受研究的組建中 |
累積的 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 路徑。
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 period。分支 Kernel 與 Executive 不可互換。
已確認的事項
Section titled “已確認的事項”- 受研究組建之
ntoskrnl.exe中參數的 readers 與消費者。 - 預設值與正規化邊界,包括 watchdog 參數之間的相依性。
- 分支
Kernel與Executive的區分:鄰近機碼中的同名項目不會被套用。
未確認的事項
Section titled “未確認的事項”- 變更參數對 FPS、延遲或回應性的影響。
- 在沒有已確認的 DPC 佇列或 worker 問題時,變更限制的效益。
不要盲目變更這些參數:沒有 ETW/WPR 追蹤就無法確定 backlog 的原因。對工作系統而言,請保持 watchdog 啟用,並將這些參數用於診斷,而非當作一套最佳化組合。
請還原標準值或刪除選用項目。核心參數會在下次 Windows 開機時套用。
Readers 與 consumers 已在 ntoskrnl.exe Windows 11 25H2 build 26200.9168 中檢查。不公開 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,新增實用效益的邊界。
