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

במאמר הזה נסביר איך לאבחן ולפתור בעיות בביצועים של מעבד, זיכרון ואחסון במכונות וירטואליות (VM) ובמכונות Bare Metal ב-Compute Engine.

לפני שמתחילים

צפייה במדדי הביצועים

כדי לראות את מדדי הביצועים של מופעי החישוב, משתמשים במדדי יכולת הצפייה של Cloud Monitoring שזמינים במסוף Google Cloud .

  1. נכנסים לדף VM Instances במסוף Google Cloud .

    כניסה לדף VM Instances

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

    כדי לראות את המדדים של מופעים ספציפיים:

    1. לוחצים על שם המופע שרוצים לראות את מדדי הביצועים שלו. ייפתח הדף פרטים של המופע.

    2. לוחצים על הכרטיסייה Observability כדי לפתוח את הדף Overview של Observability.

    כדי לראות מדדים של חמשת המופעים שצורכים את הכמות הכי גדולה של משאב, לוחצים על הכרטיסייה Observability בדף VM instances.

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

    • בדף סקירה כללית:

      • ניצול המעבד (CPU). אחוז המעבד שבו נעשה שימוש במופע.

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

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

      • חיבורים חדשים עם מכונות וירטואליות (VM), חיבורים חיצוניים וחיבורים ל-Google. המספר המשוער של זרימות TCP/UDP שונות בדקה אחת, מקובצות לפי סוג עמית.

      • קצב העברת נתונים בדיסק. הקצב הממוצע של בייטים שנכתבו בדיסקים ונקראו מהם.

      • Disk IOPS השיעור הממוצע של פעולות קריאה וכתיבה של קלט/פלט בדיסקים.

    • בדף Network Summary:

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

      • התקבל מ-VMs/External/Google. שיעור תעבורת הרשת שמתקבלת משירותי Google, ממופעים וממקורות חיצוניים, על סמך מדגם של מנות. המדד מותאם כך שהסכום שלו תואם לתנועת הרשת הכוללת שהתקבלה.

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

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

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

    • בדף Disks Performance:

      • I/O Size Avg. הגודל הממוצע של פעולות קריאה וכתיבה של קלט/פלט בדיסקים. קלט/פלט אקראי קטן (4 עד 16 KiB) מוגבל בדרך כלל על ידי IOPS, וקלט/פלט רציף או גדול (256 KiB עד 1 MiB) מוגבל על ידי קצב העברת הנתונים.

      • אורך התור הממוצע.מספר פעולות הקלט/פלט בדיסק שנמצאות בתור או שמתבצעות, שנקרא גם עומק התור, עבור 5 המכשירים המובילים. כדי להגיע למגבלות הביצועים של הדיסקים, משתמשים בעומק תור גבוה של קלט/פלט. דיסק אחסון מתמיד (Persistent Disk) ו-Google Cloud Hyperdisk הם אמצעי אחסון ברשת, ובדרך כלל זמן האחזור שלהם גבוה יותר בהשוואה לדיסקים פיזיים או לדיסקים מקומיים מסוג SSD.

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

הסבר על מדדי הביצועים

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

ביצועי המעבד (CPU) והזיכרון

פרטי החומרה

הביצועים של המעבד והזיכרון מושפעים מהמגבלות הבאות של החומרה:

  • כל CPU וירטואלי (vCPU) מוטמע כהברגה מרובה של חומרה יחידה במעבד CPU.
  • מעבדי Intel Xeon CPU תומכים במספר שרשורים של אפליקציות בליבה אחת של מעבד.
  • מכונות וירטואליות שמשתמשות בסוגי מכונות C2 כוללות מיפוי קבוע של ליבות וירטואליות לליבות פיזיות, ומציגות את ארכיטקטורת התאים של NUMA למערכת ההפעלה של האורח.
  • רוב המכונות הווירטואליות מקבלות את תדירות הטורבו של כל הליבות שמפורטת בפלטפורמות CPU, גם אם רק תדירות הבסיס מפורסמת בסביבת האורח.
  • בסוגי מכונות עם ליבות משותפות נעשה שימוש בהחלפת הקשר כדי לשתף ליבה פיזית בין vCPU לריבוי משימות. הן גם מציעות יכולות של שימוש זמני במעבד (bursting), שבמהלכו ניצול המעבד במכונה וירטואלית יכול לעלות על 100%. מידע נוסף זמין במאמר בנושא סוגי מכונות עם ליבות משותפות.

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

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

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

ביצועי הרשת

פרטי החומרה

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

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

כדי להבין את ביצועי הרשת של מופע, צופים במדדי הביצועים של 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 כדי לקבל מידע נוסף על המקורות של החבילות שנדחו.

מעבר לדף Firewall Insights

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

אם המופע שולח ומקבל כמות גדולה של תנועה ממופעים באזורים שונים, כדאי לשנות את עומס העבודה כדי לשמור יותר נתונים באזור מסוים, וכך להגדיל את זמן האחזור ולהקטין את העלויות. מידע נוסף זמין במאמר בנושא תמחור של העברת נתונים בין מכונות וירטואליות ב- 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).

ביצועי אחסון

פרטי החומרה

האחסון מושפע מהמגבלות הבאות של החומרה:

  • הגודל הכולל של כל הדיסקים הקשיחים בשילוב עם מספר המעבדים הווירטואליים קובע את ביצועי האחסון הכוללים. אם יש סוגים שונים של דיסקים מתמידים שמצורפים למכונת VM, מגבלת הביצועים של דיסק ה-SSD המתמיד משותפת לכל הדיסקים במכונת ה-VM. מידע נוסף זמין במאמר ביצועים של אחסון בלוקים.
  • כש-Persistent Disk ו-Hyperdisk מתחרים על תעבורת העברת נתונים יוצאת, 60% מרוחב הפס המקסימלי של הרשת היוצאת משמשים ל-Persistent Disk ול-Hyperdisk, ו-40% הנותרים יכולים לשמש להעברת נתונים יוצאת ברשת. מידע נוסף זמין במאמר בנושא גורמים נוספים שמשפיעים על הביצועים.
  • הביצועים של גודל קלט/פלט ועומק התור תלויים בעומסי העבודה. יכול להיות שחלק מעומסי העבודה לא גדולים מספיק כדי להשתמש במגבלות הביצועים של גודל קלט/פלט ועומק התור.
  • סוג המכונה של מכונה וירטואלית (VM) משפיע על ביצועי האחסון שלה. מידע נוסף זמין במאמר סוג מכונה ומספר ליבות וירטואליות (vCPU).

כדי להבין את ביצועי האחסון של מכונה וירטואלית, צופים במדדי הביצועים של Throughput,‏ Operations (IOPS),‏ I/O Size,‏ I/O Latency ו-Queue Length.

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

גודל הקלט/פלט צפוי להיות בין 4 ל-16 KiB לעומסי עבודה שדורשים IOPS גבוה וזמן אחזור נמוך, ובין 256 KiB ל-1 MiB לעומסי עבודה שכוללים גדלים של כתיבה סדרתית או גדולה. גודל קלט/פלט מחוץ לטווחים האלה מצביע על בעיות בביצועי הדיסק.

אורך התור, שנקרא גם עומק התור, הוא גורם של קצב העברת הנתונים ושל IOPS. כשביצועי הדיסק טובים, אורך התור שלו צריך להיות בערך כמו אורך התור המומלץ להשגת רמת תפוקה או IOPS מסוימת, שמופיע בתרשים עומק תור מומלץ של קלט/פלט.

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

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