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 ядра в данной сборке.
DPC queue и rates
Заголовок раздела «DPC queue и rates»Ядро использует DpcQueueDepth, MinimumDpcRate, IdealDpcRate и AdjustDpcThreshold для контроля очереди и адаптации DPC processing. Проверенные defaults 4/3/20/20 уже совпадают со штатным состоянием Windows 11 25H2; повторная запись этих чисел ничего не меняет.
Полезность: эти параметры могут быть полезны при разборе конкретного DPC backlog, но без ETW/WPR-трассы изменение вслепую не диагностирует причину. Большая очередь может отложить обработку и увеличить хвост задержки.
Thread DPC и worker limits
Заголовок раздела «Thread DPC и worker limits»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, но измеренного универсального выигрыша нет.
Watchdog и timeout
Заголовок раздела «Watchdog и timeout»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 является частью механизма обнаружения неисправных драйверов.
Kernel Executive policy
Заголовок раздела «Kernel Executive policy»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 или псевдокод. Конечные пользовательские метрики в эту серию не входили.
- DPCs and threads, Microsoft Learn, проверено 2026-09-01.
- Bug checks 0x133 DPC_WATCHDOG_VIOLATION, Microsoft Learn, проверено 2026-09-01.
Как повторить динамическую часть наблюдений — см. Как проверить самостоятельно.
Исследование и использованные инструменты принадлежат разработчику BoosterX, поэтому у разработчика есть прямой интерес к результатам. Методика и границы применимости описаны выше, а выводы можно проверить по открытым данным и перечисленным публичным источникам.
Публичные источники проверены: 2026-09-02.
История изменений
Заголовок раздела «История изменений»- 2026-09-20: раздел «Результаты» перемещён на обязательное место до «Восстановления состояния»; добавлены дисклеймер о конфликте интересов и ссылка на самостоятельную проверку динамических наблюдений в методике.
- 2026-09-02: первая публикация; подтверждены readers, defaults и clamps, добавлены границы практической пользы.
