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

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

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

סטרימינג

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

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

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

Batch

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

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

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

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

כדי להשבית את ההתאמה האוטומטית של גודל המכונה (Vertical Autoscaling) לעבודות אצווה, מבצעים אחת מהפעולות הבאות:

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

מגבלות

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

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

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

השפעה על התאמה אוטומטית אופקית של קבוצות Pod לעומס

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

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

פתרון בעיות

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

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

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

  • כדי לוודא שהתכונה 'שינוי אוטומטי של גודל ה-Pod' פעילה, צריך לחפש את הודעת העבודה הבאה: 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 ואת Portable Runner. אם הבעיה נמשכת אחרי הפעלת התכונות האלה, אפשר לפנות לצוות שירות הלקוחות.

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

כברירת מחדל, אם לא מספקים רמזים לגבי משאבים, שינוי הגודל האנכי לא משנה את גודל הזיכרון מעבר ל-16 GiB לכל עובד (26 GiB כשמשתמשים במעבדי GPU) או פחות מ-6 GiB לכל עובד (12 GiB כשמשתמשים במעבדי 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, מפעילים את Streaming Engine ואת Portable Runner. אם הבעיה נמשכת או אם אתם מבחינים בהתנהגות הזו בצינורות Python, תוכלו לפנות אל Customer Care.

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

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

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

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

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

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

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