תזמון המעבד ב-Windows - שירותי רקע וליבות P/E

· עודכן בתאריך: · · Windows, כוונון ביצועים, תזמון, שמע, CPU

“כשמוציאים את היישום מהחזית, השמע מנתק” “כשמעבירים את ‘תזמון המעבד’ ל’שירותי רקע’, זה נהיה יציב”

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

עם זאת, ההגדרה הזו היא לא מתג האצה קסום. זו לא הגדרה שמעלה ישירות את שעון ה-CPU, לא הגדרה שהופכת את היישום לשירות Windows, ולא הגדרה שמקבעת לליבת P. מה שמשתנה בעיקר הוא אופן חלוקת זמן ה-CPU בין היישום שבחזית לתהליך שרץ מאחור.

מה ההגדרה הזו משנהתרשים המראה שהגדרת תזמון המעבד היא לא הגדרה שמעלה שעון, ולא הופכת ליישום שירות או קובעת לליבת P, ומה שמשתנה הוא אופן חלוקת זמן ה-CPU בין החזית לתהליך שמאחור.אלה לא משתניםמה שכן משתנההגדרת תזמון המעבדשעון · הפיכה לשירות · קיבוע ליבהאופן חלוקת זמן ה-CPU בין חזית לעורף

איור 1: לא מתג האצה — אלא הגדרה שמחליפה את אופן חלוקת זמן ה-CPU.

במאמר הזה נסדר מה משתנה בין תוכניות לשירותי רקע, מהיסודות של תזמן Windows, דרך quantum (פרוסת זמן), העדפת ה-foreground, ועד ההתנהגות ב-CPU עם ליבות P /‏ E.

1. קודם המסקנה

תחילה, רק את עיקרי הדברים:

  • מה שההגדרה הזו משנה ישירות הוא לא “כוח הסוס” של ה-CPU, אלא “אופן החלוקה” של זמן ה-CPU.
  • תוכניות נוטה להעדיף את היישום שבחזית, ו-שירותי רקע נוטה לטפל בחזית ובעורף בצורה שווה יותר.
  • לכן, בעומסי עבודה שבהם מועד תהליך מתמשך שמאחור חשוב יותר מה-UI שבחזית, שירותי רקע עשוי להשפיע.
  • עם זאת, ב-CPU עם ליבות P /‏ E, “לאיזו ליבה נטענים” נקבע היום חזק יותר על ידי QoS, מדיניות חשמל, hybrid scheduling ו-Intel Thread Director, ולא רק על ידי ההגדרה הזו.
  • כלומר, בחירה ב-שירותי רקע לא הופכת אוטומטית ל”עיבוד רקע לליבת E” או “שירות לליבת P” בפשטות.
  • אם הניתוקים או ה-dropout בשמע מקורם ב-DPC /‏ ISR,‏ חיסכון בחשמל ב-USB, דרייבר,‏ thermal throttling, או EcoQoS, ההגדרה הזו לבדה לא תתקן.

במשפט אחד: ההגדרה הזו היא לא הגדרת תדר CPU, אלא הגדרה שמחליפה את כללי תור ההמתנה.

תמונה כללית של מה שמשפיע ומה שלאתרשים המראה שבעומס עבודה שבו מועד עיבוד מתמשך מאחור חשוב, שירותי רקע עשוי להשפיע, בעוד שהבחירה באיזו ליבה - P או E - נקבעת חזק יותר על ידי QoS ומדיניות חשמל.עשוי להשפיענקבע על ידי מנגנון אחרצד 'שירותי רקע'המועד של תהליך מתמשך מאחורבחירת ליבה P / EQoS · מדיניות חשמל · hybrid scheduling

איור 2: יכול להשפיע על מועד, אבל בחירת הליבה נקבעת על ידי מנגנון שמחוץ להגדרה הזו.

1.1 מונחים שכדאי לקבוע מראש

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

מונח משמעות
quantum (פרוסת זמן) יחידת הזמן שבה שרשור יכול לרוץ ברצף בתור אחד. Windows סופר שליש מ-clock tick (מרווח ההפרעה של שעון המערכת) כיחידה אחת
ISR /‏ DPC ‏ISR הוא Interrupt Service Routine (שגרת שירות הפרעה), DPC הוא Deferred Procedure Call (קריאת פרוצדורה דחויה). שני אלה הם מנגנונים שבהם דרייבר מטפל בהפרעה, ורצים לפני שרשור רגיל, ולכן אם הם מתמשכים, צד היישום ממתין
MMCSS ‏Multimedia Class Scheduler Service. שירות Windows שכאשר שרשור שמבצע עיבוד מולטימדיה נרשם בעצמו, מעלה את העדיפות שלו לפי הגדרות הרישום
QoS ‏Quality of Service. “חלוקה של ביצועים ויעילות חשמל” שמוקצית לשרשור. ציר נפרד מהעדיפות, שמשפיע על איזה סוג ליבה נבחר ועל ניהול חשמל של המעבד
EcoQoS חלוקת QoS שמוטה לחיסכון בחשמל. יישום מצרף אותה במפורש עם SetProcessInformation /‏ SetThreadInformation
underrun בעיבוד שמע וכדומה, מצב שבו לא הצליחו למלא את החוצץ עד המועד והנתונים נגמרו. נשמע כניתוק או dropout
חניית ליבות (core parking) מנגנון ניהול חשמל שמרדים מעבדים לוגיים שלא בשימוש, כשהעומס נמוך
C-state עומק מצב ה-idle של ה-CPU. ככל שעמוק יותר, חיסכון גדול יותר בחשמל, אבל ההתאוששות איטית יותר
ליבת P /‏ E ליבה שמדגישה ביצועים וליבה שמדגישה יעילות חשמל. הרכב CPU שמחזיק את שתיהן נקרא hybrid (הטרוגני)
Intel Thread Director מנגנון שבו CPU היברידי של Intel מעביר למערכת ההפעלה רמזים על מאפייני ההרצה של שרשור. ב-Windows 11 זה משמש להחלטת בחירת הליבה

