התאמה אנכית אוטומטית לעומס

התכונה 'שינוי גודל אוטומטי אנכי' מאפשרת ל-Dataflow Prime להגדיל או להקטין באופן דינמי את הזיכרון שזמין לעובדים בהתאם לדרישות של העבודה. התכונה נועדה להפוך את העבודות לעמידות בפני שגיאות של חוסר זיכרון (OOM) ולמקסם את היעילות של צינור הנתונים. ‫Dataflow Prime עוקב אחרי צינור הנתונים, מזהה מצבים שבהם לעובדים אין מספיק זיכרון או שיש להם יותר מדי זיכרון זמין, ואז מחליף את העובדים האלה בעובדים חדשים עם יותר או פחות זיכרון.

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

סטרימינג

התאמה אוטומטית לעומס אנכית מופעלת כברירת מחדל בכל משימות הסטרימינג החדשות שמשתמשות ב-Dataflow Prime.

אם מפעילים משימה מתבנית דרך ממשק שורת הפקודה (CLI), אפשר להשבית את שינוי הגודל האנכי האוטומטי על ידי העברת הדגל --additional_experiments=disable_vertical_memory_autoscaling.

כל צינורות עיבוד הנתונים של Dataflow Prime בסטרימינג ב-Java וב-Python תומכים בהתאמת גודל אנכית אוטומטית. אפשר להשתמש בצינורות עיבוד נתונים של Dataflow Prime ב-Java ללא מנוע סטרימינג. עם זאת, כדי ליהנות מהחוויה הטובה ביותר עם התאמה אוטומטית לעומס אנכי, מומלץ להפעיל את Streaming Engine.

Batch

במשימות באצווה ב-Dataflow Prime, התאמה אוטומטית לעומס (autoscaling) של זיכרון וירטואלי (vertical) מתבצעת רק אחרי שמתרחשות ארבע שגיאות של חוסר זיכרון.

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

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

  • --experiments=enable_batch_vmr
  • --experiments=enable_vertical_memory_autoscaling

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

  • אל תגדירו את האפשרות --experiments=enable_batch_vmr של צינור עיבוד הנתונים.
  • מגדירים את האפשרות --experiments=disable_vertical_memory_autoscaling של צינור עיבוד הנתונים.

מגבלות

  • רק הזיכרון של העובדים גדל באופן אנכי.
  • כברירת מחדל, יש למדד של שינוי גודל הזיכרון מגבלה עליונה של 16 GiB ומגבלה תחתונה של 6 GiB. כשמשתמשים ב-GPU, יש מגבלה עליונה של 26 GiB ומגבלה תחתונה של 12 GiB על שינוי הגודל של הזיכרון. אפשר לשנות את המגבלה העליונה והמגבלה התחתונה באמצעות רמז למשאב.
  • אין תמיכה בהתאמת קנה מידה אוטומטית אנכית למאגרי משאבים שמשתמשים במעבדי GPU מסוג A100.
  • במשימות אצווה, יכול להיות שהמערכת תנסה להעלות חבילות שכוללות פריט שנכשל יותר מ-4 פעמים לפני שהצינור ייכשל לגמרי.
  • אין תמיכה בהרחבה אוטומטית אנכית ב-VPC Service Controls. אם מפעילים את Dataflow Prime ומריצים משימה חדשה בתוך גבולות גזרה של VPC Service Controls, המשימה משתמשת ב-Dataflow Prime ללא התאמה אוטומטית לעומס אנכית.
  • כשמשתמשים בהתאמה לימין עם שינוי גודל אוטומטי אנכי, רק צינורות להעברת נתונים באצווה נתמכים.

מעקב אחר התאמה אנכית אוטומטית לעומס

פעולות של שינוי גודל אוטומטי אנכי מתפרסמות ביומני העבודות והעובדים. כדי לראות את היומנים האלה, אפשר לעיין במאמר בנושא מדדים של משימות ב-Dataflow.

ההשפעה על התאמה אוטומטית אופקית

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

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

פתרון בעיות

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

נראה שהמידרוג האוטומטי האנכי לא פועל

