NVIDIA Data Center GPU Manager (DCGM)

השילוב של NVIDIA Data Center GPU Manager אוסף מדדים מתקדמים של GPU מ-DCGM. אפשר להגדיר את סוכן תפעול לאיסוף של אחד משני סטים שונים של מדדים על ידי בחירת הגרסה של dcgm receiver:

  • גרסה 2 של רכיב dcgm receiver מספקת מערך מדדים שנבחר בקפידה למעקב אחרי הביצועים והמצב של יחידות ה-GPU שמצורפות למכונה וירטואלית נתונה.
  • גרסה 1 של dcgm receiver מספקת קבוצה של מדדי פרופיל שנועדו לשימוש בשילוב עם מדדי ברירת המחדל של GPU. מידע על המטרה של המדדים האלה ועל אופן הפרשנות שלהם מופיע במאמר מדדי פרופילים בסקירה הכללית על התכונה DCGM.

מידע נוסף על NVIDIA Data Center GPU Manager זמין במסמכי התיעוד של DCGM. השילוב הזה תואם ל-DCGM מגרסה 3.1 עד 3.3.9.

המדדים האלה זמינים רק במערכות Linux. לא נאספים מדדים של פרופילים מדגמי GPU של NVIDIA‏ P100 ו-P4.

דרישות מוקדמות

כדי לאסוף מדדים של NVIDIA DCGM, צריך לבצע את הפעולות הבאות:

התקנה של DCGM ואימות ההתקנה

צריך להתקין את DCGM בגרסה 3.1 עד 3.3.9 ולוודא שהוא פועל כשירות עם הרשאות מיוחדות. הוראות להתקנת DCGM מופיעות במאמר בנושא התקנה במסמכי DCGM.

כדי לוודא ש-DCGM פועל בצורה תקינה:

  1. מריצים את הפקודה הבאה כדי לבדוק את הסטטוס של שירות DCGM:

    sudo service nvidia-dcgm status
    

    אם השירות פועל, השירות nvidia-dcgm מופיע ברשימה בתור active (running). הפלט אמור להיראות כך:

    ● nvidia-dcgm.service - NVIDIA DCGM service
    Loaded: loaded (/usr/lib/systemd/system/nvidia-dcgm.service; disabled; vendor preset: enabled)
    Active: active (running) since Sat 2023-01-07 15:24:29 UTC; 3s ago
    Main PID: 24388 (nv-hostengine)
    Tasks: 7 (limit: 14745)
    CGroup: /system.slice/nvidia-dcgm.service
           └─24388 /usr/bin/nv-hostengine -n --service-account nvidia-dcgm
    
  2. מריצים את הפקודה הבאה כדי לוודא שהמכשירים של ה-GPU נמצאו:

    dcgmi discovery --list
    

    אם נמצאו מכשירים, הפלט ייראה כך:

    1 GPU found.
    +--------+----------------------------------------------------------------------+
    | GPU ID | Device Information                                                   |
    +--------+----------------------------------------------------------------------+
    | 0      | Name: NVIDIA A100-SXM4-40GB                                          |
    |        | PCI Bus ID: 00000000:00:04.0                                         |
    |        | Device UUID: GPU-a2d9f5c7-87d3-7d57-3277-e091ad1ba957                |
    +--------+----------------------------------------------------------------------+
    

הגדרת סוכן תפעול ל-DCGM

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

הגדרה לדוגמה

הפקודות הבאות יוצרות את ההגדרה לאיסוף ולהוספה של מדדים של גרסה 2 של מקלט NVIDIA DCGM:

# Configures Ops Agent to collect telemetry from the app. You must restart the agent for the configuration to take effect.
set -e

# Check if the file exists
if [ ! -f /etc/google-cloud-ops-agent/config.yaml ]; then
  # Create the file if it doesn't exist.
  sudo mkdir -p /etc/google-cloud-ops-agent
  sudo touch /etc/google-cloud-ops-agent/config.yaml
fi

# Create a back up of the existing file so existing configurations are not lost.
sudo cp /etc/google-cloud-ops-agent/config.yaml /etc/google-cloud-ops-agent/config.yaml.bak

# Configure the Ops Agent.
sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF
metrics:
  receivers:
    dcgm:
      type: dcgm
      receiver_version: 2
  service:
    pipelines:
      dcgm:
        receivers:
          - dcgm
EOF

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

כדי שהשינויים האלה ייכנסו לתוקף, צריך להפעיל מחדש את Ops Agent:

  1. כדי להפעיל מחדש את הסוכן, מריצים את הפקודה הבאה במופע:
    sudo systemctl restart google-cloud-ops-agent
    
  2. כדי לוודא שהסוכן הופעל מחדש, מריצים את הפקודה הבאה ומוודאים שהרכיבים Metrics Agent ו-Logging Agent הופעלו:
    sudo systemctl status "google-cloud-ops-agent*"
    