מפת הידע של המאמר

הגדרת ‘תזמון המעבד’ קשורה פנימית לערך רישום בשם Win32PrioritySeparation, ומחליפה רק את אורך ה-quantum ואת מידת ההעדפה המחולקים בין foreground ל-background — היא אינה משנה ישירות את תדר המעבד או שיבוץ לליבה מסוימת. העדפת ‘שירותי רקע’ מחלישה את העדפת ה-foreground, ולכן היא עשויה להקטין תופעות underrun, למשל בעיבוד שמע הרגיש למועדי סיום — אך זהו מנגנון שונה מהעלאת העדיפות שמבצע MMCSS. ב-Windows המודרני, ובמיוחד במעבדי hybrid עם ליבות P/E, השיבוץ בפועל לליבה מושפע יותר מהגדרה זו על ידי Windows QoS ומדיניות heterogeneous scheduling כמו Intel Thread Director; מזעור החלון או הפעלה על סוללה בלבד עלולים להוריד את ה-QoS ולהטות את השיבוץ לכיוון ליבות efficient. לצורך אבחון הסיבה, מומלץ להיעזר בתיעוד השהיית DPC/ISR באמצעות Windows Performance Recorder ו-Analyzer.

מפת הידע של הגדרת תזמון המעבד ו-QoSתרשים המראה שהגדרת תזמון המעבד היא מנגנון ישן שקשור ל-Win32PrioritySeparation ומחליף בין חלוקת quantum להעדפת foreground, שכיצד MMCSS ו-Windows QoS משפיעים על underrun ועל שיבוץ לליבות P או E, שמדיניות Intel Thread Director ו-heterogeneous scheduling קובעות את בחירת הליבה במעבד hybrid, ואת אמצעי הבדיקה של השהיית DPC/ISR.מוגדר באמצעותמוגדר באמצעותמשתמש במשתמש במצמצםמצמצםמשתמש בעלול לגרום לעלול לגרום למונעמשתמש במשתמש במחייבמחייבמשתמש בנבדק באמצעותנבדק באמצעותעלול לגרום להגדרת תזמון המעבדסיווג ה-QoS (איכות שירות) של WindowsWin32PrioritySeparation‏quantum (פרוסת זמן)העדפת תהליך החזיתunderrun (תת-הזנה)MMCSS(Multimedia Class Scheduler Service)שיבוץ מוטה אל efficient coreEcoQoSDisableUserPresenceQosמדיניות heterogeneous scheduling‏ (SchedulingPolicy וכדומה)Intel Thread Directorמבנה P-core/E-core‏ (מעבד היברידי)Core Parkingהשהיית DPC/ISRWPR/WPA(Windows Performance Recorder/Analyzer)

בתרשים, קו מלא מציין קשר שמתקיים תמיד וקו מקווקו מציין קשר מותנה (תנאי ההתקיימות מפורטים בהסבר של כל קשר בעמוד המפורט). רשימת כל הקשרים (סך הכול 18, עם אסמכתה ורמת ודאות) והגדרות המושגים המרכזיים מרוכזות בעמוד המפורט של מפת הידע (ביפנית). נתונים: JSON-LD / Turtle

2. מה ההגדרה הזו בעצם משנה

תזמון המעבד במסך ההגדרות הוא אחת ממדיניויות התזמון הוותיקות של Windows. מבחינה פנימית, זו הגדרה בעלת היסטוריה, שקשורה ל-Win32PrioritySeparation.

מה שכדאי לקבוע כאן קודם הוא היסוד של איך Windows משתמש ב-CPU.

  • התזמן קודם בוחר מבין השרשורים הניתנים להרצה, את בעל העדיפות הגבוהה ביותר.
  • באותה עדיפות, מריצים לפי תור, במשך זמן קבוע כל אחד.
  • “הזמן הקבוע” הזה הוא ה-quantum (פרוסת הזמן).
הזרימה הבסיסית של תזמן Windowsתרשים המראה שהתזמן בוחר מתוך השרשורים הניתנים להרצה את בעל העדיפות הגבוהה, מריץ אותו quantum אחד, ואם יש שרשור ממתין באותה עדיפות עובר אליו בהחלפת הקשר.כןלאשרשורים ניתנים להרצההתזמן בוחר את בעל העדיפות הגבוההמריץ quantum אחדיש שרשור ממתין באותה עדיפות?החלפת הקשר

איור 3: התזמן בוחר את השרשור בעל העדיפות הגבוהה, ומריץ אותו quantum אחד בכל פעם, לפי תור.

מה ש-תזמון המעבד נוגע בו בעיקר הוא אופן חלוקת ה-quantum הזה, ועד כמה מעדיפים את ה-foreground.

ה-foreground כאן הוא היישום שבחזית שהמשתמש נוגע בו כרגע. לעומת זאת, תהליך שהוצא לעורף, worker בתהליך נפרד, שירות Windows, תהליך עזר, ותהליך קבוע — נוטים להיות בצד ה-background.

חשוב לציין שגם אם בוחרים שירותי רקע, היישום שלכם לא הופך לשירות Windows. מה שמשתנה הוא לא סוג בשם “שירות”, אלא כללי חלוקת ה-CPU בין foreground ל-background. השם כאן מבלבל למדי.

