עשרה שיעורים עבור וירטואליזציה מוטבע

Connected, but alone? | Sherry Turkle (פברואר 2019).

Anonim

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

מארק מרמל
ווינד ריבר מערכות
Alameda, קליפורניה
//www.windriver.com

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

1. תחשוב על אפשרויות החלוקה שלך

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

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

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

ניתן להשתמש ב- Hypervisor כדי לשתף את הליבה היחידה בין מערכות הפעלה מרובות (ריצה במכונות וירטואליות). זה יכול גם מחיצה שבב ארבע ליבות לשתי מחיצות SMP דו סטרי. לבסוף, ניתן להשתמש בו כדי לפקח על מערכת ריבוי מעבדים אסימטרית (או sAMP, עבור AMP בפיקוח); המנחה מספק אפשרויות אתחול, מחזור חיים (הפסקה, הפעלה מחדש) ואמינות ומקצר את זמן הפיתוח בהשוואה למערכת AMP מסורתית. וירטואליזציה מספקת את היכולת לחלק ולספק אבטחה ואמינות בו זמנית.

2. חשוב על אפשרויות מערכת ההפעלה שלך

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

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

3. שקול איחוד

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

איור 2. מעבר ממעבד מרובה ליבות מרובות ליבות.

4. תחשוב על העתיד

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

5. שקול מקבילות

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

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

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

6. שמור על המשאבים בראש

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

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

7. אל תשכח את האבטחה

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

8. אל תשכח את ההפעלה

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

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

9. אל תשכח כלים

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

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

10. לחקור ולמדוד

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

מציאת התצורה הטובה ביותר של ריבוי ליבות (SMP, AMP, sAMP או וירטואליזציה) אינה פשוטה; זה דורש חקירה זהירה. גם אז לא ניתן לחזות במדויק את הביצועים של יישום נתון על תצורה נתון עם מידה גבוהה של אמון.

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

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

דוגמא

בשנים האחרונות היו היפרביטורים למערכות משובצות. הצעה אחת כזו היא Wind River Hypervisor, אשר עודכנה לאחרונה לגרסה 1.1 ועובדת עם מעבדי ליבה בודדים ומעבדים מרובי ליבות. תכונות חדשות כוללות תמיכה במיקרו-ארכיטקטורות אינטל העדכניות ביותר, כגון מעבדי Nehalem (עם תמיכה בקוריק של פריסקייל בהמשך השנה), בשילוב עם הגרסאות העדכניות ביותר של VxWorks ו- Wind River Linux, תוך תמיכה במערכות הפעלה אחרות להגדלת היכולות, יכולות נוספות עבור תקשורת מכונת intervirtual, ואופטימיזציה לשימוש בשילוב עם On-Chip Debugging 3.2. ■