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

Scheduler, timers и foreground boost Windows 11 25H2

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

Эти значения управляют планировщиком, разрешением таймеров, распределением тактовых прерываний и бюджетом DPC. По одному названию нельзя определить весь эффект: Windows применяет битовые маски и нормализует входные значения. Разные записи могут задавать одинаковый режим работы.

Проверяли, какие параметры планировщика и таймеров читает ядро, как нормализуются значения и какие поля Win32PrioritySeparation за что отвечают.

Windows 11 25H2 build 26200.9168, scheduler и timer paths ядра. Конкретные игры и приложения в измерения не входили.

Мастер-таблица параметров ядра, наблюдение runtime-обращений к Registry и проверка битовых полей и нормализации значений.

Registry path Value Type Default Reader/timing
HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl Win32PrioritySeparation REG_DWORD 0x02 ntoskrnl.exe, затем session initialization
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel GlobalTimerResolutionRequests REG_DWORD 0 kernel phase-0
тот же путь MaxDynamicTickDuration REG_DWORD 0xFFFFFFFF dynamic tick duration limit
тот же путь EnablePerCpuClockTickScheduling REG_DWORD 0 phase-1 clock init
тот же путь DisableLowQosTimerResolution REG_DWORD 1 timer policy init
тот же путь DpcCumulativeSoftTimeout REG_DWORD 120000 DPC budget init
тот же путь ForceForegroundBoostDecay REG_DWORD 0 scheduler init
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\I/O System PassiveIntRealTimeWorkerPriority REG_DWORD 16 I/O worker init

Значение состоит из битовых полей. Ядро отдельно определяет усиление активного приложения (foreground boost), тип и длительность кванта. В исследованной сборке начальное значение клиентской Windows равно 0x02. К входному значению применяется маска 0x3F, поэтому разные записи могут задавать один режим планировщика.

Разбор битовых полей по битам, калькулятор эквивалентных значений и исторические измерения задержки и FPS вынесены в отдельное исследование «Win32PrioritySeparation: задержка и FPS при полной загрузке CPU». Пользовательскую сторону вопроса — выбор, эффект и возврат — закрывает страница настройки BoosterX.

Параметр меняет правила планирования. Для оценки пользы в конкретной задаче нужно повторить тест с нагрузкой CPU и измерить задержку; универсального ускорения настройка не гарантирует.

GlobalTimerResolutionRequests и соседние параметры таймеров читаются из Session Manager\Kernel. Они влияют на область действия запросов разрешения таймера, локальную или общесистемную, и на распределение тактовых прерываний между CPU. На поддерживаемых платформах раздельное планирование тактов по CPU может работать и без принудительной настройки.

MaxDynamicTickDuration ограничивает длительность сна в простое без периодических тактов. Единица измерения составляет 100 наносекунд: 7500 означает 0.75 ms, а не 7.5 ms. Верхняя граница дополнительно ограничивается текущим разрешением таймера. 0xFFFFFFFF снимает дополнительный предел.

DisableLowQosTimerResolution меняет ограничение для низкоприоритетных запросов разрешения таймера. Постоянное высокое разрешение само по себе при этом не устанавливается.

Менять правила таймеров стоит только для нагрузки, которая действительно выполняет такие запросы. Постоянное высокое разрешение увеличивает число прерываний таймера и расход энергии.

DpcCumulativeSoftTimeout задаёт бюджет суммарного времени выполнения DPC. Его границы нормализации, связь с DpcWatchdogPeriod и соседние параметры DPC и worker-лимиты разобраны в исследовании «DPC и Kernel Executive workers в Windows 11 25H2»; здесь они не пересказываются. ForceForegroundBoostDecay меняет правила затухания усиления активного приложения, а PassiveIntRealTimeWorkerPriority задаёт приоритет специального рабочего потока ввода-вывода. Для PassiveIntRealTimeWorkerPriority код принимает 17..21; при отсутствии записи используется 16. Значение 18 допустимо и повышает приоритет.

При сравнении учитывайте единицы измерения и ограничения диапазонов. Ядро нормализует неподдерживаемые значения, поэтому записанное число может отличаться от фактически применённого.

Эти параметры относятся к системному планированию и диагностике драйверов. Без трассы DPC/ISR нет надёжных оснований для их ручного изменения.

  • Чтение всех параметров таблицы подтверждено в ntoskrnl.exe сборки 26200.9168: Win32PrioritySeparation читается при инициализации планировщика и session initialization, параметры таймеров — на фазах инициализации ядра.
  • Подтверждены начальные значения и нормализация: маска 0x3F для Win32PrioritySeparation, диапазон 17..21 с резервным 16 для PassiveIntRealTimeWorkerPriority, единица 100 нс у MaxDynamicTickDuration.
  • Сами наблюдения — качественные: значений задержки, FPS или фоновой нагрузки в этом исследовании не измерялось.
  • Readers и нормализация параметров в ntoskrnl.exe исследованной сборки.
  • Начальное значение 0x02 для Win32PrioritySeparation и маска 0x3F.
  • Смысл полей boost и квантов, единицы MaxDynamicTickDuration.
  • Нормализация PassiveIntRealTimeWorkerPriority до диапазона 17..21 при резервном 16.
  • Влияние изменения на FPS, задержку или отзывчивость.
  • Польза изменения без нагрузки, которая действительно использует таймеры и DPC.

Оставьте штатные значения. Меняйте параметры только для нагрузки, которая действительно выполняет соответствующие запросы, и сравнивайте результаты в одинаковых прогонах.

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

Чтения на фазе 0 загрузки могут не попасть в интервал записи Procmon. Исследование подтверждает код чтения и нормализацию на сборке 26200.9168. Число независимых прогонов наблюдения (загрузок и трасс) в данных статьи не зафиксировано, поэтому повторяемость самих наблюдений читателей количественно не оценивалась. Универсальное влияние на производительность или задержку не установлено.

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

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

  • 2026-09-20: добавлен дисклеймер о конфликте интересов; согласованы даты reviewed/modified.
  • 2026-09-19: добавлены раздел «Результаты», перекрёстные ссылки на исследования Win32PrioritySeparation и DPC/worker-параметров и страница настройки BoosterX; зафиксировано отсутствие числа прогонов наблюдения.
  • 2026-09-02: первая публикация; подтверждены readers, нормализация и битовые поля, добавлены границы практической пользы.