הבלבול בשם "שירותי רקע"תרשים המראה שגם אם בוחרים שירותי רקע, היישום לא הופך לשירות Windows, ומה שמשתנה הוא רק כלל חלוקת ה-CPU בין חזית לעורף.זה לא קורהמה שמשתנהבוחרים 'שירותי רקע'היישום הופך לשירות Windowsכלל חלוקת ה-CPU בין חזית לעורף

איור 4: בניגוד לשם, מה שמשתנה הוא לא סוג התהליך אלא כלל החלוקה.

2.1 איך מגיעים למסך ההגדרה

ההגדרה הזו נמצאת עמוק למדי בלוח הבקרה. יש שני מסלולי גישה.

  • הרצת SystemPropertiesPerformance.exe דרך Win + R פותחת ישירות את “אפשרויות ביצועים”. בלשונית “הגדרות מתקדמות” שלה נמצא תזמון המעבד.
  • אם עוברים ידנית: “מאפייני המערכת” > לשונית “הגדרות מתקדמות” > “ביצועים” “הגדרות” > לשונית “הגדרות מתקדמות”. “מאפייני המערכת” עצמם נפתחים עם sysdm.cpl.

תוצאת הבחירה נכתבת לערך הבא ברישום המערכת:

פריט תוכן
מפתח HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl
שם הערך Win32PrioritySeparation
טיפוס REG_DWORD
טווח 0x00x3F

אם רוצים לבדוק רק את הערך הנוכחי, אפשר לקרוא עם PowerShell. בטוח יותר לרשום את הערך שלפני השינוי, כדי שאפשר יהיה להחזיר את ההגדרה.

הקשר בין הבחירה ב-UI לרישום המערכתתרשים המראה שתוצאת הבחירה באפשרויות הביצועים נכתבת לערך Win32PrioritySeparation ברישום המערכת, שאפשר לקרוא את הערך הנוכחי עם PowerShell, ולכן רושמים את הערך לפני השינוי.בחירה ב-UIנכתב ל-Win32PrioritySeparationניתן לקריאה עם PowerShellרושמים את הערך לפני השינוי

איור 5: מהות הבחירה ב-UI היא ערך רישום, ולכן רושמים את הערך הנוכחי לפני שנוגעים בו.

Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\PriorityControl' -Name 'Win32PrioritySeparation'

2.2 באילו גרסאות Windows זה תקף, ומה משמעות הערך

תזמון המעבד שב”אפשרויות ביצועים” קיים גם ב-Windows 10 /‏ Windows 11 ללקוח, וגם ב-Windows Server. עם זאת, הנקודה שקשה להבין בהגדרה הזו היא שאותו ערך מתפרש אחרת בלקוח ובשרת.

בהסבר הרשמי של Microsoft לרישום המערכת, Win32PrioritySeparation מתואר כמסכת ביטים בת 6 ביטים, מחולקת לשלוש קבוצות של 2 ביטים כל אחת (AABBCC).

  • 2 הביטים העליונים: האם ה-quantum ארוך או קצר
  • 2 הביטים האמצעיים: האם ה-quantum משתנה או קבוע
  • 2 הביטים התחתונים: פי כמה מועדף ה-foreground על ה-background (משפיע רק כשהוא משתנה)

בהתאם לכך, נכתב שהבחירה ב-UI כותבת את הערכים הבאים (הכתיב המקורי ב-UI היה Applications ו-Background services, שמתאימים ל-תוכניות ו-שירותי רקע של היום).

בחירה ב-UI הערך שנכתב משמעות
תוכניות 100110 (‏0x26) ‏quantum משתנה, קצר יחסית. ה-foreground מועדף פי 3 על ה-background
שירותי רקע 011000 (‏0x18) ‏quantum קבוע, ארוך יחסית. ה-foreground וה-background מטופלים באותה צורה

אם מתעמקים עוד יותר במספרים, במאמר ההסבר של Microsoft כתוב שב-0x26, ה-quantum הוא 18 ל-foreground ו-6 ל-background, וב-0x18 שניהם 36. ה-quantum נמדד ביחידות של שליש מ-clock tick, ולכן אם ממירים ל-tick זה 6 tick לחזית / 2 tick לעורף, ו-12 tick לשניהם. באותו מאמר מוזכרת דוגמה שבה clock tick על מכונה רב-מעבדית x86 היה 15.625 מילישניות, ובמקרה כזה, זה מקביל להבדל בין “הגדרה שבה החזית רצה ברצף עד בערך 94 מילישניות” ל”הגדרה שבה גם החזית וגם העורף רצים בערך 188 מילישניות כל אחד”.

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

אופן חלוקת ה-quantum בשתי ההגדרותתרשים המראה שבהגדרת תוכניות, החזית מקבלת 6 tick והעורף 2 tick, ובהגדרת שירותי רקע שניהם 12 tick, כך שהזמן שרץ בכל פעם ארוך אך לא מועדפת רק החזית.הגדרת 'תוכניות'חזית 6 tick · עורף 2 tickהגדרת 'שירותי רקע'חזית ועורף 12 tick כל אחדפחות סביר שהעורף לא יגיע לתורו

איור 6: צד אחד מריץ את החזית זמן ארוך, וצד שני מחלק את אותו זמן ארוך באופן שווה.

יש הבדל בין מערכות הפעלה גם בפרשנות ערך ברירת המחדל הזה. בהסבר של Win32_OperatingSystem של Microsoft, ב-Windows ללקוח, ברירת המחדל היא quantum באורך משתנה, כשה-quantum של היישום שבחזית ארוך יותר, ואילו ב-Windows Server ברירת המחדל היא quantum באורך קבוע. גם בהסבר הרישום כתוב שאותו ערך ברירת מחדל, 0x2, מתפרש בלקוח כ”קצר, משתנה, פי 3 לחזית”, ובשרת כ”ארוך, קבוע, שווה”. זו הסיבה ששרת מוטה כבר מהתחלה לצד המקביל ל-שירותי רקע.

