דלגו לתוכן

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), את סוג הקוונטום ומשכו. ב-build שנחקר הערך ההתחלתי של 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 limits הסמוכים מפורטים במחקר «DPC ו-Kernel Executive workers ב-Windows 11 25H2»; כאן הם אינם מפורטים מחדש. ForceForegroundBoostDecay משנה את כללי הדעיכה של הגברת היישום הפעיל, ו-PassiveIntRealTimeWorkerPriority מגדיר את העדיפות של תהליך עבודה מיוחד של קלט-פלט. עבור PassiveIntRealTimeWorkerPriority הקוד מקבל 17..21; בהיעדר רשומה משתמשים ב-16. הערך 18 קביל ומעלה את העדיפות.

בעת השוואה יש להתחשב ביחידות המידה ובמגבלות הטווחים. הליבה מנרמלת ערכים לא נתמכים, ולכן המספר שנרשם עשוי להיות שונה מזה שהוחל בפועל.

פרמטרים אלה נוגעים לתזמון מערכתי ולאבחון מנהלי התקנים. ללא trace של DPC/ISR אין בסיס מהימן לשינוי ידני שלהם.

  • קריאת כל פרמטרי הטבלה אושרה ב-ntoskrnl.exe של build 26200.9168: Win32PrioritySeparation נקרא בעת אתחול המתזמן ו-session initialization, ופרמטרי הטיימרים — בשלבי אתחול הליבה.
  • הערכים ההתחלתיים והנרמול אושרו: מסכה 0x3F עבור Win32PrioritySeparation, טווח 17..21 עם ברירת מחדל 16 עבור PassiveIntRealTimeWorkerPriority, יחידה של 100 ננו-שניות אצל MaxDynamicTickDuration.
  • התצפיות עצמן איכותניות: ערכי השהיה, FPS או עומס רקע לא נמדדו במחקר זה.
  • Readers ונרמול הפרמטרים ב-ntoskrnl.exe של ה-build שנחקר.
  • הערך ההתחלתי 0x02 עבור Win32PrioritySeparation והמסכה 0x3F.
  • משמעות שדות boost והקוונטומים, היחידות של MaxDynamicTickDuration.
  • נרמול PassiveIntRealTimeWorkerPriority לטווח 17..21 עם ברירת מחדל 16.
  • השפעת השינוי על FPS, השהיה או היענות.
  • התועלת של השינוי ללא עומס שאכן משתמש בטיימרים וב-DPC.

השאירו את ערכי ברירת המחדל. שנו פרמטרים רק עבור עומס שאכן מבצע את הבקשות המתאימות, והשוו תוצאות בהרצות זהות.

החזירו את ערכי ברירת המחדל או מחקו רשומות אופציונליות. פרמטרי הליבה מוחלים באתחול Windows הבא.

קריאות בשלב 0 של האתחול עשויות שלא להיכנס לחלון הרישום של Procmon. המחקר מאשר את קוד הקריאה ואת הנרמול ב-build 26200.9168. מספר ההרצות העצמאיות של התצפית (אתחולים ו-traces) לא נרשם בנתוני המאמר, ולכן החזרתיות של תצפיות ה-readers עצמן לא הוערכה כמותית. השפעה אוניברסלית על ביצועים או השהיה לא נקבעה.

המחקר והכלים שבהם נעשה שימוש שייכים למפתח BoosterX, ולכן למפתח יש אינטרס ישיר בתוצאות. המתודולוגיה וגבולות התחולה מתוארים לעיל, ואת המסקנות ניתן לאמת לפי הנתונים הפתוחים ולפי המקורות הציבוריים המפורטים.

המקורות הציבוריים נבדקו: 2026-09-02.

  • 2026-09-20: נוסף כתב ויתור בדבר ניגוד עניינים; תואמו תאריכי reviewed/modified.
  • 2026-09-19: נוספו הפרק «תוצאות», הפניות צולבות למחקרי Win32PrioritySeparation ולפרמטרי DPC/worker ועמוד ההגדרה של BoosterX; תועד היעדר מספר הרצות התצפית.
  • 2026-09-02: פרסום ראשון; אושרו readers, נרמול ושדות סיביות, נוספו גבולות התועלת המעשית.