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

מה מערכת ההפעלה Overhead?

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

המונחים: OS Overhead

כדי להעריך את ההשפעה, עלינו לפרק את המקורות העיקריים:

  • (FLT:0)Context Switching:FLT:1 The OS חייב לחסוך ולשחזר את מצב התהליך או חוט בעת מעבר ביניהם.זה כולל רישומים, תוכניות נגד ומיפוי זיכרון. על מעבדים מודרניים, מתג קונטקסט יכול לעלות 1-10 שניות, אשר עבור יישומים בזמן אמת עם מועדים בטווח המיקרו השני הוא אסון.
  • (FLT:0System Calls:FLT:1 יישומים של המשתמש-space משתמשים מערכת קוראים גישה לשירותי גרעין (למשל, קריאה), כתיבה(), ioctl() המעבר ממשתמש למצב הקרנל כרוך בשינויים ברמת הפריבילגיה, החלפת ערימה, ולפעמים העתקת נתונים בין buffers.אפילו מערכת קלה יותר מקנה חוסר יכולת יתר.
  • (FLT:0 interrupt Handling: FLT:1Harware מפריע (למשל, כרטיסי רשת, בקרים דיסק, צירים) לכפות את CPU להפסיק לבצע את המשימה הנוכחית, לחסוך מצב, ולהפעיל שגרת שירות מפריעה (ISR) גבוהה להפריע יכול להוביל לריצה או לריצה, שבו CPU מבלה את רוב הזמן שלה טיפול, במקום עיבוד נתונים הנדסיים.
  • (FLT:0) מזכר ניהול: 1FLT (המערכת מנהלת זיכרון וירטואלי באמצעות טבלאות דף, תרגום Lookaside Buffers (TLB), ופגמים בעמוד. .מונים גדולים הנפוצים בעיבוד הנדסי (למשל, 3D meshes, יומני חיישן) יכול לגרום פגמים רבים, כל אחד מהם דורש מתג הקשר ו / I / O פעולות.
  • (FLT:0) החלטות צופיות: FLT:1 קובע לוח הזמנים של מערכת ההפעלה אשר תהליך או חוט פועל הבא. לחלוטין הוגן לוח זמנים (CFS) על לינוקס, למשל, ניסיונות להפיץ זמן CPU הוגן, אבל ההוגנות הזו יכולה להציג ג'טר וכבדות בלתי מבוקרת למשימות הנדסיות קריטיות בזמן.
  • (FLT:0)I/O Scheduling and Buffering:FLT 1 כאשר יישומים הנדסיים לקרוא מדיסק או רשת, מערכת ההפעלה עשויה להורות בקשות (למשל, עבור אלגוריתמים של מעלית דיסק) ונתוני חיץ.

השפעה על עיבוד נתונים הנדסי

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

להגביר את ה-Latency

שקיפות - הזמן בין הגעת נתונים לבין השלמת עיבוד - הוא קריטי עבור לולאות בקרה בזמן אמת.בבקר זרוע רובוטי, חיישן קורא פקודה שלוקח 100 מיקרו-שניות בשל מערכת ההפעלה מעל 10 מיקרו-שניות יכול לגרום overshoot או חוסר יציבות.עבור עיבוד אותות דיגיטליים בטלקומוניקציה, עודף משקל מכווץ איכות השירות.

צמצום באמצעותput

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

אחריות ושאינן

Jitter מתייחס לריאציות בעקביות על פני פעולות. במערכות זמן קשות, זמן ביצוע הגרוע ביותר (WCET) חייב להיות מחויב.מערכת ההפעלה מעל פני השטח מציגה אי ודאות בלתי נשלטת כי הפרעות, preemptions לוח הזמנים, ו- cache מתגעגעים מופעלים על ידי פעילות מערכת ההפעלה הם בלתי צפויים.

המונחים:

עבודות הנדסה מודרניות לרוץ תהליכים מרובים: נהג רכישת נתונים, כלי הדמיה, שירות logging, ואת משימות רקע מערכת ההפעלה.אלה להתחרות על CPU כיבים, רוחב פס זיכרון, וגישה אוטובוס. OS overhead מתזמון והקשר מעבר מחמיר את התוכן, המוביל ל cacherashing וזיכרון אוטובוס ריצוף.

דוגמאות אמיתיות ל-OS Overhead בהנדסה

מערכות בקרה בזמן אמת

שקול מכונת CNC תעשייתית המפעילה מערכת בקרה מבוססת לינוקס.הלאה הבקרה חייבת לקרוא קודרים מיקום והוראות מוטוריות מקבילות כל 1 מ' שנייה.אם מערכת ההפעלה מתרחשת 200 מיקרו-שניות של מעל הראש לכדי גלגול עקב מתגים והפרעה, רק 800 מיקרו-שניות נשארות כדי חישוב ותקשורת בפועל.

רכישת נתונים באמצעות High-Comput Data Acquisition

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

Fluid Dynamics (CFD) Simulations

סימולציות CFD לרוץ על צמתים מצרפים בדרך כלל להשתמש MPI לתקשורת בין-מעבד.כל הודעה MPI כוללת שיחות מערכת עבור שלח / קבלה, מתגי הקשר בין המשתמש לבין שטח הקרנל, וניהול חיץ.כאשר סימולציות לרוץ על אלפי ליבות, מערכת ההפעלה מעל הודעה מועברת יכול לקבל חשבון עבור 10-20% של סימולציה כוללת.

מערכת ההפעלה Overhead

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

  • (FLT:0) Perf / לינוקס perf events:cioFLT ( 1 Measures CPU מחזורים בילה הקרנל לעומת מצב המשתמש, סעיפים מתג הקשר, מפספסים, וטענות סניף. על ידי הפעלת עומס עבודה הנדסי וניתוח עבור פלט f טט, אחד יכול להעריך את אחוז המחזורים הנצרכים על ידי פעילות מערכת ההפעלה.
  • (FLT:0)Ftrace ו-LTTng:FIRLT:1) מסגרות אלה מותאמות לפונקציות שיא, הפרעות מטפלים ואירועים לוח זמנים עם אחווה טובה.הם מסייעים לזהות היכן הזמן מושקע - בתוכנות מערכת, מטפלים, או לוח הזמנים.
  • (FLT:0)Benchmarks: FLT:1 מיקרובנצ'מרקס כמו קו רוחב מידה lmbench, מערכת התקשר מעל ראש, ורוחב הפס זיכרון החל את התוצאות האלה לפרופיל פעולה הנדסי מאפשר estimation של הגרוע ביותר על פני השטח.
  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

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

אסטרטגיות ל-Minimize OS Overhead

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

השתמש במערכת הפעלה בזמן אמת (RTOS) או Real-Time Linux

עבור יישומים בזמן אמת קשה, RTOS ייעודי (למשל, FLT:0FreeRTOSFLT:1, VxWorks) מבטל הרבה מטרות כלליות OS overheads.מערכות אלה יש לוח זמנים צפוי, מתגי הקשר מינימלי, ולעתים קרובות לאפשר kernel preemption. Alternatively, את הקרנל לינוקס ניתן לתקן עבור בזמן אמת (PRE), תוך מתן בחירה מלאה של מערכת ההפעלה.

מערכת מינימלית קוראת

יישומים צריכים אצווה לקרוא / לשכתב, להשתמש בפוזרים גדולים כדי להפחית את תדירות השיחה, ולהעדיף I / O (mmap) על מערכת קריאה מסורתית / כתיבה קורא עבור נתונים גדולים.כאשר אפשרי, להשתמש I / O סינכרוני I / O (AIO או t uring) כדי לחפוף עם I / O ללא חסימת לאחרונה לינוקס , 000 000 000 000, אשר קורא באופן משמעותי על ידי ביצועים גבוהים ו / O / O.

יישום Efficient Scheduling ו CPU Pinning

(גיוון) נקשר תהליכים קריטיים לליבות ספציפיות, מונעים מהלוח הזמנים להגר אותם ולגרום למגרעות מטמון בשילוב עם בידוד של ליבות אלה מ- OS להפריע ותהליכי daemon (באמצעות:0 פרמטר הקרנל או cpus), מהנדסים יכולים ליצור איים עיבוד ייעודיים.זה יעיל במיוחד על מערכות מרובותcore שבו אחד מטפל I / O אחר אלגוריתם הנדסה פועל.

השתמש ב-Karnel Bypass ו- Zero-Copy Techniques

טכנולוגיות כמו ערכת פיתוח מטוס הנתונים (SleLT:0 DPDKearFLT) ו- OpenOnload של סולפלר מאפשרות ליישומים של סביבת המשתמש גישה ישירה לחומרת רשת, תוך עקפה את ערימה הרשת הקרנל לחלוטין.זה מבטל שיחות מערכת, מתגי קשר, ועתקים נתונים.במסחר בזמן אמת ולכידת נתונים, DPDK יכול להשיג עיבוד קוטר עם מינימום של CPUheads (או דפי CTL אחוריים) באופן דומה).

צמצום ה- Interrupt Handling Overhead

אינטררופווט פחם (חבילת אירועים מרובים לתוך הפרעה אחת) מפחית עומס CPU.המנגנון של לינוקס מדגימים מכשירים ברשת עם הפרעות מוגבלות תחת עומס גבוה, צמצום מעל הראש.עבור אחסון, סקר ממשקי I / O (למשל, NVMe עם לא להפריע) יכול עוד להפחית את הגמישות.

משאבים ייעודיים

Dedicate CPU ליבות, זיכרון ואפילו מחיצות מטמון לתהליכים הנדסיים קריטיים.חלוקה משאבים באמצעות cgroups, מתיחות מכולות (Docker with CPU להגדיר גבולות), או בידוד היפרבידור (בסביבות וירטואליות) מונעת שביעות רצון ולהפחית את תזמון מערכת ההפעלה מעל ראש.

השתמש ב-Tickless Kernels ו-התאמה של שדרלינג

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

שקול Unikernels או Containerization

Unikernels להרכיב את היישום יחד עם רק את רכיבי מערכת ההפעלה הדרושים לתוך תמונה מכונה אחת שפועלת ישירות על hypervisor או חומרה, הסרת מערכת ההפעלה מטרות כלליות overhead. בעוד נישה, הם מציעים יעילות קיצונית לעיבוד נתונים במערכות משובצות (Docker, Podman) לא להפחית את הקרנל מעל טבועה, אבל הם מספקים משאבים ויכולים לעזור בכל רחבי הליבה ייעודית.

כיוונים עתידיים

המגמה לעבר חומרה מיוחדת ומיקרו-קרבים ממשיכה לעצב את הנוף.מיקרו-קרנל כמו SL4 להפחית את מערכת ההפעלה על ידי העברת רוב השירותים לחלל המשתמש, צמצום קוד הקרנל שיכול לגרום להפרעה.הם מושכים עבור מערכות הנדסיות קריטיות בטיחות, שבו בידוד ובסיס מחשוב אמין מינימלי נדרשים.בנוסף, תמיכה בחומרה עבור וירטואליזציה והגנה על זיכרון (למשל, VT-Tx, AMD-VRM מאפשר שילוב נתונים דינמי יותר עם יישומים מתקדמים יותר עם ניהול נתונים).

מסקנה

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