DPC a Kernel Executive workery v Windows 11 25H2
Na této stránce
Krátká odpověď
Sekce “Krátká odpověď”Skupina DpcQueueDepth, worker limits a watchdog parametrů je často vnímána jako sada univerzálních latency tweaků. Ve skutečnosti jde o interní limity a ochranné mechanismy jádra. Jejich efekt se projeví pouze při konkrétní frontě DPC, počtu procesorů, typu ovladače nebo chybě workeru.
Co se zkoumalo
Sekce “Co se zkoumalo”Zkoumalo se, které limity DPC, worker threads a watchdog jádro čte, jak se hodnoty normalizují a kde se tyto mechanismy skutečně uplatňují.
Oblast výzkumu
Sekce “Oblast výzkumu”Windows 11 25H2 build 26200.9168, větve Session Manager\Kernel a Session Manager\Executive. Na hardwaru závislé funkce a konkrétní ovladače nebyly do měření zahrnuty.
Metodika
Sekce “Metodika”Statická analýza ntoskrnl.exe: hledání readers a konzumentů, kontrola rozsahů a normalizace hodnot; ověření proti veřejné dokumentaci Microsoft.
Kanonická cesta a hodnoty
Sekce “Kanonická cesta a hodnoty”Cesta DPC a watchdog:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel
| Value | Type | Default/normalization | Co řídí |
|---|---|---|---|
DpcQueueDepth |
REG_DWORD |
4 |
hloubka DPC queue |
MinimumDpcRate |
REG_DWORD |
3 |
minimální frekvence DPC zpracování |
IdealDpcRate |
REG_DWORD |
20 |
cílová DPC rate |
AdjustDpcThreshold |
REG_DWORD |
20 |
práh adaptace DPC policy |
ThreadDpcEnable |
REG_DWORD |
1 |
thread-DPC processing |
DpcWatchdogPeriod |
REG_DWORD |
120000 |
perioda DPC watchdog |
DpcCumulativeSoftTimeout |
REG_DWORD |
120000 ve zkoumaném buildu |
nahromaděný soft budget |
PassiveWatchdogTimeout |
REG_DWORD |
300 sekund |
passive-level watchdog při KD |
ForceIdleGracePeriod |
REG_DWORD |
5 sekund |
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, rozsah 1..31 |
priorita práce virtuálního procesoru |
AlwaysTrackIoBoosting |
REG_DWORD |
0 |
diagnostické sledování I/O boost |
Cesta Kernel Executive workers:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Executive
| Value | Type | Default/normalization | Co řídí |
|---|---|---|---|
AdditionalCriticalWorkerThreads |
REG_DWORD |
0, clamp 0..100 |
dodatečné critical workers |
AdditionalDelayedWorkerThreads |
REG_DWORD |
0, clamp 0..100 |
delayed workers |
MaximumKernelWorkerThreads |
REG_DWORD |
4096, 32..16384 |
horní limit kernel workers |
ForceEnableMutantAutoboost |
REG_DWORD |
0 |
mutant autoboost |
WorkerThreadTimeoutInSeconds |
REG_DWORD |
600, 60..3600 |
worker timeout |
Session Manager\Kernel a Session Manager\Executive jsou různé větve konfigurace. Pro každou hodnotu je důležitá cesta, kterou reader jádra v daném buildu otevírá.
DPC queue a rates
Sekce “DPC queue a rates”Jádro používá DpcQueueDepth, MinimumDpcRate, IdealDpcRate a AdjustDpcThreshold pro kontrolu fronty a adaptaci DPC processing. Ověřené defaults 4/3/20/20 již odpovídají standardnímu stavu Windows 11 25H2; opětovný zápis těchto čísel nic nemění.
Užitečnost: tyto parametry mohou být užitečné při rozboru konkrétního DPC backlogu, ale bez ETW/WPR trasy změna naslepo nediagnostikuje příčinu. Velká fronta může odložit zpracování a prodloužit chvost latence.
Thread DPC a worker limits
Sekce “Thread DPC a worker limits”ThreadDpcEnable=1 zapíná threaded-DPC infrastructure, 0 vrací práci do běžné DIRQL path a může prodloužit okna interrupt-off. MaximumKernelWorkerThreads omezuje celkový fond kernel workers. AdditionalCriticalWorkerThreads a AdditionalDelayedWorkerThreads se přičítají k základním fondům: na klientském Windows to je postupně 5 critical a 7 delayed workers před uplatněním override.
Více vláken neznamená menší latenci: dodatečné workers spotřebovávají stack, scheduler time a cache resources, a fronta může být omezena jinou komponentou. AdditionalDelayedWorkerThreads=32 skutečně přidává delayed workers, ale změřený univerzální přínos neexistuje.
Watchdog a timeout
Sekce “Watchdog a timeout”DpcCumulativeSoftTimeout omezuje nahromaděný čas DPC. DpcWatchdogPeriod=0 je přípustná a vypíná tento watchdog; jakákoli nenulová hodnota pod 2000 se stává 2000 ms. PassiveWatchdogTimeout se používá pouze při zapnutém kernel debuggeru, proto na běžném systému tento timer není aktivní ani při standardních 300 sekundách. WorkerThreadTimeoutInSeconds omezuje zaseknutí worker operation.
DpcCumulativeSoftTimeout má dolní hranici 2000 ms a nemůže překročit DpcWatchdogPeriod. Aby bylo dosaženo hodnoty 240000, musí být také watchdog period 240000. WorkerThreadTimeoutInSeconds se normalizuje do rozsahu 60..3600 sekund; zápis 0 nevypíná timeout, ale vede k minimální hodnotě.
Vypnutí ochranného timeoutu odstraňuje diagnostiku, ale neopravuje příčinu zablokování. Pro production systém je watchdog součástí mechanismu odhalování vadných ovladačů.
Kernel Executive policy
Sekce “Kernel Executive policy”ForceEnableMutantAutoboost se nachází ve větvi Executive, zatímco ForceIdleGracePeriod, PerfIsoEnabled, CacheIsoBitmap, SchedulerAssistThreadFlagOverride, VpThreadSystemWorkPriority a AlwaysTrackIoBoosting se čtou z větve Kernel. Tento rozdíl je kritický: stejnojmenný zápis v sousedním podklíči se neuplatní.
CacheIsoBitmap se používá pouze při podpoře Intel Resource Director/CAT; bez CAT hodnota nevytváří izolaci. SchedulerAssistThreadFlagOverride=0 a 1 ponechávají automatické zapnutí, 2 násilně vypíná větev. VpThreadSystemWorkPriority povoluje 1..31, jinak se resetuje na 1; default 30, a 31 je pouze horní hranice. AlwaysTrackIoBoosting=1 zapíná diagnostické allocation a stack-capture na boost paths, a nedrží I/O prioritu zvýšenou.
Užitečnost: bez potvrzeného consumer efekt obvykle chybí nebo je příliš malý pro praktické rozhodnutí. Takové hodnoty jsou užitečné jako předmět samostatné kernel diagnostiky, nikoli jako obecná sada optimalizace.
Výsledky
Sekce “Výsledky”Ověřené defaults 4/3/20/20 odpovídají standardnímu stavu Windows 11 25H2. Dodatečné workers jsou ve výchozím stavu rovny nule, horní limit kernel workers — 4096 s rozsahem 32..16384. Watchdog parametry se normalizují: hodnota pod 2000 ms se stává 2000, a DpcCumulativeSoftTimeout nepřekračuje periodu watchdog. Větve Kernel a Executive nejsou vzájemně zaměnitelné.
Co je potvrzeno
Sekce “Co je potvrzeno”- Readers a konzumenti parametrů v
ntoskrnl.exezkoumaného buildu. - Výchozí hodnoty a hranice normalizace, včetně závislostí mezi watchdog parametry.
- Oddělení větví
KernelaExecutive: stejnojmenný zápis v sousedním podklíči se neuplatní.
Co není potvrzeno
Sekce “Co není potvrzeno”- Vliv změny parametrů na FPS, latenci nebo odezvu.
- Přínos změny limitů bez potvrzeného problému s frontou DPC nebo workerem.
Praktický závěr
Sekce “Praktický závěr”Neměňte tyto parametry naslepo: bez ETW/WPR trasy nelze příčinu backlogu určit. Pro pracovní systém ponechte watchdog zapnutý a parametry používejte pro diagnostiku, nikoli jako sadu optimalizace.
Obnovení stavu
Sekce “Obnovení stavu”Vraťte standardní hodnoty nebo odstraňte volitelné zápisy. Parametry jádra se uplatní při příštím spuštění Windows.
Zdroje a omezení
Sekce “Zdroje a omezení”Readers a consumers byly ověřeny v ntoskrnl.exe Windows 11 25H2 build 26200.9168. Offsety nebo pseudokód se nezveřejňují. Koncové uživatelské metriky nebyly do této série zahrnuty.
- DPCs and threads, Microsoft Learn, ověřeno 2026-09-01.
- Bug checks 0x133 DPC_WATCHDOG_VIOLATION, Microsoft Learn, ověřeno 2026-09-01.
Jak zopakovat dynamickou část pozorování — viz Jak ověřit samostatně.
Výzkum a použité nástroje patří vývojáři BoosterX, proto má vývojář přímý zájem na výsledcích. Metodika a hranice použitelnosti jsou popsány výše a závěry lze ověřit podle otevřených dat a uvedených veřejných zdrojů.
Veřejné zdroje ověřeny: 2026-09-02.
Historie změn
Sekce “Historie změn”- 2026-09-20: sekce „Výsledky“ přesunuta na povinné místo před „Obnovení stavu“; přidán disclaimer o střetu zájmů a odkaz na samostatné ověření dynamických pozorování v metodice.
- 2026-09-02: první publikace; potvrzeny readers, defaults a clamps, přidány hranice praktického přínosu.
