Hoppa till innehåll

DPC och Kernel Executive workers i Windows 11 25H2

På den här sidan

Gruppen DpcQueueDepth, worker limits och watchdog-parametrar uppfattas ofta som en uppsättning universella latency tweaks. I själva verket är det interna gränser och skyddsmekanismer i kärnan. Deras effekt visar sig endast vid en specifik DPC-kö, antal processorer, drivrutinstyp eller worker-fel.

Vi undersökte vilka gränser för DPC, worker threads och watchdog som kärnan läser, hur värden normaliseras och var dessa mekanismer faktiskt tillämpas.

Windows 11 25H2 build 26200.9168, grenarna Session Manager\Kernel och Session Manager\Executive. Hårdvaruberoende funktioner och specifika drivrutiner ingick inte i mätningarna.

Statisk analys av ntoskrnl.exe: sökning efter readers och konsumenter, kontroll av intervall och normalisering av värden; avstämning mot Microsofts offentliga dokumentation.

Sökväg för DPC och watchdog:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel

Value Type Default/normalization Vad som styrs
DpcQueueDepth REG_DWORD 4 djup på DPC-kö
MinimumDpcRate REG_DWORD 3 lägsta frekvens för DPC-bearbetning
IdealDpcRate REG_DWORD 20 mål-DPC-rate
AdjustDpcThreshold REG_DWORD 20 tröskel för DPC-policy-adaptation
ThreadDpcEnable REG_DWORD 1 thread-DPC-bearbetning
DpcWatchdogPeriod REG_DWORD 120000 DPC watchdog-period
DpcCumulativeSoftTimeout REG_DWORD 120000 i den undersökta builden ackumulerad soft budget
PassiveWatchdogTimeout REG_DWORD 300 sekunder passive-level watchdog vid KD
ForceIdleGracePeriod REG_DWORD 5 sekunder 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, intervall 1..31 prioritet för virtuell processor-arbete
AlwaysTrackIoBoosting REG_DWORD 0 diagnostisk I/O boost-spårning

Sökväg för Kernel Executive workers:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Executive

Value Type Default/normalization Vad som styrs
AdditionalCriticalWorkerThreads REG_DWORD 0, clamp 0..100 ytterligare kritiska workers
AdditionalDelayedWorkerThreads REG_DWORD 0, clamp 0..100 fördröjda workers
MaximumKernelWorkerThreads REG_DWORD 4096, 32..16384 övre gräns för kernel workers
ForceEnableMutantAutoboost REG_DWORD 0 mutant autoboost
WorkerThreadTimeoutInSeconds REG_DWORD 600, 60..3600 worker timeout

Session Manager\Kernel och Session Manager\Executive är olika konfigurationsgrenar. För varje värde är den sökväg som kärnans reader öppnar i den aktuella builden viktig.

Kärnan använder DpcQueueDepth, MinimumDpcRate, IdealDpcRate och AdjustDpcThreshold för att kontrollera kön och anpassa DPC-bearbetningen. De verifierade defaults 4/3/20/20 överensstämmer redan med standardtillståndet i Windows 11 25H2; att skriva dessa tal igen ändrar ingenting.

Användbarhet: dessa parametrar kan vara användbara vid analys av en specifik DPC-backlog, men utan ETW/WPR-trace diagnostiserar en blind ändring inte orsaken. En stor kö kan skjuta upp bearbetningen och öka fördröjningens svans.

ThreadDpcEnable=1 aktiverar threaded-DPC-infrastruktur, 0 återför arbetet till den vanliga DIRQL-sökvägen och kan förlänga interrupt-off-fönster. MaximumKernelWorkerThreads begränsar den gemensamma poolen för kernel workers. AdditionalCriticalWorkerThreads och AdditionalDelayedWorkerThreads läggs till baspoolerna: på klient-Windows är detta respektive 5 kritiska och 7 fördröjda workers innan override tillämpas.

Fler trådar betyder inte lägre latency: ytterligare workers förbrukar stack, scheduler-tid och cache-resurser, och kön kan begränsas av en annan komponent. AdditionalDelayedWorkerThreads=32 lägger verkligen till fördröjda workers, men det finns ingen uppmätt universell vinst.

