בדף הזה מפורטות הנחיות להגדרת סביבת Google Cloud Managed Lustre כדי להשיג את הביצועים הכי טובים.
כדי לראות את נתוני הביצועים שספציפיים לכל רמת ביצועים, אפשר לעיין במאמר בנושא רמות ביצועים.
ביצועים אחרי הגדלת הקיבולת
הגדלת נפח האחסון של מופע קיים מגדילה את התפוקה המקסימלית ואת IOPS, ויכול להיות שגם את הביצועים של המטא-נתונים.
ביצועי קצב העברת הנתונים לקריאה משתפרים בהדרגה ככל שנתונים חדשים נכתבים ומחולקים מחדש באחסון הנוסף. ביצועי קצב העברת הנתונים (throughput) של הכתיבה משתפרים באופן מיידי.
ניצול גבוה של הקיבולת
אם השימוש בנפח האחסון של מופע מסוים מגיע ל-90%, יכול להיות שהביצועים של המופע ירדו. מומלץ להגדיל את הקיבולת של מכונת Managed Lustre. יכול להיות שתצטרכו לבקש מכסה נוספת לפני ההרחבה.
אם מוצגות שגיאות No space left on device אבל במופע שלכם מוצג נפח אחסון פנוי, כדאי לעיין במאמר בנושא שגיאות No space left on device.
יחידת השידור המקסימלית (MTU) של רשת VPC
כשיוצרים רשת VPC, הגדרת הערך של mtu
(maximum transmission unit, או הגודל של מנת הנתונים הגדולה ביותר של פרוטוקול ה-IP שאפשר להעביר ברשת הזו) לערך המקסימלי המותר של 8896 משפרת את הביצועים בעד 10% בהשוואה לערך ברירת המחדל של 1460 בייט.
אפשר לראות את ערך ה-MTU הנוכחי של הרשת באמצעות הפקודה הבאה:
gcloud compute networks describe NETWORK_NAME --format="value(mtu)"
אפשר לעדכן את ערך ה-MTU של רשת אחרי שהרשת נוצרה, אבל יש כמה דברים חשובים שצריך לקחת בחשבון. פרטים נוספים זמינים במאמר בנושא שינוי ה-MTU של רשת.
סוגי מכונות ב-Compute Engine
הבחירה של סוג המכונה יכולה להשפיע על קצב העברת הנתונים ברשת. באופן כללי, כדי לקבל את התפוקה הכי טובה:
- להגדיל את מספר המעבדים הווירטואליים. רוחב הפס המקסימלי של התעבורה היוצאת לכל מכונה הוא בדרך כלל 2Gbps לכל vCPU, עד למקסימום של סוג המכונה.
- בוחרים סדרת מכונות שתומכת במגבלות גבוהות יותר של תעבורת נכנסת ויוצאת. לדוגמה, מכונות C2 עם תמיכה ברשת Tier_1 יכולות להגיע לרוחב פס של עד 100Gbps. מכונות C3 עם תמיכה ברשת Tier_1 יכולות להגיע למהירות של עד 200 Gbps.
- הפעלה של ביצועי רשת ברמה 1 לכל מכונה וירטואלית עם סוגי מכונות גדולים יותר.
- משתמשים ב-Google Virtual NIC (gVNIC). gVNIC היא האפשרות היחידה לסוגי מכונות מדור 3 ומעלה. השימוש ב-gVNIC נדרש כשמשתמשים ברשת Tier_1.
מידע מפורט זמין במאמר בנושא רוחב פס ברשת.
הגדרה של כמה מתאמי NIC
באמצעות היכולת המובנית של Lustre לשימוש בכמה ערוצים, הלקוחות יכולים לפצל את תעבורת הרשת בין כמה כרטיסי ממשק רשת (multi-NIC). הפעולה הזו צוברת רוחב פס כדי להגיע לקיבולת המקסימלית של מכונות Managed Lustre.
כדי להגדיר כמה כרטיסי רשת, צריך:
- בוחרים סוג מכונה עם כמה כרטיסי רשת פיזיים.
- יוצרים רשת משנה לכל כרטיס רשת ומקצים כל כרטיס רשת לרשת המשנה שלו.
- אם אתם מתחברים מ-Compute Engine או מ-GKE, אתם צריכים לפעול לפי השלבים לחיבור מ-NIC מרובים.
אימות איזון התנועה
אחרי שמגדירים כמה כרטיסי רשת, צריך לוודא שהנתונים מאוזנים בצורה נכונה.
Compute Engine
כדי לוודא שהנתונים מאוזנים, אפשר לעקוב אחרי ממשקי הרשת שהוגדרו (לדוגמה, eth0 ו-eth1) באמצעות nload בזמן יצירת תנועה בעורף המערכת של Lustre המנוהל:
nload -m eth0 eth1
בהגדרה מוצלחת של כמה כרטיסי רשת, קצב העברת הנתונים היוצא צריך להיות דומה בערך בכל הממשקים שהוגדרו.
GKE
כדי לוודא שתעבורת הרשת מעומס העבודה מאוזנת בין כמה כרטיסי רשת, פורסים Pod זמני לניפוי באגים ברשת בצומת שבה מתוזמן עומס העבודה:
מזהים את הצומת שבו מתוזמן עומס העבודה:
kubectl get pod POD_NAME -o wideמחליפים את POD_NAME בשם ה-Pod. בפלט של הפקודה, רושמים את השם בעמודה
NODE.מפעילים את הכלי לניפוי באגים ברשת בצומת הזה:
kubectl run multi-nic-debug --rm -i --tty --image=nicolaka/netshoot \ --overrides='{"spec": {"hostNetwork": true, "nodeSelector": {"kubernetes.io/hostname": "NODE_NAME"}, "tolerations": [{"key": "nvidia.com/gpu", "operator": "Exists", "effect": "NoSchedule"}]}}' \ -- /bin/bash -c "apk update && apk add nload && nload -m eth0 eth1"מחליפים את NODE_NAME בשם הצומת מהשלב הקודם.
בפלט, מנתחים את קצבי העברת הנתונים בעמודה Outgoing (יוצא) עבור
eth0ו-eth1. אם ההגדרה מצליחה, קצבי העברת הנתונים יהיו שווים בערך. הפלט אמור להיראות כך:Device eth0 [10.1.0.50] (1/2): ========================================================================== Incoming: Outgoing: Curr: 1.63 MBit/s Curr: 1.46 GBit/s Avg: 1.60 MBit/s Avg: 1.44 GBit/s Min: 1.40 MBit/s Min: 1.25 GBit/s Max: 1.64 MBit/s Max: 1.47 GBit/s Ttl: 590.94 GByte Ttl: 405.19 GByte Device eth1 [172.16.15.5] (2/2): ========================================================================== Incoming: Outgoing: Curr: 1.64 MBit/s Curr: 1.47 GBit/s Avg: 1.62 MBit/s Avg: 1.44 GBit/s Min: 1.42 MBit/s Min: 1.26 GBit/s Max: 1.66 MBit/s Max: 1.47 GBit/s Ttl: 587.68 GByte Ttl: 406.36 GByteכדי לצאת ממנפה הבאגים, מקישים על Ctrl+C.
מדידת הביצועים של לקוח יחיד
כדי לבדוק את ביצועי הקריאה והכתיבה מלקוח יחיד של Compute Engine, משתמשים בכלי fio (Flexible I/O tester) של שורת הפקודה.
מתקינים את fio:
Rocky 8
sudo dnf install fio -yUbuntu 20.04 ו-22.04
sudo apt update sudo install fioמריצים את הפקודה הבאה:
fio --ioengine=libaio --filesize=32G --ramp_time=2s \ --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \ --group_reporting --directory=/lustre --buffer_compress_percentage=50 \ --name=read --blocksize=1m --iodepth=64 --readwrite=read
הבדיקה נמשכת כ-5 דקות. בסיום, התוצאות מוצגות. בהתאם להגדרה, אפשר לצפות לתפוקה של עד מהירות הרשת המקסימלית של המכונה הווירטואלית, ולאלפי פעולות קלט/פלט בשנייה לכל TiB.