אותו ערך ברירת מחדל מתפרש אחרת בלקוח ובשרתתרשים המראה שאותו ערך ברירת מחדל מתפרש בלקוח Windows כקצר, משתנה, פי 3 לחזית, ובשרת כארוך, קבוע, שווה, כך שהשרת מוטה כבר מלכתחילה לצד המקביל לשירותי רקע.בלקוחבשרתאותו ערך ברירת מחדלקצר · משתנה · פי 3 לחזיתארוך · קבוע · שווהכבר מהתחלה מקביל ל-'שירותי רקע'

איור 7: לא הערך עצמו, אלא צד מערכת ההפעלה, מחלק את פרשנות ברירת המחדל.

הערכים הקונקרטיים שהובאו כאן מבוססים על תיעוד ומאמרי הסבר של Microsoft מדור Windows 2000 /‏ XP. ההתאמה בין ערך הרישום לבחירה ב-UI זהה גם היום, אבל אופן הטיפול בפועל ב-quantum עשוי להשתנות בין גרסאות מערכת ההפעלה, ולכן כדאי לקרוא את המספרים כאומדן ל”באיזה סדר גודל מדובר”.

3. מה משתנה בין תוכניות ל-שירותי רקע

ההבדל בין השניים ברור יותר בטבלת השוואה.

היבט תוכניות שירותי רקע
הגישה הבסיסית קל יותר להעלות את התחושה של היישום שבחזית מטפל בחזית ובעורף בצורה שווה יותר
העדפת foreground חזקה קטנה יותר
כש-CPU עמוס ה-UI נוטה לרוץ בנוחות תהליך העורף המתמשך פחות נדחק
מתאים בדרך כלל ל פעולה שולחנית ממוקדת דיאלוג שירות, לכידה, קידוד, תהליך מתמשך
תופעת לוואי נפוצה קל יותר להחמיץ מועדי עיבוד רקע תחושת ה-UI שבחזית עלולה לרדת מעט

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

מצד שני, יש מקרים שבהם התמונה משתנה.

  • עיבוד שמע שממשיך למלא חוצץ ברציפות מאחור
  • לכידה או ניתוח שרצים ברציפות בשרשור נפרד / תהליך נפרד, גם כש-UI קל
  • מקרה שבו רוצים לשמור על מועד העיבוד שמאחור, גם כשבחזית פתוחים דפדפן או IDE
  • עומס עבודה שמוטה לצד שרת, שירות, או תהליך קבוע

במקרים כאלה, יציב יותר לאפשר לתהליך שמאחור להחזיר לעצמו CPU, במקום להעדיף חזק רק את ה-foreground. במובן הזה, שירותי רקע יכול להיות הגיוני.

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

איור 8: הבחירה בין תחושת החזית למועד העורף קובעת איזה צד עדיף.

4. למה זה יכול להשפיע על שמע ועיבוד מתמשך

קל יותר להבין עם דוגמה של ניתוקי שמע ו-dropout.

עיבוד שמע לא מסתפק ב”מהיר בממוצע”. כל כמה מילישניות, או ביחידה קצרה עוד יותר, צריך למלא את החוצץ עד התזמון הנדרש. גם אם שיעור ניצול ה-CPU נמוך בממוצע, אם לא מצליחים לרוץ בדיוק באותו רגע, השמע מתנתק.

נציג מצב קונקרטי אחד.

  • בחזית יש דפדפן, UI של DAW, או יישום נפרד
  • מאחור, שרשור עיבוד השמע רץ במחזוריות קבועה ומזין חוצץ
  • שרשור עיבוד השמע לא בעדיפות גבוהה מדי, וגם לא מנצל מספיק MMCSS או QoS
  • ה-CPU עמוס במידה מסוימת

במצב כזה, ב-תוכניות, היישום שבחזית נוטה לרוץ פרקי זמן ארוכים יותר, ועיבוד השמע שמאחור, גם אם בממוצע תקין, לפעמים “מתעכב בדיוק באותו רגע”. אם זה נמשך, זה הופך ל-underrun, ומוביל לניתוק.

לעומת זאת, אם מטים לכיוון שירותי רקע, קל יותר לתהליך המתמשך שמאחור להחזיר לעצמו CPU, וקשה יותר להחמיץ את המועד.

כלומר, מה שקורה כשזה משפיע הוא לא “ה-CPU נהיה מהיר יותר”, אלא:

  • העדפת החזית נחלשת מעט
  • מספר וזמני הפעמים שהעורף יכול לחדור משתפרים
  • כתוצאה מכך, החמצות מועד פוחתות

זרימה כזו.

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

איור 9: כשזה משפיע, ה-CPU לא נהיה מהיר — התהליך שמאחור פשוט מספיק להגיע למועד.

5. עקרון — quantum והעדפת foreground

אם מסתכלים קצת יותר לעומק, המנגנון להשפעה נראה כך.

5.1 quantum ארוך גורם לצד שכנגד באותה עדיפות להמתין יותר

כשכמה שרשורים מתחרים באותה טווח עדיפות, ככל ששרשור אחד מקבל quantum ארוך יותר, השרשורים האחרים ממתינים יותר בהתאם.

בהגדרה שמעדיפה את היישום שבחזית, צד ה-foreground נוטה לרוץ ברציפות זמן ארוך יותר. אז ה-background שבעדיפות דומה נוטה יותר לקבל “לא עכשיו”.

בעיבוד מסוג שמע, וידאו, מדידה מחזורית, polling וניטור — עיבודים שרוצים לרוץ מעט מעט אבל בקביעות — ההבדל הזה משפיע.

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