DpcCumulativeSoftTimeout begränsar den ackumulerade DPC-tiden. DpcWatchdogPeriod=0 är tillåtet och stänger av denna watchdog; varje nollskilt värde under 2000 blir 2000 ms. PassiveWatchdogTimeout används endast när kernel debugger är aktiverad, så på ett vanligt system är denna timer inte aktiv ens vid standardvärdet 300 sekunder. WorkerThreadTimeoutInSeconds begränsar en hängande worker-operation.

DpcCumulativeSoftTimeout har en nedre gräns på 2000 ms och kan inte överstiga DpcWatchdogPeriod. För att få värdet 240000 måste även watchdog-perioden vara 240000. WorkerThreadTimeoutInSeconds normaliseras till intervallet 60..3600 sekunder; att skriva 0 stänger inte av timeouten utan leder till minimivärdet.

Att stänga av den skyddande timeouten tar bort diagnostiken men åtgärdar inte orsaken till blockeringen. För ett produktionssystem är watchdog en del av mekanismen för att upptäcka felaktiga drivrutiner.

ForceEnableMutantAutoboost finns i grenen Executive, medan ForceIdleGracePeriod, PerfIsoEnabled, CacheIsoBitmap, SchedulerAssistThreadFlagOverride, VpThreadSystemWorkPriority och AlwaysTrackIoBoosting läses från grenen Kernel. Denna skillnad är kritisk: en post med samma namn i den angränsande undernyckeln tillämpas inte.

CacheIsoBitmap används endast med stöd för Intel Resource Director/CAT; utan CAT skapar värdet ingen isolering. SchedulerAssistThreadFlagOverride=0 och 1 lämnar automatisk aktivering, 2 stänger av grenen tvingande. VpThreadSystemWorkPriority tillåter 1..31, annars återställs det till 1; default är 30, och 31 är endast en övre gräns. AlwaysTrackIoBoosting=1 aktiverar diagnostisk allocation och stack-capture på boost-sökvägar, och håller inte I/O-prioriteten förhöjd.

Användbarhet: utan bekräftad consumer-effekt saknas vanligtvis effekt, eller den är för liten för ett praktiskt beslut. Sådana värden är användbara som föremål för separat kernel-diagnostik, inte som en allmän optimeringsuppsättning.

De verifierade defaults 4/3/20/20 överensstämmer med standardtillståndet i Windows 11 25H2. Ytterligare workers är som standard noll, den övre gränsen för kernel workers är 4096 med intervallet 32..16384. Watchdog-parametrarna normaliseras: ett värde under 2000 ms blir 2000, och DpcCumulativeSoftTimeout överstiger inte watchdog-perioden. Grenarna Kernel och Executive är inte utbytbara.

  • Readers och konsumenter av parametrarna i ntoskrnl.exe i den undersökta builden.
  • Standardvärden och normaliseringsgränser, inklusive beroenden mellan watchdog-parametrar.
  • Åtskillnaden mellan grenarna Kernel och Executive: en post med samma namn i den angränsande undernyckeln tillämpas inte.
  • Påverkan av parameterändringar på FPS, fördröjning eller responsivitet.
  • Nyttan av att ändra gränser utan ett bekräftat problem med DPC-kön eller worker.

Ändra inte dessa parametrar blint: utan ETW/WPR-trace kan orsaken till backlog inte fastställas. För ett system i drift, håll watchdog aktiverad och använd parametrarna för diagnostik, inte som en optimeringsuppsättning.

Återställ standardvärdena eller ta bort valfria poster. Kärnparametrar tillämpas vid nästa start av Windows.

Readers och consumers verifierades i ntoskrnl.exe Windows 11 25H2 build 26200.9168. Inga offsets eller pseudokod publiceras. Slutanvändarmätvärden ingick inte i denna serie.

Hur du upprepar den dynamiska delen av observationerna — se Hur du verifierar själv.

Undersökningen och de använda verktygen tillhör utvecklaren av BoosterX, därför har utvecklaren ett direkt intresse av resultaten. Metodiken och tillämpningsgränserna beskrivs ovan, och slutsatserna kan verifieras mot öppna data och de listade offentliga källorna.

Offentliga källor verifierade: 2026-09-02.

  • 2026-09-20: avsnittet «Resultat» flyttat till den obligatoriska platsen före «Återställning av tillstånd»; en intressekonflikt-deklaration och en länk till självständig verifiering av dynamiska observationer har lagts till i metodiken.
  • 2026-09-02: första publiceringen; readers, defaults och clamps bekräftade, gränser för praktisk nytta tillagda.