אם מופיעה הודעת שגיאה כמו "לא ניתן להתחבר לדמון DCGM בכתובת localhost:5555 ב-libdcgm.so לא נמצא; האם דמון DCGM פועל?", כנראה שהתקנתם את גרסה 4.0 של שירות DGCM. הספרייה המשותפת של DCGM שונתה ל-libdgcdm.so.4, שהמקלט של DCGM בסוכן תפעול לא מזהה. חובה להשתמש ב-DCGM מגרסה 3.1 עד 3.3.9.

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

הגדרת איסוף מדדים

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

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

כדי להגדיר נמען למדדים של dcgm, צריך לציין את השדות הבאים:

שדה ברירת מחדל תיאור
collection_interval 60s משך זמן, כמו 30s או 5m.
endpoint localhost:5555 הכתובת של שירות DCGM, בפורמט host:port.
receiver_version 1 ‫1 או 2. בגרסה 2 יש הרבה יותר מדדים זמינים.
type הערך חייב להיות dcgm.

מה נבדק

בטבלאות הבאות מפורטים המדדים שנאספים על ידי סוכן תפעול ממופע NVIDIA DGCM. לא כל המדדים זמינים לכל הדגמים של יחידות ה-GPU. לא נאספים מדדים של פרופילים מדגמי GPU של NVIDIA‏ P100 ו-P4.

מדדים בגרסה 1

המדדים הבאים נאספים באמצעות גרסה 1 של מקלט dcgm.

סוג המדד 
סוג, סוג
משאבים במעקב
תוויות
workload.googleapis.com/dcgm.gpu.profiling.dram_utilization **
GAUGEDOUBLE
gce_instance
gpu_number
model
uuid
GAUGEINT64
gce_instance
direction
gpu_number
model
uuid
workload.googleapis.com/dcgm.gpu.profiling.pcie_traffic_rate **
GAUGEINT64
gce_instance
direction
gpu_number
model
uuid
workload.googleapis.com/dcgm.gpu.profiling.pipe_utilization **
GAUGEDOUBLE
gce_instance
gpu_number
model
pipe  
uuid
workload.googleapis.com/dcgm.gpu.profiling.sm_occupancy **
GAUGEDOUBLE
gce_instance
gpu_number
model
uuid
workload.googleapis.com/dcgm.gpu.profiling.sm_utilization **
GAUGEDOUBLE
gce_instance
gpu_number
model
uuid

 לא זמין בדגמי GPU‏ P100 ו-P4.

 בשביל L4, הערך pipe fp64 לא נתמך.

מדדים בגרסה 2

המדדים הבאים נאספים באמצעות גרסה 2 של מקלט dcgm.

סוג המדד 
סוג, סוג
משאבים במעקב
תוויות
workload.googleapis.com/gpu.dcgm.clock.frequency
GAUGEDOUBLE
gce_instance
gpu_number
model
uuid
workload.googleapis.com/gpu.dcgm.clock.throttle_duration.time
CUMULATIVEDOUBLE
gce_instance
gpu_number
model
uuid
violation  *
workload.googleapis.com/gpu.dcgm.codec.decoder.utilization
GAUGEDOUBLE
gce_instance
gpu_number
model
uuid
workload.googleapis.com/gpu.dcgm.codec.encoder.utilization
GAUGEDOUBLE
gce_instance
gpu_number
model
uuid
workload.googleapis.com/gpu.dcgm.ecc_errors
CUMULATIVEINT64
gce_instance
error_type
gpu_number
model
uuid
workload.googleapis.com/gpu.dcgm.energy_consumption
CUMULATIVEDOUBLE
gce_instance
gpu_number
model
uuid
workload.googleapis.com/gpu.dcgm.memory.bandwidth_utilization
GAUGEDOUBLE
gce_instance
gpu_number
model
uuid
workload.googleapis.com/gpu.dcgm.memory.bytes_used
GAUGEINT64
gce_instance
gpu_number
model
state
uuid
workload.googleapis.com/gpu.dcgm.nvlink.io 
CUMULATIVEINT64
gce_instance
direction
gpu_number
model
uuid
workload.googleapis.com/gpu.dcgm.pcie.io 
CUMULATIVEINT64
gce_instance
direction
gpu_number
model
uuid
workload.googleapis.com/gpu.dcgm.pipe.utilization 
GAUGEDOUBLE
gce_instance
gpu_number
model
pipe  §
uuid
workload.googleapis.com/gpu.dcgm.sm.utilization 
GAUGEDOUBLE
gce_instance
gpu_number
model
uuid
workload.googleapis.com/gpu.dcgm.temperature
GAUGEDOUBLE
gce_instance
gpu_number
model
uuid
workload.googleapis.com/gpu.dcgm.utilization
GAUGEDOUBLE
gce_instance
gpu_number
model
uuid

 במקרים של P100 ו-P4, נתמכים רק הערכים violation power,‏ thermal ו-sync_boost.

 לא זמין בדגמי GPU‏ P100 ו-P4.

