Перейти к содержимому

DPC и Kernel Executive workers в Windows 11 25H2

На этой странице

Группа DpcQueueDepth, worker limits и watchdog-параметров часто воспринимается как набор универсальных latency tweaks. На деле это внутренние лимиты и защитные механизмы ядра. Их эффект проявляется только при конкретной очереди DPC, количестве процессоров, типе драйвера или ошибке worker.

Проверяли, какие лимиты DPC, worker threads и watchdog читает ядро, как нормализуются значения и где эти механизмы действительно применяются.

Windows 11 25H2 build 26200.9168, ветки Session Manager\Kernel и Session Manager\Executive. Аппаратно-зависимые функции и конкретные драйверы в измерения не входили.

Статический анализ ntoskrnl.exe: поиск readers и потребителей, проверка диапазонов и нормализации значений; сверка с публичной документацией Microsoft.

Путь 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 секунд passive-level watchdog при KD
ForceIdleGracePeriod REG_DWORD 5 секунд 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, диапазон 1..31 virtual processor work priority
AlwaysTrackIoBoosting REG_DWORD 0 диагностический I/O boost tracking

Путь 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 ядра в данной сборке.

Ядро использует DpcQueueDepth, MinimumDpcRate, IdealDpcRate и AdjustDpcThreshold для контроля очереди и адаптации DPC processing. Проверенные defaults 4/3/20/20 уже совпадают со штатным состоянием Windows 11 25H2; повторная запись этих чисел ничего не меняет.

Полезность: эти параметры могут быть полезны при разборе конкретного DPC backlog, но без ETW/WPR-трассы изменение вслепую не диагностирует причину. Большая очередь может отложить обработку и увеличить хвост задержки.

ThreadDpcEnable=1 включает threaded-DPC infrastructure, 0 возвращает работу в обычный DIRQL path и может удлинить окна interrupt-off. MaximumKernelWorkerThreads ограничивает общий пул kernel workers. AdditionalCriticalWorkerThreads и AdditionalDelayedWorkerThreads добавляются к базовым пулам: на клиентской Windows это соответственно 5 critical и 7 delayed workers до применения override.

Больше потоков не означает меньше latency: дополнительные workers потребляют stack, scheduler time и cache resources, а очередь может быть ограничена другим компонентом. AdditionalDelayedWorkerThreads=32 действительно добавляет delayed workers, но измеренного универсального выигрыша нет.

DpcCumulativeSoftTimeout ограничивает накопленное время DPC. DpcWatchdogPeriod=0 допустим и выключает этот watchdog; любое ненулевое значение ниже 2000 становится 2000 ms. PassiveWatchdogTimeout используется только при включённом kernel debugger, поэтому на обычной системе этот timer не активен даже при штатных 300 секундах. WorkerThreadTimeoutInSeconds ограничивает зависание worker operation.

DpcCumulativeSoftTimeout имеет нижнюю границу 2000 ms и не может превышать DpcWatchdogPeriod. Чтобы получить значение 240000, watchdog period также должен быть 240000. WorkerThreadTimeoutInSeconds нормализуется в диапазон 60..3600 секунд; запись 0 не отключает timeout, а приводит к минимальному значению.

Отключение защитного timeout убирает диагностику, но не исправляет причину блокировки. Для production-системы watchdog является частью механизма обнаружения неисправных драйверов.

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 включает диагностические allocation и stack-capture на boost paths, а не удерживает I/O priority повышенным.

Полезность: без подтверждённого consumer эффект обычно отсутствует или слишком мал для практического решения. Такие значения полезны как предмет отдельной kernel-диагностики, а не как общий набор оптимизации.

Проверенные defaults 4/3/20/20 совпадают со штатным состоянием Windows 11 25H2. Дополнительные workers по умолчанию равны нулю, верхний предел kernel workers — 4096 с диапазоном 32..16384. Watchdog-параметры нормализуются: значение ниже 2000 мс становится 2000, а DpcCumulativeSoftTimeout не превышает период watchdog. Ветки Kernel и Executive не взаимозаменяемы.

  • Readers и потребители параметров в ntoskrnl.exe исследованной сборки.
  • Значения по умолчанию и границы нормализации, включая зависимости между watchdog-параметрами.
  • Разделение веток Kernel и Executive: одноимённая запись в соседнем подключе не применяется.
  • Влияние изменения параметров на FPS, задержку или отзывчивость.
  • Польза изменения лимитов без подтверждённой проблемы с очередью DPC или worker.

Не меняйте эти параметры вслепую: без ETW/WPR-трассы причину backlog установить нельзя. Для рабочей системы сохраняйте watchdog включённым, а параметры используйте для диагностики, а не как набор оптимизации.

Верните штатные значения или удалите необязательные записи. Параметры ядра применяются при следующей загрузке Windows.

Readers и consumers проверены в ntoskrnl.exe Windows 11 25H2 build 26200.9168. Не публикуются offsets или псевдокод. Конечные пользовательские метрики в эту серию не входили.

Как повторить динамическую часть наблюдений — см. Как проверить самостоятельно.

Исследование и использованные инструменты принадлежат разработчику BoosterX, поэтому у разработчика есть прямой интерес к результатам. Методика и границы применимости описаны выше, а выводы можно проверить по открытым данным и перечисленным публичным источникам.

Публичные источники проверены: 2026-09-02.

  • 2026-09-20: раздел «Результаты» перемещён на обязательное место до «Восстановления состояния»; добавлены дисклеймер о конфликте интересов и ссылка на самостоятельную проверку динамических наблюдений в методике.
  • 2026-09-02: первая публикация; подтверждены readers, defaults и clamps, добавлены границы практической пользы.