Планувальник, таймери та foreground boost Windows 11 25H2
На цій сторінці
Коротка відповідь
Section titled “Коротка відповідь”Ці значення керують планувальником, дозволом таймерів, розподілом тактових переривань і бюджетом DPC. За самою назвою не можна визначити весь ефект: Windows застосовує бітові маски й нормалізує вхідні значення. Різні записи можуть задавати однаковий режим роботи.
Що перевіряли
Section titled “Що перевіряли”Перевіряли, які параметри планувальника й таймерів читає ядро, як нормалізуються значення і які поля Win32PrioritySeparation за що відповідають.
Область дослідження
Section titled “Область дослідження”Windows 11 25H2 build 26200.9168, scheduler і timer paths ядра. Конкретні ігри та застосунки у вимірювання не входили.
Методика
Section titled “Методика”Майстер-таблиця параметрів ядра, спостереження runtime-звернень до Registry і перевірка бітових полів та нормалізації значень.
Канонічні параметри
Section titled “Канонічні параметри”| 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 |
Win32PrioritySeparation
Section titled “Win32PrioritySeparation”Значення складається з бітових полів. Ядро окремо визначає підсилення активного застосунку (foreground boost), тип і тривалість кванта. У дослідженій збірці початкове значення клієнтської Windows дорівнює 0x02. До вхідного значення застосовується маска 0x3F, тому різні записи можуть задавати один режим планувальника.
Розбір бітових полів за бітами, калькулятор еквівалентних значень та історичні вимірювання затримки й FPS винесено в окреме дослідження «Win32PrioritySeparation: затримка та FPS при повному завантаженні CPU». Користувацький бік питання — вибір, ефект і повернення — закриває сторінка налаштування BoosterX.
Параметр змінює правила планування. Для оцінки користі в конкретній задачі потрібно повторити тест із навантаженням CPU і виміряти затримку; універсального прискорення налаштування не гарантує.
Timer policy
Section titled “Timer policy”GlobalTimerResolutionRequests і сусідні параметри таймерів читаються з Session Manager\Kernel. Вони впливають на область дії запитів дозволу таймера, локальну або загальносистемну, і на розподіл тактових переривань між CPU. На підтримуваних платформах роздільне планування тактів за CPU може працювати й без примусового налаштування.
MaxDynamicTickDuration обмежує тривалість сну в простої без періодичних тактів. Одиниця вимірювання становить 100 наносекунд: 7500 означає 0.75 ms, а не 7.5 ms. Верхня межа додатково обмежується поточним дозволом таймера. 0xFFFFFFFF знімає додаткову межу.
DisableLowQosTimerResolution змінює обмеження для низькопріоритетних запитів дозволу таймера. Постійний високий дозвіл сам по собі при цьому не встановлюється.
Змінювати правила таймерів варто лише для навантаження, яке справді виконує такі запити. Постійний високий дозвіл збільшує кількість переривань таймера й витрати енергії.
DPC budget і boost decay
Section titled “DPC budget і boost decay”DpcCumulativeSoftTimeout задає бюджет сумарного часу виконання DPC. Його межі нормалізації, зв’язок із DpcWatchdogPeriod та сусідні параметри DPC і worker-ліміти розібрано в дослідженні «DPC і Kernel Executive workers у Windows 11 25H2»; тут вони не переказуються. ForceForegroundBoostDecay змінює правила затухання підсилення активного застосунку, а PassiveIntRealTimeWorkerPriority задає пріоритет спеціального робочого потоку введення-виведення. Для PassiveIntRealTimeWorkerPriority код приймає 17..21; за відсутності запису використовується 16. Значення 18 допустиме й підвищує пріоритет.
Під час порівняння враховуйте одиниці вимірювання та обмеження діапазонів. Ядро нормалізує непідтримувані значення, тому записане число може відрізнятися від фактично застосованого.
Ці параметри стосуються системного планування й діагностики драйверів. Без траси DPC/ISR немає надійних підстав для їх ручної зміни.
Результати
Section titled “Результати”- Читання всіх параметрів таблиці підтверджено в
ntoskrnl.exeзбірки26200.9168:Win32PrioritySeparationчитається під час ініціалізації планувальника і session initialization, параметри таймерів — на фазах ініціалізації ядра. - Підтверджено початкові значення й нормалізацію: маска
0x3FдляWin32PrioritySeparation, діапазон17..21з резервним16дляPassiveIntRealTimeWorkerPriority, одиниця 100 нс уMaxDynamicTickDuration. - Самі спостереження — якісні: значень затримки, FPS або фонового навантаження в цьому дослідженні не вимірювалося.
Що підтверджено
Section titled “Що підтверджено”- Readers і нормалізація параметрів у
ntoskrnl.exeдослідженої збірки. - Початкове значення
0x02дляWin32PrioritySeparationі маска0x3F. - Сенс полів boost і квантів, одиниці
MaxDynamicTickDuration. - Нормалізація
PassiveIntRealTimeWorkerPriorityдо діапазону17..21при резервному16.
Що не підтверджено
Section titled “Що не підтверджено”- Вплив зміни на FPS, затримку або чутливість.
- Користь зміни без навантаження, яке справді використовує таймери й DPC.
Практичний висновок
Section titled “Практичний висновок”Залиште штатні значення. Змінюйте параметри лише для навантаження, яке справді виконує відповідні запити, і порівнюйте результати в однакових прогонах.
Відновлення стану
Section titled “Відновлення стану”Поверніть штатні значення або видаліть необов’язкові записи. Параметри ядра застосовуються під час наступного завантаження Windows.
Обмеження
Section titled “Обмеження”Читання на фазі 0 завантаження можуть не потрапити в інтервал запису Procmon. Дослідження підтверджує код читання й нормалізацію на збірці 26200.9168. Число незалежних прогонів спостереження (завантажень і трас) у даних статті не зафіксовано, тому повторюваність самих спостережень читачів кількісно не оцінювалася. Універсальний вплив на продуктивність або затримку не встановлено.
Дослідження й використані інструменти належать розробнику BoosterX, тому в розробника є прямий інтерес до результатів. Методику й межі застосовності описано вище, а висновки можна перевірити за відкритими даними та переліченими публічними джерелами.
Джерела
Section titled “Джерела”- Win32PrioritySeparation, Microsoft Learn, перевірено 2026-09-01.
- Timer resolution, Microsoft Learn, перевірено 2026-09-01.
Публічні джерела перевірено: 2026-09-02.
Історія змін
Section titled “Історія змін”- 2026-09-20: додано дисклеймер про конфлікт інтересів; узгоджено дати reviewed/modified.
- 2026-09-19: додано розділ «Результати», перехресні посилання на дослідження
Win32PrioritySeparationі DPC/worker-параметрів та сторінка налаштування BoosterX; зафіксовано відсутність числа прогонів спостереження. - 2026-09-02: перша публікація; підтверджено readers, нормалізацію й бітові поля, додано межі практичної користі.