§ בשביל רמה 4, הערך pipe fp64 לא נתמך.

מדדי GPU

בנוסף, ההגדרה המובנית של סוכן תפעול אוספת גם מדדיםagent.googleapis.com/gpu שמדווחים על ידי ספריית הניהול (NVML) של NVIDIA. כדי לאסוף את המדדים האלה לא צריך לבצע הגדרות נוספות ב-סוכן תפעול, אבל צריך ליצור את ה-VM עם יחידות GPU מצורפות ו להתקין את מנהל ההתקן של ה-GPU. מידע נוסף זמין במאמר מידע על מדדי gpu. המדדים של dcgm receiver version 1 נועדו להשלים את מדדי ברירת המחדל האלה, ואילו המדדים של dcgm receiver version 2 נועדו לעמוד בפני עצמם.

אימות ההגדרה

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

כדי לוודא שמדדי NVIDIA DCGM נשלחים אל Cloud Monitoring, מבצעים את הפעולות הבאות:

  1. במסוף Google Cloud , עוברים לדף  Metrics explorer:

    כניסה אל Metrics Explorer

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

  2. בסרגל הכלים של חלונית הכלי ליצירת שאילתות, לוחצים על הלחצן ששמו הוא  MQL או  PromQL.
  3. מוודאים שהאפשרות PromQL נבחרה במתג שפה. המתג לשפה נמצא באותו סרגל כלים שבו אפשר לעצב את השאילתה.
    • כדי להציג מדדים מגרסה 1, מזינים את השאילתה הבאה בעורך ולוחצים על Run query:
      {"workload.googleapis.com/dcgm.gpu.profiling.sm_utilization", monitored_resource="gce_instance"}
      
    • למדדים בגרסה 2, מזינים את השאילתה הבאה בעורך ולוחצים על Run:
      {"workload.googleapis.com/gpu.dcgm.sm.utilization", monitored_resource="gce_instance"}
      

צפייה בלוח הבקרה

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

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

כדי לראות מרכז בקרה שהותקן:

  1. במסוף Google Cloud , עוברים לדף  Dashboards:

    מעבר אל מרכזי בקרה

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

  2. לוחצים על הכרטיסייה רשימת לוחות בקרה ואז בוחרים בקטגוריה שילובים.
  3. לוחצים על השם של מרכז הבקרה שרוצים להציג.

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

כדי לראות תצוגה מקדימה סטטית של מרכז הבקרה:

  1. נכנסים לדף  Integrations במסוף Google Cloud :

    עוברים אל Integrations

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

  2. לוחצים על המסנן Compute Engine של פלטפורמת הפריסה.
  3. מחפשים את הערך של NVIDIA DCGM ולוחצים על הצגת פרטים.
  4. לוחצים על הכרטיסייה מרכזי בקרה כדי לראות תצוגה מקדימה סטטית. אם מרכז הבקרה מותקן, אפשר ללחוץ על View dashboard (הצגת מרכז הבקרה) כדי לעבור אליו.

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

מידע נוסף על השימוש בדף Integrations (שילובים) זמין במאמר ניהול שילובים.

מגבלות של DCGM והשהיית פרופילים

שימוש בו-זמני ב-DCGM עלול לגרום לקונפליקט עם שימוש בכמה כלים אחרים למפתחים של NVIDIA, כמו Nsight Systems או Nsight Compute. המגבלה הזו חלה על NVIDIA A100 ועל GPU מדגמים קודמים. מידע נוסף מופיע במאמר בנושא קצב הדגימה של פרופילים בסקירה הכללית על התכונה DCGM.

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

dcgmi profile --pause
dcgmi profile --resume

כשהפרופיל מושהה, אף אחד מהמדדים של DCGM שסוכן התפעול אוסף לא מופק מה-VM.

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

בסרטון Install the Ops Agent to troubleshoot third-party applications מוסבר איך להשתמש ב-Ansible כדי להתקין את סוכן התפעול, להגדיר אפליקציית צד שלישי ולהתקין לוח בקרה לדוגמה.