DPC ו-Kernel Executive workers ב-Windows 11 25H2
בדף זה
תשובה קצרה
Section titled “תשובה קצרה”הקבוצה DpcQueueDepth, worker limits ופרמטרי watchdog נתפסת לעתים קרובות כמערכת של latency tweaks אוניברסליים. למעשה מדובר במגבלות פנימיות ובמנגנוני הגנה של הליבה. ההשפעה שלהם מתבטאת רק בתור DPC מסוים, במספר מעבדים, בסוג драйвера או בשגיאת worker.
מה נבדק
Section titled “מה נבדק”נבדק אילו מגבלות DPC, worker threads ו-watchdog קורא הקernel, כיצד מנורמלים הערכים והיכן מנגנונים אלה באמת מיושמים.
תחום המחקר
Section titled “תחום המחקר”Windows 11 25H2 build 26200.9168, ענפים Session Manager\Kernel ו-Session Manager\Executive. תכונות תלויות חומרה ודרייברים ספציפיים לא נכללו במדידות.
מתודולוגיה
Section titled “מתודולוגיה”ניתוח סטטי של ntoskrnl.exe: איתור readers וצרכנים, בדיקת טווחים ונרמול ערכים; הצלבה עם התיעוד הציבורי של Microsoft.
נתיב קנוני וערכים
Section titled “נתיב קנוני וערכים”נתיב DPC ו-watchdog:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel
| Value | Type | Default/normalization | מה שולט |
|---|---|---|---|
DpcQueueDepth |
REG_DWORD |
4 |
עומק DPC queue |
MinimumDpcRate |
REG_DWORD |
3 |
תדר מינימלי של עיבוד DPC |
IdealDpcRate |
REG_DWORD |
20 |
יעד DPC rate |
AdjustDpcThreshold |
REG_DWORD |
20 |
סף הסתגלות של DPC policy |
ThreadDpcEnable |
REG_DWORD |
1 |
thread-DPC processing |
DpcWatchdogPeriod |
REG_DWORD |
120000 |
תקופת DPC watchdog |
DpcCumulativeSoftTimeout |
REG_DWORD |
120000 ב-build שנחקר |
soft budget מצטבר |
PassiveWatchdogTimeout |
REG_DWORD |
300 שניות |
passive-level watchdog בעת KD |
ForceIdleGracePeriod |
REG_DWORD |
5 שניות |
force-idle grace period |
PerfIsoEnabled |
REG_DWORD |
0 |
performance isolation |
CacheIsoBitmap |
REG_DWORD |
0 |
Intel CAT L3 mask |
SchedulerAssistThreadFlagOverride |
REG_DWORD |
0 |
scheduler assist override |
VpThreadSystemWorkPriority |
REG_DWORD |
30, טווח 1..31 |
virtual processor work priority |
AlwaysTrackIoBoosting |
REG_DWORD |
0 |
מעקב אבחוני אחר I/O boost |
נתיב Kernel Executive workers:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Executive
| Value | Type | Default/normalization | מה שולט |
|---|---|---|---|
AdditionalCriticalWorkerThreads |
REG_DWORD |
0, clamp 0..100 |
critical workers נוספים |
AdditionalDelayedWorkerThreads |
REG_DWORD |
0, clamp 0..100 |
delayed workers |
MaximumKernelWorkerThreads |
REG_DWORD |
4096, 32..16384 |
גבול עליון של kernel workers |
ForceEnableMutantAutoboost |
REG_DWORD |
0 |
mutant autoboost |
WorkerThreadTimeoutInSeconds |
REG_DWORD |
600, 60..3600 |
worker timeout |
Session Manager\Kernel ו-Session Manager\Executive הם ענפי תצורה שונים. עבור כל ערך חשוב הנתיב שפותח reader של הליבה ב-build זה.
DPC queue ו-rates
Section titled “DPC queue ו-rates”הליבה משתמשת ב-DpcQueueDepth, MinimumDpcRate, IdealDpcRate ו-AdjustDpcThreshold כדי לשלוט בתור ובהסתגלות של DPC processing. ערכי ה-defaults שנבדקו 4/3/20/20 כבר תואמים למצב התקני של Windows 11 25H2; כתיבה חוזרת של מספרים אלה אינה משנה דבר.
תועלת: פרמטרים אלה יכולים להיות שימושיים בניתוח DPC backlog מסוים, אך ללא ETW/WPR-טראס שינוי בעיוורון אינו מאבחן את הסיבה. תור גדול עשוי לדחות את העיבוד ולהגדיל את זנב ההשהיה.
Thread DPC ו-worker limits
Section titled “Thread DPC ו-worker limits”ThreadDpcEnable=1 מפעיל threaded-DPC infrastructure, 0 מחזיר את העבודה לנתיב DIRQL רגיל ועלול להאריך חלונות interrupt-off. MaximumKernelWorkerThreads מגביל את מאגר ה-kernel workers הכולל. AdditionalCriticalWorkerThreads ו-AdditionalDelayedWorkerThreads מתווספים למאגרים הבסיסיים: ב-Windows לקוח אלה בהתאמה 5 critical ו-7 delayed workers לפני החלת override.
יותר threads אינו אומר פחות latency: workers נוספים צורכים stack, scheduler time ומשאבי cache, והתור עשוי להיות מוגבל על ידי רכיב אחר. AdditionalDelayedWorkerThreads=32 אכן מוסיף delayed workers, אך אין רווח אוניברסלי מדיד.
Watchdog ו-timeout
Section titled “Watchdog ו-timeout”DpcCumulativeSoftTimeout מגביל את הזמן המצטבר של DPC. DpcWatchdogPeriod=0 מותר ומכבה watchdog זה; כל ערך שאינו אפס ונמוך מ-2000 הופך ל-2000 ms. PassiveWatchdogTimeout משמש רק כאשר kernel debugger מופעל, ולכן במערכת רגילה טיימר זה אינו פעיל גם עם 300 שניות תקניות. WorkerThreadTimeoutInSeconds מגביל תקיעה של worker operation.
ל-DpcCumulativeSoftTimeout יש גבול תחתון של 2000 ms והוא אינו יכול לעלות על DpcWatchdogPeriod. כדי לקבל ערך 240000, גם watchdog period חייב להיות 240000. WorkerThreadTimeoutInSeconds מנורמל לטווח 60..3600 שניות; כתיבת 0 אינה מכבה את ה-timeout, אלא מביאה לערך המינימלי.
כיבוי timeout מגן מסיר את האבחון, אך אינו מתקן את סיבת החסימה. עבור מערכת production, watchdog הוא חלק ממנגנון איתור דרייברים תקולים.
Kernel Executive policy
Section titled “Kernel Executive policy”ForceEnableMutantAutoboost נמצא בענף Executive, ואילו ForceIdleGracePeriod, PerfIsoEnabled, CacheIsoBitmap, SchedulerAssistThreadFlagOverride, VpThreadSystemWorkPriority ו-AlwaysTrackIoBoosting נקראים מהענף Kernel. הבחנה זו קריטית: רשומה בעלת שם זהה במפתח שכן אינה מיושמת.
CacheIsoBitmap משמש רק כאשר קיימת תמיכה ב-Intel Resource Director/CAT; ללא CAT הערך אינו יוצר בידוד. SchedulerAssistThreadFlagOverride=0 ו-1 משאירים הפעלה אוטומטית, 2 מכבה את הענף בכוח. VpThreadSystemWorkPriority מתיר 1..31, אחרת מאופס ל-1; ה-default 30, ו-31 הוא רק גבול עליון. AlwaysTrackIoBoosting=1 מפעיל allocation ו-stack-capture אבחוניים ב-boost paths, ואינו מחזיק I/O priority מוגבר.
תועלת: ללא consumer מאומת ההשפעה בדרך כלל חסרה או קטנה מכדי להכריע באופן מעשי. ערכים כאלה שימושיים כנושא לאבחון kernel נפרד, ולא כמערכת אופטימיזציה כללית.
תוצאות
Section titled “תוצאות”ערכי ה-defaults שנבדקו 4/3/20/20 תואמים למצב התקני של Windows 11 25H2. workers נוספים כברירת מחדל שווים לאפס, הגבול העליון של kernel workers הוא 4096 עם טווח 32..16384. פרמטרי watchdog מנורמלים: ערך נמוך מ-2000 ms הופך ל-2000, ו-DpcCumulativeSoftTimeout אינו עולה על תקופת ה-watchdog. הענפים Kernel ו-Executive אינם ניתנים להחלפה הדדית.
מה אושר
Section titled “מה אושר”- Readers וצרכנים של הפרמטרים ב-
ntoskrnl.exeשל ה-build שנחקר. - ערכי ברירת מחדל וגבולות נרמול, כולל תלויות בין פרמטרי watchdog.
- הפרדה בין הענפים
Kernelו-Executive: רשומה בעלת שם זהה במפתח שכן אינה מיושמת.
מה לא אושר
Section titled “מה לא אושר”- השפעת שינוי הפרמטרים על FPS, השהיה או היענות.
- התועלת של שינוי המגבלות ללא בעיה מאומתת בתור DPC או ב-worker.
מסקנה מעשית
Section titled “מסקנה מעשית”אל תשנו פרמטרים אלה בעיוורון: ללא ETW/WPR-טראס לא ניתן לקבוע את סיבת ה-backlog. עבור מערכת פעילה השאירו את ה-watchdog מופעל, והשתמשו בפרמטרים לאבחון, ולא כמערכת אופטימיזציה.
שחזור מצב
Section titled “שחזור מצב”החזירו את הערכים התקניים או מחקו רשומות אופציונליות. פרמטרי הליבה מיושמים באתחול הבא של Windows.
מקורות ומגבלות
Section titled “מקורות ומגבלות”Readers ו-consumers נבדקו ב-ntoskrnl.exe Windows 11 25H2 build 26200.9168. לא מפורסמים offsets או פסאודו-קוד. מדדי משתמש סופיים לא נכללו בסדרה זו.
- DPCs and threads, Microsoft Learn, נבדק 2026-09-01.
- Bug checks 0x133 DPC_WATCHDOG_VIOLATION, Microsoft Learn, נבדק 2026-09-01.
כיצד לחזור על החלק הדינמי של התצפיות — ראו כיצד לבדוק בעצמכם.
המחקר והכלים שבהם נעשה שימוש שייכים למפתח BoosterX, ולכן למפתח יש אינטרס ישיר בתוצאות. המתודולוגיה וגבולות התחולה מתוארים לעיל, ואת המסקנות ניתן לאמת לפי הנתונים הפתוחים והמקורות הציבוריים המפורטים.
המקורות הציבוריים נבדקו: 2026-09-02.
היסטוריית שינויים
Section titled “היסטוריית שינויים”- 2026-09-20: המדור “תוצאות” הועבר למקום החובה לפני “שחזור מצב”; נוספו הצהרת ניגוד עניינים וקישור לבדיקה עצמאית של התצפיות הדינמיות במתודולוגיה.
- 2026-09-02: פרסום ראשון; אושרו readers, defaults ו-clamps, נוספו גבולות התועלת המעשית.