איור 10: אורך ה-quantum חוזר ישירות כזמן המתנה של הצד שמתחרה באותה רמה.

5.2 Windows מתחשב ב-foreground בכמה צורות

Windows מתחשב מלכתחילה בצורה משמעותית ב-foreground. הדוגמאות הייצוגיות:

  • העדפת התהליך שהגיע לחזית
  • העדפת השרשור שמחזיק בחלון שקיבל קלט
  • העלאת עדיפות דינמית לשרשור אחרי סיום I/O

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

הצורות שבהן Windows מתחשב ב-foregroundתרשים המראה ש-Windows מתחשב ב-foreground בכמה צורות - העדפת תהליך החזית, העדפת שרשור החלון שמקבל קלט, והעלאת עדיפות דינמית אחרי I/O - ולכן רק הוצאה מהחזית כבר משנה את הטיפול.העדפת תהליך החזיתרק הוצאה מהחזית משנה את הטיפולהעדפת שרשור החלון שמקבל קלטהעלאה דינמית אחרי I/Oההגדרה הזו מקטינה את ההטיה בחלוקה

איור 11: העדפת החזית היא צירוף כמה מנגנונים, וההגדרה הזו משפיעה על ההטיה בחלוקה שביניהם.

5.3 “לא לתת ל-CPU להתעצל” נכון בחצי, ולא מדויק בחצי

הביטוי “לא לתת ל-CPU להתעצל” מובן מבחינת תחושה. במובן שהעיבוד שמאחור פחות נדחק, זה נכון.

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

לכן, ההגדרה הזו:

  • לא הגדרה שמעלה turbo boost
  • לא הגדרה שמכבה C-state
  • לא הגדרה שמשנה ישירות חניית ליבות
  • לא הגדרה של קיבוע לליבת P
המשמעות המדויקת של "לא להתעצל"תרשים המראה שמה שבאמת משתנה בהגדרה הזו הוא לא בקרת ה-idle או התדר של ה-CPU, אלא הסדר ואורך ההרצה של השרשורים, ולא turbo, C-state, חניית ליבות או קיבוע ליבת P.מה שבאמת משתנהמה שלא משתנההתחושה של 'לא לתת ל-CPU להתעצל'הסדר ואורך ההרצהturbo · C-state · חניית ליבות · קיבוע ליבה

איור 12: המהות של “לא להתעצל” היא לא בקרת חשמל, אלא שינוי בסדר ובאורך ההרצה.

6. איך זה משפיע ב-CPU עם ליבות P /‏ E

זו הנקודה שהכי קל לטעות בהבנתה.

בחירה ב-שירותי רקע לא אומרת ש-Windows קובע בפשטות “זה עיבוד רקע אז ליבת E”, “זה חזית אז ליבת P”. ב-Windows המודרני, ובפרט ב-CPU היברידי של Windows 11, בחירת ליבת P /‏ E היא רב-שלבית הרבה יותר.

6.1 שם דומה, אבל דבר שונה

תחילה, יש שני דברים בעלי שם דומה שהם למעשה שונים.

  1. שירותי רקע שב-תזמון המעבד
    • הגדרה שבתוך UI ותיק
    • משפיעה בעיקר על אופן חלוקת זמן ה-CPU בין foreground ל-background
    • מהתחום של quantum ו-foreground boost
  2. Utility /‏ Eco /‏ Low וכדומה ב-QoS
    • חלוקת power / performance של Windows המודרני
    • משפיעה גם על בחירת ליבה וגם על בקרת תדר
    • קשורה ישירות להתנהגות ליבות P /‏ E

השניים האלה אינם זהים.

שם דומה, מהות שונהתרשים המראה שהגדרת תזמון המעבד היא הגדרה ותיקה שמשפיעה על quantum והעדפת foreground, ואילו QoS הוא סיווג power/performance מודרני שמשפיע על בחירת ליבה ובקרת תדר - שני דברים שונים.אלה לא זהיםהגדרת תזמון המעבדquantum והעדפת foregroundסיווג QoSבחירת ליבה ובקרת תדר

איור 13: התחושה מהשם דומה, אבל השכבה שבה כל אחד משפיע שונה לגמרי.

6.2 QoS ו-visibility ב-Windows 11

ב-Windows המודרני, לא רק priority אלא גם QoS משפיע. בפרט במעבד heterogenous, כלומר בהרכב עם ליבות P /‏ E, ה-QoS משפיע על איזה סוג ליבה מועדף.

הסיווג הגס ל-Windows 11 נראה כך:

מצב / מחלקה תמונת ה-QoS השפעה על ליבת P /‏ E היכן זה כתוב
יישום windowed שבחזית וב-focus High מוטה לביצועים טבלת סיווג QoS,‏ In Focus
יישום שמוצג אך לא ב-focus Medium ביניים טבלת סיווג QoS,‏ Visible
יישום ממוזער / מוסתר לגמרי Low בהזנת סוללה, מוטה ל-efficient core טבלת סיווג QoS,‏ Minimized, or Fully Occluded
background services Utility בהזנת סוללה, מוטה ל-efficient cores טבלת רמות QoS,‏ Utility
עיבוד שצירף EcoQoS במפורש Eco מוטה ל-efficient cores טבלת רמות QoS,‏ Eco
שרשור ש-MMCSS צירף לחיץ אצוות Media מוריד תדר, בדגש יעילות טבלת רמות QoS,‏ Media
שרשור מולטימדיה עם מועד שמע Deadline מוטה לביצועים טבלת רמות QoS,‏ Deadline

