Hoppa till innehåll

Scheduler, timers och foreground boost i Windows 11 25H2

På den här sidan

Dessa värden styr schemaläggaren, timerupplösning, fördelning av klockavbrott och DPC-budgeten. Hela effekten kan inte avgöras enbart utifrån namnet: Windows tillämpar bitmasker och normaliserar indatavärden. Olika poster kan ange samma driftläge.

Vi undersökte vilka schemaläggar- och timerparametrar kärnan läser, hur värden normaliseras och vilka fält i Win32PrioritySeparation som ansvarar för vad.

Windows 11 25H2 build 26200.9168, scheduler- och timer paths i kärnan. Specifika spel och program ingick inte i mätningarna.

En mastertabell över kärnparametrar, observation av runtime-anrop till Registry samt kontroll av bitfält och normalisering av värden.

Registry path Value Type Default Reader/timing
HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl Win32PrioritySeparation REG_DWORD 0x02 ntoskrnl.exe, sedan session initialization
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel GlobalTimerResolutionRequests REG_DWORD 0 kernel phase-0
samma sökväg MaxDynamicTickDuration REG_DWORD 0xFFFFFFFF dynamic tick duration limit
samma sökväg EnablePerCpuClockTickScheduling REG_DWORD 0 phase-1 clock init
samma sökväg DisableLowQosTimerResolution REG_DWORD 1 timer policy init
samma sökväg DpcCumulativeSoftTimeout REG_DWORD 120000 DPC budget init
samma sökväg ForceForegroundBoostDecay REG_DWORD 0 scheduler init
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\I/O System PassiveIntRealTimeWorkerPriority REG_DWORD 16 I/O worker init

Värdet består av bitfält. Kärnan fastställer separat förstärkningen för det aktiva programmet (foreground boost), typen och längden på kvantum. I den undersökta builden är startvärdet för klient-Windows 0x02. En mask 0x3F tillämpas på indatavärdet, därför kan olika poster ange ett och samma schemaläggarläge.

Uppdelningen av bitfälten bit för bit, kalkylatorn för ekvivalenta värden samt historiska mätningar av latens och FPS har lagts i en separat undersökning «Win32PrioritySeparation: latens och FPS vid full CPU-belastning». Användarsidan av frågan — val, effekt och återställning — täcks av BoosterX inställningssida.

Parametern ändrar schemaläggningsreglerna. För att bedöma nyttan i en specifik uppgift måste testet upprepas med CPU-belastning och latensen mätas; inställningen garanterar ingen universell acceleration.

GlobalTimerResolutionRequests och närliggande timerparametrar läses från Session Manager\Kernel. De påverkar omfattningen av begäranden om timerupplösning, lokal eller systemomfattande, samt fördelningen av klockavbrott mellan CPU:er. På plattformar som stöds kan separat klockplanering per CPU fungera även utan tvingad inställning.

MaxDynamicTickDuration begränsar sömnlängden i idle utan periodiska tick. Måttenheten är 100 nanosekunder: 7500 betyder 0.75 ms, inte 7.5 ms. Den övre gränsen begränsas dessutom av den aktuella timerupplösningen. 0xFFFFFFFF tar bort den extra gränsen.

DisableLowQosTimerResolution ändrar gränsen för lågprioriterade begäranden om timerupplösning. En permanent hög upplösning ställs dock inte in av detta i sig.

Reglerna för timers bör bara ändras för belastning som verkligen utför sådana begäranden. En permanent hög upplösning ökar antalet timeravbrott och energiförbrukningen.

DpcCumulativeSoftTimeout anger budgeten för den sammanlagda körtiden för DPC. Dess normaliseringsgränser, kopplingen till DpcWatchdogPeriod samt närliggande DPC-parametrar och worker-gränser analyseras i undersökningen «DPC och Kernel Executive workers i Windows 11 25H2»; de upprepas inte här. ForceForegroundBoostDecay ändrar reglerna för avklingning av förstärkningen för det aktiva programmet, och PassiveIntRealTimeWorkerPriority anger prioriteten för den särskilda arbetsströmmen för in- och utmatning. För PassiveIntRealTimeWorkerPriority accepterar koden 17..21; om posten saknas används 16. Värdet 18 är tillåtet och höjer prioriteten.

Vid jämförelse, ta hänsyn till måttenheter och intervallgränser. Kärnan normaliserar värden som inte stöds, därför kan det skrivna talet skilja sig från det faktiskt tillämpade.

Dessa parametrar hör till systemplanering och drivrutinsdiagnostik. Utan en DPC/ISR-trace finns inga tillförlitliga skäl för att ändra dem manuellt.

  • Läsning av alla parametrar i tabellen bekräftades i ntoskrnl.exe av build 26200.9168: Win32PrioritySeparation läses vid initiering av schemaläggaren och session initialization, timerparametrarna — i kärnans initieringsfaser.
  • Startvärden och normalisering bekräftades: mask 0x3F för Win32PrioritySeparation, intervallet 17..21 med reservvärdet 16 för PassiveIntRealTimeWorkerPriority, enheten 100 ns för MaxDynamicTickDuration.
  • Själva observationerna är kvalitativa: värden för latens, FPS eller bakgrundsbelastning mättes inte i denna undersökning.
  • Readers och normalisering av parametrar i ntoskrnl.exe i den undersökta builden.
  • Startvärdet 0x02 för Win32PrioritySeparation och mask 0x3F.
  • Innebörden av fälten boost och kvantum, enheterna för MaxDynamicTickDuration.
  • Normalisering av PassiveIntRealTimeWorkerPriority till intervallet 17..21 med reservvärdet 16.
  • Ändringens inverkan på FPS, latens eller responsivitet.
  • Nyttan av ändringen utan belastning som verkligen använder timers och DPC.

Låt standardvärdena vara. Ändra parametrar endast för belastning som verkligen utför motsvarande begäranden, och jämför resultaten i identiska körningar.

Återställ standardvärdena eller ta bort de valfria posterna. Kärnparametrar tillämpas vid nästa start av Windows.

Läsningar i fas 0 av starten kan hamna utanför Procmon:s registreringsintervall. Undersökningen bekräftar läskoden och normaliseringen på build 26200.9168. Antalet oberoende observationskörningar (starter och traces) har inte fastställts i artikelns data, därför har repeterbarheten i själva läsarobservationerna inte kvantitativt utvärderats. Ingen universell inverkan på prestanda eller latens har fastställts.

Undersökningen och de använda verktygen tillhör utvecklaren av BoosterX, därför har utvecklaren ett direkt intresse av resultaten. Metoden och tillämpningsgränserna beskrivs ovan, och slutsatserna kan verifieras mot öppna data och de listade offentliga källorna.

Offentliga källor kontrollerade: 2026-09-02.

  • 2026-09-20: lade till en disclaimer om intressekonflikt; datumen reviewed/modified har samordnats.
  • 2026-09-19: lade till avsnittet «Resultat», korslänkar till undersökningarna av Win32PrioritySeparation och DPC/worker-parametrar samt BoosterX inställningssida; fastställde att antalet observationskörningar saknas.
  • 2026-09-02: första publiceringen; bekräftade readers, normalisering och bitfält, lade till gränser för praktisk nytta.