Przejdź do głównej zawartości

DPC i wątki Kernel Executive w Windows 11 25H2

Na tej stronie

Grupa DpcQueueDepth, limitów workerów i parametrów watchdoga jest często postrzegana jako zestaw uniwersalnych tweaków na opóźnienia. W rzeczywistości są to wewnętrzne limity i mechanizmy ochronne jądra. Ich efekt ujawnia się tylko przy konkretnej kolejce DPC, liczbie procesorów, typie sterownika lub błędzie workera.

Sprawdzano, jakie limity DPC, wątków workerów i watchdoga odczytuje jądro, jak normalizowane są wartości i gdzie te mechanizmy są rzeczywiście stosowane.

Windows 11 25H2 build 26200.9168, gałęzie Session Manager\Kernel i Session Manager\Executive. Funkcje zależne od sprzętu i konkretne sterowniki nie wchodziły w zakres pomiarów.

Analiza statyczna ntoskrnl.exe: wyszukiwanie readers i konsumentów, sprawdzanie zakresów i normalizacji wartości; weryfikacja z publiczną dokumentacją Microsoft.

Ścieżka DPC i watchdoga:

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

Value Type Default/normalization Co kontroluje
DpcQueueDepth REG_DWORD 4 głębokość kolejki DPC
MinimumDpcRate REG_DWORD 3 minimalna częstotliwość przetwarzania DPC
IdealDpcRate REG_DWORD 20 docelowa częstotliwość DPC
AdjustDpcThreshold REG_DWORD 20 próg adaptacji polityki DPC
ThreadDpcEnable REG_DWORD 1 przetwarzanie thread-DPC
DpcWatchdogPeriod REG_DWORD 120000 okres watchdoga DPC
DpcCumulativeSoftTimeout REG_DWORD 120000 w badanej kompilacji skumulowany soft budget
PassiveWatchdogTimeout REG_DWORD 300 sekund watchdog poziomu passive przy KD
ForceIdleGracePeriod REG_DWORD 5 sekund okres karencji force-idle
PerfIsoEnabled REG_DWORD 0 izolacja wydajności
CacheIsoBitmap REG_DWORD 0 maska Intel CAT L3
SchedulerAssistThreadFlagOverride REG_DWORD 0 nadpisanie scheduler assist
VpThreadSystemWorkPriority REG_DWORD 30, zakres 1..31 priorytet pracy wirtualnego procesora
AlwaysTrackIoBoosting REG_DWORD 0 diagnostyczne śledzenie I/O boost

Ścieżka Kernel Executive workers:

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

Value Type Default/normalization Co kontroluje
AdditionalCriticalWorkerThreads REG_DWORD 0, clamp 0..100 dodatkowe critical workers
AdditionalDelayedWorkerThreads REG_DWORD 0, clamp 0..100 delayed workers
MaximumKernelWorkerThreads REG_DWORD 4096, 32..16384 górny limit kernel workers
ForceEnableMutantAutoboost REG_DWORD 0 mutant autoboost
WorkerThreadTimeoutInSeconds REG_DWORD 600, 60..3600 timeout workera

Session Manager\Kernel i Session Manager\Executive są różnymi gałęziami konfiguracji. Dla każdej wartości istotna jest ścieżka, którą otwiera reader jądra w danej kompilacji.

Jądro używa DpcQueueDepth, MinimumDpcRate, IdealDpcRate i AdjustDpcThreshold do kontroli kolejki i adaptacji przetwarzania DPC. Sprawdzone defaults 4/3/20/20 już pokrywają się ze standardowym stanem Windows 11 25H2; ponowny zapis tych liczb niczego nie zmienia.

Przydatność: te parametry mogą być przydatne przy analizie konkretnego backlogu DPC, ale bez tracy ETW/WPR zmiana na ślepo nie zdiagnozuje przyczyny. Duża kolejka może odroczyć przetwarzanie i zwiększyć ogon opóźnienia.

ThreadDpcEnable=1 włącza infrastrukturę threaded-DPC, 0 przywraca pracę do zwykłej ścieżki DIRQL i może wydłużyć okna interrupt-off. MaximumKernelWorkerThreads ogranicza wspólną pulę kernel workers. AdditionalCriticalWorkerThreads i AdditionalDelayedWorkerThreads są dodawane do pul bazowych: na klienckiej Windows to odpowiednio 5 critical i 7 delayed workers przed zastosowaniem override.

Więcej wątków nie oznacza mniejszego opóźnienia: dodatkowe workery zużywają stack, czas schedulera i zasoby cache, a kolejka może być ograniczona przez inny komponent. AdditionalDelayedWorkerThreads=32 rzeczywiście dodaje delayed workers, ale nie ma zmierzonego uniwersalnego zysku.