הטבלה הזו היא ריכוז מחדש של שתי הטבלאות שבמאמר “Quality of Service” של Microsoft Learn — רשימת רמות ה-QoS (‏High /‏ Medium /‏ Low /‏ Utility /‏ Eco /‏ Media /‏ Deadline), וסיווג ה-QoS (ההתאמה שקובעת QoS ממצב תצוגת החלון). זה לא סיווג שהוצא מתוך תצפית. באותו מסמך יש גם הגדרה שתהליך שזוהה כמשמיע קול מטופל כ-High, וגם הסבר ששרשור שלא מתאים לאף אחד מאלה מוקצה אוטומטית לפי היוריסטיקה כמו עדיפות.

עוד תיאור חשוב למי שמודד: יש תכונה שבה בהזנת סוללה, אם אין קלט משתמש לפרק זמן מסוים, ה-QoS של היישום שבחזית עלול לרדת ל-Medium. בתיעוד יש הערה שבעת ביצוע מדידת ביצועים בסוללה, צריך לבטל את התכונה הזו, והשיטה לביטול היא הגדרת 1 בערך DisableUserPresenceQos (‏REG_DWORD) תחת HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerThrottling. אם בבדיקה אוטומטית ללא קלט מופיע “איטי רק בסוללה”, בטוח יותר לחשוד כאן ראשון.

הנקודה החשובה כאן היא שגם רק מזעור עלול לשנות את ה-QoS. כלומר, במחשב נייד עם CPU היברידי, זה קורה בשגרה:

  • הוצאת היישום מהחזית
  • ובנוסף, מזעור
  • וכתוצאה מכך, ירידת ה-QoS
  • מיקום מוטה יותר ל-efficient core
  • הרעה בתחושה או במועד
שרשרת ממזעור עד הרעה במועדתרשים המראה שבמחשב נייד עם CPU היברידי, הוצאה מהחזית ומזעור מורידים את ה-QoS, ובהזנת סוללה בפרט זה מוביל למיקום מוטה ל-efficient core ולהרעה בתחושה או במועד - שרשרת שקורית בשגרה.במיוחד בסוללההוצאה מהחזית ומזעורה-QoS יורדמיקום מוטה ל-efficient coreהרעה בתחושה או במועד

איור 14: רק פעולת מזעור עלולה להוביל לשרשרת שמגיעה עד למיקום הליבה.

6.3 Thread Director ו-hybrid scheduling

ב-CPU היברידי של Intel מדור 12 ואילך, Intel Thread Director מעביר רמזים למערכת ההפעלה. Windows 11 משתמש בזה כדי לקבוע בחוכמה רבה יותר את הקצאת ליבות P /‏ E.

בנוסף, יש בצד Windows מדיניות של heterogenous scheduling.

  • SchedulingPolicy
  • ShortSchedulingPolicy
  • ShortThreadRuntimeThreshold

אם משאירים אותן ב-Automatic, זה מנגנון שבו מערכת ההפעלה מחליטה לפי QoS והרכב המערכת. בנוסף, מאחורי הקלעים, פועלים גם ה-core parking engine וה-performance state engine בצד ניהול חשמל המעבד.

התמונה הכוללת ברורה יותר כך:

התמונה הכוללת של גורמי בחירת הליבהתרשים המראה שעדיפות דינמית, QoS, מצב תצוגה וקלט, מדיניות hybrid scheduling, ורמזי Intel Thread Director מתכנסים יחד לתזמן של Windows וניהול חשמל המעבד, וקובעים בסופו של דבר את ליבת P או E ואת התדר.שרשורעדיפות / עדיפות דינמיתQoS (High / Medium / Low / Utility / Eco / Deadline)מצב תצוגה / השמעה / קלטמדיניות hybrid scheduling (SCHEDPOLICY / SHORTSCHEDPOLICY)רמזי Intel Thread Director (Windows 11 על מעבד היברידי של Intel)תזמן Windows + ניהול חשמל המעבדנקבעים ליבת P / E והתדר

איור 15: עדיפות, QoS, מצב תצוגה, מדיניות תזמון ורמזי Thread Director מתכנסים יחד, וקובעים את הליבה ואת התדר.

7. מתי זה משפיע, ומתי לא

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

7.1 מקרים שנוטים להיות מושפעים

במקרים כאלה, שירותי רקע יכול להיות פתרון הגיוני.

  • כשמעבירים פוקוס ליישום שבחזית, רק העיבוד המתמשך שמאחור נהיה לא יציב
  • שיעור ניצול ה-CPU לא רווי, אבל דווקא המועד של עיבוד מחזורי מוחמץ
  • העיבוד הקריטי נמצא בצד legacy app / helper process / worker thread, ולא מנוצל בו מספיק MMCSS או QoS
  • שירות או תהליך קבוע הוא השחקן הראשי, ויציבות העיבוד שמאחור חשובה יותר מנוחות ה-UI שבחזית

7.2 מקרים שפחות משפיעים, או שהם בעיה נפרדת

לעומת זאת, יש בעיות שההגדרה הזו לבדה לא מספיקה עבורן.

  • השהיית DPC /‏ ISR גדולה
  • תקלה בבקר USB או בדרייבר שמע
  • השפעה של USB selective suspend או חיסכון בחשמל של המכשיר
  • ‏thermal throttling
  • השפעת battery saver, power throttling, או EcoQoS
  • גודל חוצץ קטן מדי
  • היישום כבר מנצל נכון MMCSS /‏ Deadline, והבעיה במקום אחר

בפרט במחשב נייד עם Windows 11 + CPU היברידי, השינוי ב-visibility וב-QoS משפיע במידה רבה. אם ההאטה קורית רק במזעור, או רק בסוללה, בטוח יותר לחשוד ב-QoS / power ולא ב-תזמון המעבד.

