Přeskočit na obsah

DPC a Kernel Executive workery v Windows 11 25H2

Na této stránce

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.

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í.

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.

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á.

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.

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čů.

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.

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é.

  • Readers a konzumenti parametrů v ntoskrnl.exe zkoumaného buildu.
  • Výchozí hodnoty a hranice normalizace, včetně závislostí mezi watchdog parametry.
  • Oddělení větví Kernel a Executive: stejnojmenný zápis v sousedním podklíči se neuplatní.
  • Vliv změny parametrů na FPS, latenci nebo odezvu.
  • Přínos změny limitů bez potvrzeného problému s frontou DPC nebo workerem.

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.

Vraťte standardní hodnoty nebo odstraňte volitelné zápisy. Parametry jádra se uplatní při příštím spuštění Windows.

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.

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.

  • 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.