במאמר הזה מוסבר איך לאבחן ולפתור בעיות בביצועים של מעבד, זיכרון ואחסון במכונות וירטואליות (VM) ובמכונות Bare Metal ב-Compute Engine.
לפני שמתחילים
- מתקינים את סוכן התפעול כדי לראות מדדי ביצועים מלאים של המכונה, כמו ניצול הזיכרון והשטח בדיסק
צפייה במדדי הביצועים
כדי לראות את מדדי הביצועים של מופעי החישוב, משתמשים במדדי יכולת הצפייה של Cloud Monitoring שזמינים במסוף Google Cloud .
נכנסים לדף VM Instances במסוף Google Cloud .
אפשר לראות מדדים של מופעים ספציפיים או של חמשת המופעים שצורכים את הכמות הכי גדולה של משאב מסוים.
כדי לראות את המדדים של מופעים ספציפיים:
לוחצים על שם המופע שרוצים לראות את מדדי הביצועים שלו. ייפתח הדף Details של המופע.
לוחצים על הכרטיסייה Observability כדי לפתוח את הדף Overview של Observability.
כדי לראות את המדדים של חמשת המופעים שצורכים את הכמות הכי גדולה של משאב, לוחצים על הכרטיסייה Observability בדף VM instances.
מעיינים במדדי הביצועים של המופע. אפשר לעיין בקטעים סקירה כללית, מעבד, זיכרון, רשת ודיסק כדי לראות מדדים מפורטים לגבי כל נושא. אלה מדדים מרכזיים שמצביעים על ביצועי המופע:
בדף סקירה כללית:
ניצול המעבד (CPU). אחוז השימוש במעבד של המופע.
ניצול הזיכרון. אחוז הזיכרון שבו נעשה שימוש על ידי המופע, לא כולל מטמונים של דיסקים. במקרים שבהם נעשה שימוש במערכת הפעלה של Linux, הנתון הזה לא כולל גם את זיכרון הליבה.
תנועה ברשת. הקצב הממוצע של בייטים שנשלחים ומתקבלים במרווחי זמן של דקה.
חיבורים חדשים עם מכונות וירטואליות (VM), חיצוניים או של Google. המספר המשוער של זרימות TCP/UDP שונות בדקה אחת, מקובצות לפי סוג עמית.
קצב העברת הנתונים בדיסק. הקצב הממוצע של בייטים שנכתבו לדיסקים ונקראו מהם.
Disk IOPS השיעור הממוצע של פעולות קריאה וכתיבה של קלט/פלט בדיסקים.
בדף סיכום הרשת:
נשלח למכונות וירטואליות, לכתובות חיצוניות או ל-Google. קצב תעבורת הנתונים ברשת שנשלח לשירותים, למופעים וליעדים חיצוניים של Google, על סמך מדגם של חבילות. המדד מותאם כך שהסכום שלו יהיה זהה לתנועת הרשת הכוללת שנשלחה.
התקבל מ-VMs/External/Google. קצב תעבורת הרשת שהתקבל משירותי Google, ממופעים וממקורות חיצוניים, על סמך מדגם של מנות. המדד מותאם כך שהסכום שלו תואם לתנועת הרשת הכוללת שהתקבלה.
המספר הכולל של חבילות נתונים ברשת. השיעור הכולל של חבילות שנשלחו ושהתקבלו במרווחי זמן של דקה אחת.
גודל ממוצע של מנות. הגודל הממוצע של מנות, בבייטים, שנשלחו והתקבלו במרווחי זמן של דקה.
חומת האש דחתה חבילות נתונים נכנסות. שיעור המנות הנכנסות ברשת שנשלחו למופע, אבל לא התקבלו במופע, כי הן נדחו על ידי כללי חומת האש.
בדף Disks Performance (ביצועי הדיסקים):
גודל ממוצע של קלט/פלט הגודל הממוצע של פעולות קריאה וכתיבה של קלט/פלט בדיסקים. קלט/פלט אקראי קטן (4 עד 16 KiB) מוגבל בדרך כלל על ידי IOPS, וקלט/פלט רציף או גדול (256 KiB עד 1 MiB) מוגבל על ידי קצב העברת הנתונים.
Queue Length Avg. מספר פעולות הקלט/פלט בדיסק שנמצאות בתור או שמתבצעות, שנקרא גם עומק התור, עבור 5 המכשירים המובילים. כדי להגיע למגבלות הביצועים של הדיסקים, משתמשים בעומק תור גבוה של קלט/פלט. דיסק אחסון מתמיד (Persistent Disk) ו-Google Cloud Hyperdisk הם אמצעי אחסון ברשת, ובדרך כלל זמן האחזור שלהם גבוה יותר בהשוואה לדיסקים פיזיים או לדיסקים מקומיים מסוג SSD.
השהיה הממוצעת של קלט/פלט: ההשהיה הממוצעת של פעולות קריאה וכתיבה של קלט/פלט, שמצטברת על פני פעולות של כל הדיסקים שמצורפים למופע, ונמדדת על ידי סוכן תפעול. הערך הזה כולל את זמן האחזור של מערכת ההפעלה ושל עיבוד מערכת הקבצים, והוא תלוי באורך התור ובגודל הקלט/פלט.
הסבר על מדדי הביצועים
הביצועים של המכונה מושפעים מהחומרה שהמכונה פועלת עליה, מעומס העבודה שמופעל במכונה ומסוג המכונה. אם החומרה לא יכולה לתמוך בעומס העבודה או בתעבורת הרשת של המופע, יכול להיות שהביצועים של המופע יושפעו.
ביצועים של המעבד (CPU) והזיכרון
פרטי החומרה
הביצועים של המעבד והזיכרון מושפעים מהמגבלות הבאות של החומרה:
- כל CPU וירטואלי (vCPU) מיושם כריבוי הליכי משנה של חומרה יחידה במעבד CPU.
- מעבדי Intel Xeon CPU תומכים במספר שרשורים של אפליקציות בליבה אחת של מעבד.
- מכונות וירטואליות שמשתמשות בסוגי מכונות C2 כוללות מיפוי קבוע של ליבות וירטואליות לליבות פיזיות, ומציגות ארכיטקטורת תאים של NUMA למערכת ההפעלה של האורח.
- רוב המכונות הווירטואליות מקבלות את תדירות הטורבו של כל הליבות שמפורטת בפלטפורמות CPU, גם אם רק תדירות הבסיס מפורסמת בסביבת האורח.
- בסוגי מכונות עם ליבות משותפות נעשה שימוש בהחלפת הקשר כדי לשתף ליבה פיזית בין vCPU לריבוי משימות. הן גם מציעות יכולות של שימוש זמני במעבד מעבר למכסה (bursting), שבמהלכן ניצול המעבד במכונה וירטואלית יכול לעלות על 100%. מידע נוסף זמין במאמר בנושא סוגי מכונות עם ליבות משותפות.
כדי להבין את הביצועים של המעבד (CPU) והזיכרון של מכונה, צופים במדדי הביצועים של ניצול המעבד ושל ניצול הזיכרון. בנוסף, אתם יכולים להשתמש במדדי תהליך כדי לראות תהליכים שפועלים, לשייך אנומליות בצריכת משאבים לתהליך ספציפי או לזהות את הצרכנים היקרים ביותר של משאבים במופע.
שימוש גבוה ועקבי במעבד (CPU) או בזיכרון מצביע על הצורך להגדיל את הגודל של מכונה וירטואלית. אם המכונה הווירטואלית משתמשת באופן עקבי ביותר מ-90% מהמעבד או מהזיכרון שלה, צריך לשנות את סוג המכונה הווירטואלית לסוג מכונה עם יותר vCPU או זיכרון.
ניצול מעבד גבוה או נמוך באופן חריג עשוי להצביע על כך שהמכונה הווירטואלית חווה נעילה רכה של המעבד. מידע נוסף זמין במאמר פתרון בעיות של נעילות רכות של vCPU.
ביצועי הרשת
פרטי החומרה
הביצועים של הרשת מושפעים מהמגבלות הבאות של החומרה:
- לכל סוג מכונה יש מכסת רוחב פס ספציפית לתעבורת נתונים יוצאת (egress). כדי לראות את רוחב הפס המקסימלי לתעבורת נתונים יוצאת (egress) של סוג המכונה של המופע, אפשר לעבור לדף שמתאים למשפחת המכונות של המופע.
- הוספה של ממשקי רשת נוספים או של כתובות IP נוספות לכל ממשק רשת ב-VM לא מגדילה את רוחב הפס ברשת של ה-VM, אבל אפשר להגדיר חלק מסוגי המכונות לרוחב פס גבוה יותר. מידע נוסף זמין במאמר הגדרת מכונה וירטואלית עם רוחב פס גבוה יותר.
כדי להבין את ביצועי הרשת של מופע, אפשר לצפות במדדי הביצועים של Network Packet Totals, Packet Mean Size, New Connections with VMs/External/Google, Sent to VMs/External/Google, Received From VMs/External/Google ו-Firewall Incoming Packets Denied.
בודקים אם הערכים של Network Packet Totals, Packet Mean Size ו-New Connections with VMs/External/Google אופייניים לעומס העבודה. לדוגמה, שרת אינטרנט עשוי לחוות הרבה חיבורים וחבילות קטנות, בעוד שמסד נתונים עשוי לחוות מעט חיבורים וחבילות גדולות.
תנועת רשת יוצאת גבוהה באופן עקבי עשויה להצביע על הצורך לשנות את סוג המכונה הווירטואלית לסוג מכונה עם מגבלת רוחב פס גבוהה יותר של תעבורה יוצאת.
אם אתם מבחינים במספרים גבוהים של חבילות נכנסות שנדחו על ידי חומות אש, כדאי לעבור לדף תובנות לגבי חומת האש של Network Intelligence בGoogle Cloud מסוף כדי לקבל מידע נוסף על המקורות של החבילות שנדחו.
אם לדעתכם חומות האש דוחות את התנועה שלכם בטעות, אתם יכולים ליצור ולהריץ בדיקות קישוריות.
אם המופע שולח ומקבל כמות גדולה של תנועה ממופעים באזורים שונים, כדאי לשנות את עומס העבודה כדי לשמור יותר נתונים באזור מסוים, וכך להגדיל את זמן האחזור ולהקטין את העלויות. מידע נוסף זמין במאמר בנושא תמחור של העברת נתונים בין מכונות וירטואליות ב- Google Cloud. אם המופע שולח נפח תנועה גדול למופעים אחרים באותו אזור, כדאי להשתמש במדיניות מיקום קומפקטית כדי להשיג חביון נמוך ברשת.
מקרים של Bare Metal
בדומה לחומרה מקומית, במכונות Bare Metal ב-Compute Engine כל מצבי השינה של המעבד מופעלים כברירת מחדל. הפעולה הזו יכולה לגרום לליבות בלי פעילות להיכנס למצב שינה, ויכולה להוביל לירידה בביצועי הרשת של מופעי Bare Metal. אפשר להשבית את מצבי השינה האלה במערכת ההפעלה אם אתם צריכים ביצועים מלאים של רוחב הפס ברשת.
כדי להשבית את מצבי השינה במכונת Bare Metal בלי להפעיל מחדש את המכונה, משתמשים בסקריפט הבא:
for cpu in {0..191}; do echo "1" | sudo tee /sys/devices/system/cpu/cpu$cpu/cpuidle/state3/disable echo "1" | sudo tee /sys/devices/system/cpu/cpu$cpu/cpuidle/state2/disable doneלחלופין, אפשר לעדכן את קובץ התצורה של GRUB כדי שהשינויים יישמרו גם אחרי הפעלה מחדש של המופע.
# add intel_idle.max_cstate=1 processor.max_cstate=1 to GRUB_CMDLINE_LINUX sudo vim /etc/default/grub sudo grub2-mkconfig -o /boot/grub2/grub.cfg sudo reboot
אחרי ההפעלה מחדש, מוודאים שמצבי השינה C6 ו-C1E מושבתים:
ls /sys/devices/system/cpu/cpu0/cpuidle/ state0 state1 cat /sys/devices/system/cpu/cpu0/cpuidle/state*/name POLL C1
יחידת ניהול הזיכרון של הקלט והפלט (IOMMU) היא תכונה של המעבד
שמספקת וירטואליזציה של כתובות למכשירי PCI. אם יש הרבה החמצות של I/O translation lookaside
buffer (IOTLB), יכול להיות ש-IOMMU ישפיע לרעה על ביצועי הרשת.
- כשמשתמשים בדפים קטנים, הסיכוי להחמצות גבוה יותר.
- כדי לקבל את הביצועים הטובים ביותר, מומלץ להשתמש בדפים גדולים (בגודל של 2MB עד 1GB).
ביצועי אחסון
פרטי החומרה
האחסון מושפע מהמגבלות הבאות של החומרה:
- הגודל הכולל של כל הדיסקים הקשיחים הקבועים בשילוב עם מספר ה-vCPU קובע את ביצועי האחסון הכוללים. אם יש סוגים שונים של דיסקים מתמידים שמצורפים למכונת VM, מגבלת הביצועים של דיסק ה-SSD המתמיד משותפת לכל הדיסקים במכונת ה-VM. מידע נוסף זמין במאמר ביצועים של אחסון בלוקים.
- כש-Persistent Disk ו-Hyperdisk מתחרים עם תנועת נתונים יוצאת, 60% מרוחב הפס המקסימלי של הרשת היוצאת משמשים ל-Persistent Disk ול-Hyperdisk, ו-40% הנותרים יכולים לשמש להעברת נתונים יוצאת ברשת. מידע נוסף זמין במאמר בנושא גורמים נוספים שמשפיעים על הביצועים.
- הביצועים של גודל קלט/פלט ועומק התור תלויים בעומסי העבודה. יכול להיות שחלק מעומסי העבודה לא גדולים מספיק כדי להשתמש במגבלות הביצועים של גודל הקלט/פלט המלא ועומק התור.
- סוג המכונה של מכונה וירטואלית משפיע על ביצועי האחסון שלה. מידע נוסף זמין במאמר סוג מכונה ומספר ליבות CPU וירטואליות.
כדי להבין את ביצועי האחסון של מכונה וירטואלית, צופים במדדי הביצועים של Throughput, Operations (IOPS), I/O Size, I/O Latency ו-Queue Length.
הנתונים של קצב העברת הנתונים (throughput) ושל פעולות הקלט/פלט בשנייה (IOPS) בדיסק מציינים אם עומס העבודה של המכונה הווירטואלית פועל כמצופה. אם התפוקה או ה-IOPS נמוכים מהמקסימום הצפוי שמופיע בתרשים סוגי הדיסקים, יכול להיות שיש בעיות בביצועים של גודל קלט/פלט, אורך התור או זמן האחזור של קלט/פלט.
גודל הקלט/פלט צפוי להיות בין 4 ל-16 KiB לעומסי עבודה שדורשים IOPS גבוה וזמן אחזור נמוך, ובין 256 KiB ל-1 MiB לעומסי עבודה שכוללים גדלים של כתיבה סדרתית או גדולה. גודל קלט/פלט מחוץ לטווחים האלה מצביע על בעיות בביצועי הדיסק.
אורך התור, שנקרא גם עומק התור, הוא גורם של קצב העברת הנתונים ושל פעולות קלט/פלט בשנייה. כשביצועי הדיסק טובים, אורך התור שלו צריך להיות בערך כמו אורך התור המומלץ להשגת רמת תפוקה או IOPS מסוימת, שמופיעה בתרשים Recommended I/O queue depth.
השהיית קלט/פלט תלויה באורך התור ובגודל הקלט/פלט. אם אורך התור או גודל הקלט/פלט של דיסק גבוהים, גם זמן האחזור יהיה גבוה.
אם אחד ממדדי הביצועים של האחסון מצביע על בעיות בביצועים של הדיסק, מבצעים אחת או יותר מהפעולות הבאות:
- כדאי לעיין במאמרים בנושא אופטימיזציה של הביצועים של Persistent Disk או אופטימיזציה של הביצועים של Hyperdisk וליישם את השיטות המומלצות שמוצעות בהם כדי לשפר את הביצועים.
- מוסיפים נפח Hyperdisk או מוסיפים דיסק אחסון מתמיד חדש למופע כדי להגדיל את מגבלות הביצועים של הדיסק. ביצועי הדיסק מבוססים על נפח האחסון הכולל שמצורף למופע. האפשרות הזו הכי פחות משבשת את הפעילות, כי היא לא מחייבת אתכם לבטל את הטעינה של מערכת הקבצים, להפעיל מחדש או לכבות את המופע.
- משנים את Hyperdisk כדי להגדיל את מגבלות ה-IOPS והתפוקה לכל דיסק. במקרה של Persistent Disk, צריך להגדיל את גודל הדיסק כדי להגדיל את מגבלות ה-IOPS והתפוקה לכל דיסק. בדיסקים אין נפח אחסון שמור או לא שמיש, כך שאפשר להשתמש בדיסק באופן מלא בלי לפגוע בביצועים.
- משנים את סוג הדיסק לסוג דיסק שמציע ביצועים טובים יותר.