איזה כיוון לחשוד לפי סוג התסמיןתרשים המראה שאם רק העברת פוקוס גורמת לחוסר יציבות בעורף, ההגדרה הזו מועמדת, ואם ההחמרה רק במזעור או בסוללה חושדים ב-QoS או power, ואם מקורה DPC/ISR או דרייבר זו בעיה נפרדת.פוקוס לחזית מערער את העורףהחמרה רק במזעור / בסוללהמקורה ב-DPC / ISR / דרייברבוחנים את צורת התסמיןההגדרה הזו מועמדתחושדים ב-QoS / powerבעיה נפרדת שההגדרה לא פותרת

איור 16: תלות התסמין בתנאים מכוונת אם מדובר בהגדרה הזו, ב-QoS, או בבעיה נפרדת.

8. איך רואים בעבודה מעשית

לבידוד בפועל, הסדר הבא ברור יותר.

  1. מקבעים תנאים
    • הזנת AC או סוללה
    • מצב חשמל
    • גודל חוצץ
    • מצב foreground / visible / minimized
  2. משווים בין תוכניות ל-שירותי רקע באותם תנאים
    • לא רק בתחושה, אלא מתעדים מספר dropout, מספר glitch, ועיכוב עיבוד
  3. ב-Windows 11 / CPU היברידי, חושדים בצד QoS
    • האם ההחמרה רק במזעור
    • האם משתנה במצב audible
    • האם ההחמרה רק בסוללה
  4. בשמע או וידאו, בודקים קודם MMCSS
    • האם השרשור החשוב מעביר ל-Windows את המסר “יש כאן מועד חשוב”
  5. אם עדיין לא נפתר, חופרים ל-DPC /‏ ISR /‏ USB / דרייבר
    • כאן זה כבר נושא שמעבר לתזמן עצמו
הסדר לבידוד הסיבהתרשים המראה שקודם מקבעים תנאים, משווים בין שתי ההגדרות באותם תנאים, ב-CPU היברידי חושדים ב-QoS, בשמע ווידאו בודקים MMCSS, ואם עדיין לא נפתר חופרים ל-DPC/ISR ולדרייבר.קיבוע תנאיםהשוואת שתי ההגדרות באותם תנאיםב-CPU היברידי, חשד ב-QoSבשמע/וידאו, בדיקת MMCSSאם נשאר, חפירה ל-DPC / ISR / דרייבר

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

8.1 מה בודקים בכל שלב, ואיך

כדי לא להישאר ב”חושד” בלבד, נציג את אמצעי הבדיקה.

מה רוצים לבדוק איך בודקים בפועל
ההגדרה הנוכחית של תזמון המעבד פתיחת SystemPropertiesPerformance.exe, או קריאת Win32PrioritySeparation עם PowerShell מפרק 2.1
AC / סוללה ותוכנית חשמל בדיקה ותיעוד עם powercfg /getactivescheme לתוכנית הפעילה, ועם powercfg /list לרשימה
האם התהליך מוגבל חשמלית בלשונית “פרטים” של מנהל המשימות, לחיצה ימנית על כותרת העמודה והוספת עמודת ההגבלה החשמלית. ב-Windows 11, גם בעמודת המצב בלשונית “תהליכים” מוצג סימון מצב יעילות
האם ה-QoS של היישום שבחזית יורד בסוללה הגדרת DisableUserPresenceQos מפרק 6.2, והשוואת ההתנהגות לפני ואחרי
האם השרשור החשוב מנצל MMCSS בקוד שלכם, בדיקה האם קוראים ל-AvSetMmThreadCharacteristics /‏ AvSetMmMaxThreadCharacteristics, והאם הידית שמוחזרת תקפה. אם זה מנוצל, העדיפות עולה בהתאם לקטגוריית התזמון, ואפשר לראות זאת בעדיפות ברשימת השרשורים של Process Explorer (‏High הוא 23〜26,‏ Medium הוא 16〜22,‏ Low הוא 8〜15)
הגדרת המשימה ב-MMCSS תחת HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks יש משימות כמו Audio,‏ Pro Audio,‏ Capture,‏ Playback, ואפשר לבדוק את Scheduling Category ו-Priority
השהיית DPC /‏ ISR לוקחים trace עם wpr -start GeneralProfile -filemode, עוצרים עם wpr -stop trace.etl, ובודקים בגרף DPC/ISR של WPA את הזמן לפי מודול
על איזו ליבה השרשור רץ פותחים את אותו trace ב-CPU Usage (Precise) של WPA, ובודקים את עמודת המעבד הלוגי שרץ. ההתאמה בין מספר המעבד הלוגי לליבת P /‏ E תלויה בדגם, ולכן קודם מכינים טבלת התאמה עם כלי כמו Coreinfo של Sysinternals, ורק אז קוראים. אפשר להשוות בין המספרים שמנוצלים בחזית לעומת במזעור

wpr היא פקודה של Windows Performance Recorder, וכלולה ב-Windows ADK. מריצים אותה ממסוף בהרשאות מנהל.

בעבודה מעשית, “האם הגענו למועד” חשוב יותר משיעור ניצול CPU ממוצע. זו נקודה שממש מהותית.

המדד שבודקים הוא המועדתרשים המראה שבסוג הבעיה הזה, שיעור ניצול CPU ממוצע לבדו לא מספיק, ומה שחשוב יותר הוא האם עיבוד מחזורי הגיע למועד שלו.לבד לא מספיקבזה מסתכליםשיעור ניצול CPU ממוצעהערכת יציבותהאם הגיע למועדסופרים לפי מספר dropout או glitch

איור 18: גם ממוצע נמוך לא מונע החמצת מועד, ולכן סופרים אם הגיעו למועד ורק אז מחליטים.

9. סיכום

