Перейти до вмісту

Планувальник, таймери та 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, нормалізацію й бітові поля, додано межі практичної користі.