ניתוח הביצועים של המעבד באמצעות PMU

בדף הזה מוסבר איך לנתח את ביצועי המעבד של צמתי אשכול Google Kubernetes Engine ‏ (GKE) באמצעות אירועים של יחידת מעקב אחר ביצועים (PMU).

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

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

לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:

  • מפעילים את ממשק Google Kubernetes Engine API.
  • הפעלת Google Kubernetes Engine API
  • אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה gcloud components update כדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.

דרישות ומגבלות

כשמפעילים אירועי PMU, חשוב לשים לב לדרישות ולמגבלות הבאות:

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

יצירת אשכול GKE

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

gcloud container clusters create CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --performance-monitoring-unit=PMU_LEVEL \
    --machine-type=MACHINE_TYPE

מחליפים את מה שכתוב בשדות הבאים:

  • CLUSTER_NAME: השם של האשכול החדש.
  • COMPUTE_LOCATION: המיקום של Compute Engine של האשכול החדש.
  • PMU_LEVEL: סוג האירועים של PMU לאיסוף. מידע נוסף זמין במאמר איך PMU פועל במסמכי התיעוד של Compute Engine. הערכים הנתמכים הם:
    • architectural: מפעיל אירועי PMU ארכיטקטוניים שקשורים לאירועים של מטמון שאינו ברמה האחרונה (LLC).
    • standard: כולל אירועים ארכיטקטוניים ומאפשר אירועי PMU מרכזיים, כולל אירועי מטמון L2.
    • enhanced: כולל אירועים רגילים ומאפשר אירועים מקומיים מחוץ לליבת ה-CPU ולאירועי ה-LLC PMU. האפשרות הזו זמינה רק במכונות וירטואליות עם מספר מסוים של מעבדים וירטואליים. מידע נוסף זמין בקטע מגבלות במאמרי העזרה של Compute Engine.
  • MACHINE_TYPE: סוג המכונה של Compute Engine עבור הצמתים. רשימה של סוגי מכונות נתמכים מופיעה במאמר סדרות מכונות ופלטפורמות CPU נתמכות במסמכי התיעוד של Compute Engine.

אפשר גם ליצור מאגר צמתים חדש עבור אשכול קיים באמצעות הפקודה gcloud container node-pools create.

התחברות לאשכול

מגדירים את kubectl לתקשורת עם האשכול:

gcloud container clusters get-credentials CLUSTER_NAME \
    --location=COMPUTE_LOCATION

מוודאים שה-PMU מופעל

כדי לוודא שה-PMU מופעל בצמתי האשכול, בודקים את הודעות הליבה.

  1. מקבלים רשימה של הצמתים באשכול:

    kubectl get nodes
    

    הפלט אמור להיראות כך:

    NAME                                  STATUS   ROLES    AGE     VERSION
    gke-c1-default-pool-44be3e13-prr1     Ready    <none>   5d23h   v1.27.13-gke.1070000
    gke-c1-default-pool-7abc4a17-9dlg     Ready    <none>   2d21h   v1.27.13-gke.1070000
    gke-c1-default-pool-ed969ef6-4gzp     Ready    <none>   5d      v1.27.13-gke.1070000
    

    רושמים את השם של אחד מהצמתים.

  2. מקבלים את המיקום של הצומת ב-Compute Engine:

    gcloud compute instances list --filter=NODE_NAME
    

    מחליפים את NODE_NAME בשם של צומת מהשלב הקודם.

    הפלט אמור להיראות כך:

    NAME                               ZONE           MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
    gke-c1-default-pool-44be3e13-prr1  us-central1-c  c4-standard-4     true         10.128.0.67  34.170.44.164  RUNNING
    

    רושמים את השם של ZONE Compute Engine. בדוגמה הזו, זהו us-central1-c.

  3. משתמשים ב-SSH כדי להתחבר לצומת של האשכול:

    gcloud compute ssh NODE_NAME \
        --zone=COMPUTE_ZONE
    

    מחליפים את COMPUTE_ZONE בשם של אזור Compute Engine מהשלב הקודם.

  4. בודקים את הודעות הליבה:

    sudo dmesg |grep -A10 -i "Performance"
    

    הפלט אמור להיראות כך:

    [    0.307634] Performance Events: generic architected perfmon, full-
    width counters, Intel PMU driver.
    # Several lines omitted
    

    הפלט הזה מציין שהדריבר של PMU אותחל.

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