אם שינוי הגודל האוטומטי של המכונה לא פועל, כדאי לבדוק את פרטי העבודה הבאים.

  • כדי לוודא שהתכונה 'התאמה אוטומטית לעומס אנכי' פעילה, מחפשים את הודעת העבודה הבאה: Vertical Autoscaling is enabled. This pipeline is receiving recommendations for resources allocated per worker.

    אם ההודעה הזו לא מופיעה, סימן שהתכונה 'שינוי גודל אוטומטי אנכי' לא פועלת.

  • בצינורות להעברת נתונים בסטרימינג, מוודאים שהדגל enable_vertical_memory_autoscaling מוגדר. בצינורות להעברת נתונים באצווה, מוודאים שהדגלים enable_vertical_memory_autoscaling ו-enable_batch_vmr מוגדרים.

  • מוודאים שהפעלתם את Cloud Autoscaling API בפרויקט. Google Cloud הפעלת ה-API

  • מוודאים שהעבודה מופעלת ב-Dataflow Prime. מידע נוסף זמין במאמר בנושא הפעלת Dataflow Prime.

העבודה מראה עומס גדול וסימן מים גבוה

ההוראות האלה רלוונטיות רק לעבודות סטרימינג. אם העיצוב מחדש של העובדים לוקח יותר מכמה דקות, יכול להיות שבעבודה שלכם יהיה גידול גדול בנתוני הקלט ובסימן המים. כדי לפתור את הבעיה הזו בצינורות Python, מומלץ מאוד להשתמש במאגרי תמונות מותאמים אישית, כי הם יכולים לשפר את זמן האחזור שעלול להיווצר כתוצאה משינוי הצורה של העובדים. כדי לפתור את הבעיה הזו בצינורות Java, מומלץ מאוד להפעיל את Streaming Engine ואת Runner v2. אם הבעיה נמשכת אחרי הפעלת התכונות האלה, אפשר לפנות אל שירות הלקוחות.

ההתאמה האוטומטית האנכית לעומס הגיעה לקיבולת הזיכרון.

כברירת מחדל, אם לא מספקים רמזים לגבי משאבים, התאמה אוטומטית לעומס אנכית לא משנה את גודל הזיכרון מעבר ל-16GiB לכל עובד (26GiB כשמשתמשים ב-GPU) או מתחת ל-6GiB לכל עובד (12GiB כשמשתמשים ב-GPU). כשמגיעים למגבלות האלה, נוצרת אחת מהודעות היומן הבאות ב-Cloud Logging.

משימות סטרימינג:

Vertical Autoscaling has a desire to upscale memory, but we have hit the memory scaling limit of X GiB. This is only a problem if the pipeline continues to see memory throttling and/or OOMs.

משימות באצווה:

Vertical Autoscaling has a desire to upscale memory, but we have hit the memory scaling limit of 16.0 GiB. Job will fail because we have upsized to maximum size, and the pipeline is still OOMing.

אם עדיין מופיעות שגיאות שקשורות לחוסר זיכרון בצינור, אפשר להשתמש בהתאמה נכונה (רמזים למשאבים) כדי להגדיר את דרישות הזיכרון של ההמרה על ידי ציון min_ram="numberXB". ההגדרה הזו מאפשרת ל-Dataflow לבחור הגדרה ראשונית לעובדים שיכולה לתמוך בקיבולת זיכרון גבוהה יותר. עם זאת, שינוי ההגדרה הראשונית הזו יכול להגדיל את המקבילות הסמויה שזמינה לצינור. אם יש לכם טרנספורמציה שדורשת הרבה זיכרון, יכול להיות שהצינור ישתמש ביותר זיכרון מבעבר בגלל הגידול בזמינות של מקביליות. במקרים כאלה, יכול להיות שיהיה צורך לבצע אופטימיזציה של ההמרה כדי לצמצם את הזיכרון שבשימוש.

התכונה 'שינוי גודל אוטומטי אנכי' מאתרת ועוקבת אחרי אירועי OOM.

מגבלת הזיכרון של העובד לא מתייצבת ועולה ויורדת לאורך זמן למרות שימוש קבוע בזיכרון

ההוראות האלה רלוונטיות רק לעבודות סטרימינג. בצינורות עיבוד נתונים של Java, מפעילים את מנוע הסטרימינג ואת Runner v2. אם הבעיה נמשכת או אם אתם מבחינים בהתנהגות הזו בצינורות Python, תוכלו לפנות אל Customer Care.

הודעות נפוצות ביומן

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

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

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

אם המידרוג האוטומטי האנכי לא פעיל, אפשר לעיין במאמר המידרוג האוטומטי האנכי לא פועל. מה צריך לבדוק? הוראות לפתרון בעיות

עדכון של שינוי גודל אוטומטי אנכי הופעל כדי לשנות את מגבלת הזיכרון לכל עובד במאגר מ-X GiB ל-Y GiB.

ההודעה הזו מציינת שהתכונה Vertical Autoscaling הפעילה שינוי גודל של הזיכרון במאגר העובדים.