DpcCumulativeSoftTimeout ogranicza skumulowany czas DPC. DpcWatchdogPeriod=0 jest dopuszczalne i wyłącza ten watchdog; każda niezerowa wartość poniżej 2000 staje się 2000 ms. PassiveWatchdogTimeout jest używane tylko przy włączonym kernel debugger, więc na zwykłym systemie ten timer nie jest aktywny nawet przy standardowych 300 sekundach. WorkerThreadTimeoutInSeconds ogranicza zawieszenie operacji workera.

DpcCumulativeSoftTimeout ma dolną granicę 2000 ms i nie może przekroczyć DpcWatchdogPeriod. Aby uzyskać wartość 240000, okres watchdoga również musi wynosić 240000. WorkerThreadTimeoutInSeconds jest normalizowane do zakresu 60..3600 sekund; zapis 0 nie wyłącza timeoutu, a prowadzi do wartości minimalnej.

Wyłączenie ochronnego timeoutu usuwa diagnostykę, ale nie naprawia przyczyny blokady. Dla systemu produkcyjnego watchdog jest częścią mechanizmu wykrywania wadliwych sterowników.

ForceEnableMutantAutoboost znajduje się w gałęzi Executive, a ForceIdleGracePeriod, PerfIsoEnabled, CacheIsoBitmap, SchedulerAssistThreadFlagOverride, VpThreadSystemWorkPriority i AlwaysTrackIoBoosting są odczytywane z gałęzi Kernel. Ta różnica jest krytyczna: wpis o tej samej nazwie w sąsiednim podkluczu nie jest stosowany.

CacheIsoBitmap jest używane tylko przy wsparciu Intel Resource Director/CAT; bez CAT wartość nie tworzy izolacji. SchedulerAssistThreadFlagOverride=0 i 1 pozostawiają automatyczne włączanie, 2 wymusza wyłączenie gałęzi. VpThreadSystemWorkPriority dopuszcza 1..31, w przeciwnym razie jest resetowane do 1; default 30, a 31 jest jedynie górną granicą. AlwaysTrackIoBoosting=1 włącza diagnostyczne allocation i stack-capture na boost paths, a nie utrzymuje podwyższonego priorytetu I/O.

Przydatność: bez potwierdzonego efektu konsumenckiego wpływ jest zwykle nieobecny lub zbyt mały dla praktycznej decyzji. Takie wartości są przydatne jako przedmiot osobnej diagnostyki jądra, a nie jako ogólny zestaw optymalizacji.

Sprawdzone defaults 4/3/20/20 pokrywają się ze standardowym stanem Windows 11 25H2. Dodatkowe workery domyślnie wynoszą zero, górny limit kernel workers — 4096 z zakresem 32..16384. Parametry watchdoga są normalizowane: wartość poniżej 2000 ms staje się 2000, a DpcCumulativeSoftTimeout nie przekracza okresu watchdoga. Gałęzie Kernel i Executive nie są wzajemnie wymienne.

  • Readers i konsumenci parametrów w ntoskrnl.exe badanej kompilacji.
  • Wartości domyślne i granice normalizacji, w tym zależności między parametrami watchdoga.
  • Rozdzielenie gałęzi Kernel i Executive: wpis o tej samej nazwie w sąsiednim podkluczu nie jest stosowany.
  • Wpływu zmiany parametrów na FPS, opóźnienie lub responsywność.
  • Korzyści ze zmiany limitów bez potwierdzonego problemu z kolejką DPC lub workerem.

Nie zmieniaj tych parametrów na ślepo: bez tracy ETW/WPR nie można ustalić przyczyny backlogu. Dla działającego systemu pozostaw watchdog włączony, a parametry wykorzystuj do diagnostyki, a nie jako zestaw optymalizacji.

Przywróć standardowe wartości lub usuń opcjonalne wpisy. Parametry jądra są stosowane przy następnym rozruchu Windows.

Readers i consumers sprawdzono w ntoskrnl.exe Windows 11 25H2 build 26200.9168. Offsety ani pseudokod nie są publikowane. Końcowe metryki użytkownika nie wchodziły w zakres tej serii.

Jak powtórzyć dynamiczną część obserwacji — zobacz Jak sprawdzić samodzielnie.

Badanie i użyte narzędzia należą do dewelopera BoosterX, dlatego deweloper ma bezpośredni interes w wynikach. Metodyka i granice stosowalności opisano powyżej, a wnioski można zweryfikować na podstawie otwartych danych i wymienionych publicznych źródeł.

Publiczne źródła sprawdzono: 2026-09-02.

  • 2026-09-20: sekcja «Wyniki» przeniesiona na obowiązkowe miejsce przed «Przywracaniem stanu»; dodano disclaimer o konflikcie interesów i link do samodzielnej weryfikacji dynamicznych obserwacji w metodyce.
  • 2026-09-02: pierwsza publikacja; potwierdzono readers, defaults i clamps, dodano granice praktycznej przydatności.