ניהול דינמי של משאבים מהדור הבא

מכונות וירטואליות מסוג N4A שמבוססות על מעבדי Google Axion, מכונות וירטואליות מסוג N4D שמבוססות על מעבדי AMD EPYC Turin מהדור החמישי ומכונות וירטואליות מסוג N4 שמבוססות על מעבדי Intel Xeon מהדור החמישי משתמשות ב-Titanium. בנוסף, סדרות המכונות האלה משתמשות בניהול דינמי של משאבים מהדור הבא כדי להשיג יעילות בעלויות. הן עושות זאת באמצעות שימוש טוב יותר במשאבים הפיזיים שזמינים במחשבים המארחים, וגם באמצעות מתזמן מעבד (CPU) מותאם אישית ומיגרציה פעילה שמודעת לביצועים, כדי לאזן בין צורכי הביצועים של עומס העבודה לבין המשאבים הזמינים. אלה אותן טכנולוגיות שמשמשות את שירותי חיפוש Google,‏ Google Ads, מפות Google ו-YouTube כדי להריץ ביעילות את עומסי העבודה הרגישים לזמן האחזור.

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

איך פועל ניהול משאבים דינמי

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

ניהול דינמי של משאבים מאפשר ל-Compute Engine להשתמש טוב יותר במעבדים הפיזיים הזמינים. המערכת מתזמנת מכונות וירטואליות לשרתים על סמך הביקוש למשאבים, ומתזמנת את השרשורים של ה-vCPU למעבדים הפיזיים כך שזמן ההמתנה יהיה מינימלי. ברוב המקרים, אנחנו יכולים לעשות את זה בצורה חלקה, כך Google Cloud שניתן להריץ מכונות וירטואליות בצורה יעילה יותר על פחות שרתים.

הרכיבים של ניהול משאבים דינמי

ב-Compute Engine נעשה שימוש בטכנולוגיות הבאות לניהול דינמי של משאבים:

שרתים פיזיים גדולים ויעילים יותר

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

מיקום חכם של מכונות וירטואליות

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

מיגרציה פעילה עם התחשבות בביצועים

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

מתזמן המשימות ביחידת העיבוד המרכזית (CPU) של ה-hypervisor

מתזמן המעבד של ההיפר-ויז'ר ממפה באופן דינמי את המעבד הווירטואלי והזיכרון הווירטואלי למעבד הפיזי ולזיכרון הפיזי של שרת המארח לפי דרישה. הניהול הדינמי הזה משפר את היעילות של מכונות וירטואליות מבחינת עלויות, כי הוא מאפשר שימוש טוב יותר במשאבים הפיזיים. שימוש יעיל במשאבים מאפשר ל-Compute Engine להריץ מכונות וירטואליות בצורה יעילה יותר על פחות שרתים, וכך Google Cloud להעביר את החיסכון למשתמשים.

ניהול דינמי של משאבים מהדור הראשון

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

מכשיר זיכרון וירטואלי מסוג Virtio עם מכונות וירטואליות מסוג E2

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

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

אימות ההתקנה של הדרייבר

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

Linux

רוב הפצות ה-Linux כוללות את מנהל ההתקן של מכשיר הזיכרון virtio balloon. כדי לוודא שהתמונה כוללת את מנהל ההתקן שהותקן ונטען, מריצים את הפקודה:

sudo modinfo virtio_balloon > /dev/null && echo Balloon driver is \
installed || echo Balloon driver is not installed; sudo lsmod | grep \
virtio_balloon > /dev/null && echo Balloon driver is loaded || echo \
Balloon driver is not loaded

בליבות של Linux בגרסה 5.2 ומטה, מערכת הזיכרון של Linux מונעת לפעמים הקצאות גדולות בטעות, כשהמכשיר הווירטואלי של הזיכרון נמצא. בפועל, הבעיה הזו נדירה, אבל כדי למנוע אותה מומלץ לשנות את הגדרת הזיכרון הווירטואלי overcommit_memory ל-1. השינוי הזה כבר בוצע כברירת מחדל בכל התמונות שסופקו על ידי Google ופורסמו מאז 9 בפברואר 2021.

כדי לתקן את ההגדרה, משתמשים בפקודה הבאה כדי לשנות את הערך מ-0 ל-1:

sudo /sbin/sysctl -w vm.overcommit_memory=1

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

vm.overcommit_memory=1

Windows

תמונות Windows ב-Compute Engine כוללות את מכשיר ה-balloon של virtio. אבל תמונות Windows מותאמות אישית לא. כדי לוודא שמנהל ההתקן מותקן בתמונת Windows, מריצים את הפקודה:

googet verify google-compute-engine-driver-balloon

השבתת מכשיר הזיכרון הווירטואלי של virtio

השימוש במכשיר הזיכרון הווירטואלי מאפשר ל-Compute Engine לנצל את משאבי הזיכרון בצורה יעילה יותר, וכך Google Cloud יכול להציע מכונות וירטואליות מסוג E2 במחירים נמוכים יותר. אפשר להשבית את מנהל ההתקן של מכשיר הזיכרון הווירטואלי כדי להפסיק את השימוש בו. אחרי השבתת מכשיר הזיכרון הווירטואלי של virtio, עדיין תקבלו המלצות להתאמת גודל, אבל יכול להיות שהן לא יהיו מדויקות.

Linux

כדי להשבית את המכשיר ב-Linux, מריצים את הפקודה הבאה:

sudo rmmod virtio_balloon

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

Windows

כדי להשבית את המכשיר ב-Windows, מריצים את הפקודה הבאה:

googet -noconfirm remove google-compute-engine-driver-balloon

אפשר להוסיף את הפקודה הזו לסקריפט לטעינה בזמן ההפעלה של ה-VM כדי להשבית את המכשיר באופן אוטומטי בזמן האתחול של ה-VM.

המאמרים הבאים