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

Vertical Autoscaling היא תכונה שמאפשרת ל-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. אם הבעיה נמשכת אחרי הפעלת התכונות האלה, אפשר לפנות לצוות שירות הלקוחות.

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

כברירת מחדל, אם לא מספקים רמזים לגבי משאבים, שינוי הגודל האוטומטי האנכי לא משנה את גודל הזיכרון מעבר ל-16GB לכל עובד (26GB כשמשתמשים במעבדי GPU) או מתחת ל-6GB לכל עובד (12GB כשמשתמשים במעבדי 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.

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

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

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

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

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

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

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