אם מנסחים בקצרה מה קורה כשמעבירים את תזמון המעבד ל-שירותי רקע, זה נראה כך:

  • מה שמשתנה הוא לא מהירות ה-CPU עצמה, אלא אופן חלוקת זמן ה-CPU בין foreground ל-background
  • תוכניות מקל על תחושת היישום שבחזית
  • שירותי רקע הופך את התהליך המתמשך שמאחור לפחות נדחק
  • לכן, במקרים כמו שמע, וידאו, לכידה, ניטור ותהליך קבוע, שבהם המועד שמאחור חשוב, זה עשוי להשפיע
  • עם זאת, ב-CPU עם ליבות P /‏ E, מיקום הליבה בפועל מושפע חזק גם מ-QoS, מדיניות חשמל, hybrid scheduling ו-Thread Director
  • לכן, ב-Windows של היום, טבעי להתייחס להגדרה הזו כעשויה להשפיע, אבל לא שחקן ראשי בלעדי

בקיצור, זו לא כפתור שמעלה את כוח הסוס של ה-CPU, אלא כפתור שמחליף את חלוקת העבודה.

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

ובעידן ה-CPU ההיברידי, מעל זה יש שכבה נוספת של QoS ובחירת ליבת P /‏ E. כשמסתכלים עד לכאן, מתבררים גם “למה זה יכול להשפיע” וגם “למה לפעמים זה לא משפיע”.

המקום של הכפתור הזה בהווהתרשים המראה שהכפתור הזה מטה את חלוקת העבודה מעט לכיוון background, אבל בעידן ה-CPU ההיברידי, מעל השכבה הזו נמצאת שכבת QoS ובחירת ליבת P/E, ולכן זה עשוי להשפיע אך אינו שחקן ראשי בלעדי.מעליה נמצאתכפתור שמטה חלוקה לכיוון backgroundשכבת quantum והעדפהשכבת QoS ובחירת ליבת P / Eמתבררת גם הסיבה שמשפיע וגם הסיבה שלא

איור 19: הכפתור הזה משפיע רק על השכבה התחתונה, ובחירת הליבה של היום נקבעת על ידי השכבה שמעליה.

10. מקורות

מאמרים עדכניים עם אותן תגיות, להעמקה בנושאים קרובים.

העמודים האלה ממקמים את הנושא בהקשר רחב יותר של שירותים והחלטות.

המאמר קשור ישירות לשירותים הבאים.

שאלות נפוצות

שאלות נפוצות בפניות בנושא המאמר.

מה משתנה כשמעבירים את 'תזמון המעבד' ל'שירותי רקע'?
לא משתנה מהירות ה-CPU או השעון, אלא אופן חלוקת זמן ה-CPU בין היישום שבחזית לתהליך שרץ מאחור. מבחינה פנימית זו הגדרה שקשורה ל-Win32PrioritySeparation, והיא משפיעה על אופן חלוקת ה-quantum (פרוסת הזמן) ועל מידת העדפת ה-foreground. 'תוכניות' נוטה להעדיף את היישום שבחזית, ו'שירותי רקע' נוטה לטפל בחזית ובעורף בצורה שווה יותר. שווה לציין שגם אם בוחרים בהגדרה הזו, היישום שלכם לא הופך לשירות Windows.
למה בחירה ב'שירותי רקע' לפעמים מתקנת ניתוקי שמע?
כי עיבוד שמע לא מסתפק ב'מהיר בממוצע' — צריך למלא חוצץ עד מועד שנקבע כל כמה מילישניות. בהגדרת 'תוכניות', היישום שבחזית נוטה לרוץ פרקי זמן ארוכים יותר, ועיבוד השמע שמאחור, גם אם בממוצע תקין, לפעמים מתעכב בדיוק באותו רגע והופך ל-underrun. הטיה לכיוון 'שירותי רקע' מקלה על התהליך שמאחור להחזיר לעצמו CPU, ולפעמים מפחיתה החמצות מועד. עם זאת, בעיות שמקורן בהשהיית DPC/ISR, חיסכון בחשמל ב-USB, תקלת דרייבר, throttling תרמי, או EcoQoS — לא נפתרות בהגדרה הזו.
האם הבחירה ב'שירותי רקע' גורמת לתהליכי הרקע לרוץ על ליבת P?
לא. איזו ליבה — P או E — תיטען נקבעת יותר לפי QoS, מדיניות חשמל, hybrid scheduling ו-Intel Thread Director, מאשר לפי ההגדרה הזו. ב-Windows 11, גם רק מזעור יישום מוריד את ה-QoS שלו, וברור למדי שבהזנה מסוללה הוא נוטה להתמקם קרוב יותר ל-efficient core. אם ההאטה קורית רק במזעור, או רק בסוללה, סביר יותר לחשוד ב-QoS או בצד החשמל ולא בהגדרה הזו.
איך מבודדים את הסיבה לניתוקי שמע או dropout?
קודם מקבעים תנאים כמו הזנת AC, מצב חשמל, גודל חוצץ, ומצב חזית/מזעור, ואז משווים תחת אותם תנאים בין 'תוכניות' ל'שירותי רקע' ומתעדים מספר dropout ועיכוב עיבוד. ב-CPU היברידי של Windows 11, בודקים אם ההחמרה קורית רק במזעור או בסוללה ואז חושדים ב-QoS. בשמע או וידאו, בודקים תחילה אם השרשור החשוב מצליח להשתמש ב-MMCSS, ואם עדיין לא נפתר, חופרים ל-DPC/ISR,‏ USB ודרייברים. בשלב הזה זה כבר נושא שמעבר לתזמן עצמו.

פרופיל הכותב

עמוד היכרות עם כותב המאמר.

Go Komura

מנהל KomuraSoft LLC

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

קישורים ציבוריים

חזרה לבלוג