המכונה שלנו עם GB10 נכבתה מעצמה. היומן האשים את הזיכרון; הבעיה הייתה חום
תפעול
אחת משלוש המכונות שלנו עם NVIDIA GB10 נכבתה שלוש פעמים בארבעה ימים בספטמבר: ב-10 בספטמבר, ב-12 בספטמבר (היא נשארה כבויה למשך 17 שעות) וב-13 בספטמבר, שתים-עשרה דקות לאחר שהופעלה מחדש. בכל פעם היה צורך באדם שילחץ על כפתור ההפעלה.
איך נראית נפילת חום
יומן המערכת פשוט נעצר, באמצע פעילות, בלי רישום של כיבוי: כיבוי חשמלי חד לא נותן ל-journald זמן לכתוב את החוצה שלו. ביולי, לאחר כיבוי דומה, השעון אפילו חזר עם תאריך ישן. ושומר הסף של החומרה, שמפעיל מחדש מכונה שנתקעה, לא עשה דבר, כי המכונה לא נתקעה: החשמל נעלם.
הרמז שהיה שגוי
שורות הליבה האחרונות לפני כל נפילה היו שגיאות מחסור בזיכרון GPU (NV_ERR_NO_MEMORY), כך שהזיכרון נראה אשם. הוא לא היה. השורות האלה היו פשוט הדבר הנפוץ ביותר שהליבה רשמה: 440,580 מהן בהפעלה אחת שרצה במשך 19 ימים לפני שהסתיימה. כששורה מופיעה בתדירות כזו, היא תהיה השורה האחרונה לפני כל דבר. לפני שמאשימים שורת יומן, בדקו כמה פעמים היא מופיעה כששום דבר לא משתבש.
הרמז שהיה נכון
מכיוון שהיומן מאבד את הדקות האחרונות בכיבוי חשמלי, הוספנו דוגם קטן שכותב טמפרטורות, עומס וזיכרון לקובץ כל דקה ומרענן אותו לדיסק. הוא תפס את כל חמש הנפילות מאז יולי. כל אחת מהן הגיעה בעומס מלא של GPU (96%), עם CPU בטמפרטורה של 85 עד 97 °C.
התזמון הסביר את השאר. סביב תחילת ספטמבר העברנו רינדור וידאו למכונה הזו. הספק ה-GPU שלה בעומס מלא עלה מ-24 W בערך ל-46 W, טמפרטורת ה-GPU החציונית עלתה מ-68 ל-86 °C, והדקות בשבוע עם CPU בטמפרטורה של 95 °C ומעלה עלו מאפס ל-4,283. שתי מכונות ה-GB10 האחרות שלנו, שמריצות את מודל השפה באותו עומס של 96%, נשארו בטווח של 65 עד 81 °C. זו פשוט התקררה גרוע יותר.
התיקון הראשון: תקרת שעון GPU
ב-GB10, nvidia-smi לא יכול להגדיר מגבלת הספק, אבל הוא יכול להגביל את שעון ה-GPU: nvidia-smi -lgc 0,2000. ביולי זה הוריד את האזור החם ביותר מ-91 °C ל-77 עד 83 °C תוך שניות. שני פרטים חשובים:
- החילו את זה לפני שהשירותים הכבדים מתחילים. שירות התקרה שלנו רץ לראשונה כ-15 שניות לאחר ההפעלה, כששרת המודלים כבר החל לטעון בעוצמה מלאה, וזה הרגע שהפיל את המכונה. עכשיו הוא רץ לפני ש-Docker מתחיל.
- בדקו אותו תחת עומס. עם התקרה פעילה, שעון ה-GPU מדווח על כ-2,400 MHz כאשר ה-GDU במצב מנוחה. תחת עומס הוא נשאר על 1,976 MHz.
התיקון השני: מנגנון הגנה מפני חום בשלבים
התקרה לא הייתה מספיקה ברגע שהרינדור נכנס לפעולה, ולכן מנגנון הגנה קורא כעת כל חיישן פעם בשנייה ופועל בשלבים: הורדת שעון ה-GPU מ-89 °C והורדה נוספת מ-92 °C; מ-94 °C הרינדור מושהה (SIGSTOP) וה-CPU מואט; מ-96 °C כל משימת GPU מושהית למשך השניות הנדרשות לקירור. הוא חוזר לאחור רק לאחר שהמכונה נשארת קרירה למשך זמן מה. ב-97 °C למשך 20 שניות, בלם חירום עוצר את שירות הווידאו לחלוטין.
בתשע הדקות הראשונות תחת רינדור, האזור החם ביותר הגיע לשיא של 94 °C עם חציון של 89 °C, לעומת פלטואות של 97 °C בעבר. יש לכך מחיר: ביום אחד באמצע ספטמבר הרינדור היה מושהה ב-17% מהזמן, וה-GPU פעל ב-900 MHz או פחות ברוב היום. זה גם לא תרופה: המכונה כיבתה את עצמה שוב, ב-11 באוקטובר, בטמפרטורה של 97 עד 98 °C. היא פועלת ללא הפסקה מאז, 20 ימים נכון לכתיבת שורות אלו.
ארבע טעויות שעשינו בדרך
- השהיית משימה אחת לא קיררה את המכונה. הבלם הופעל כאשר הרינדור כבר היה מושהה, כי מודל תמונות עדיין צייר ותריסר טיימרים הופעלו באותה דקה. השלב העליון משהה כעת כל משימת GPU כבדה, ולא רק את הרינדור.
- מנגנון ההגנה משהה משימות לפי שם, והשמות השתנו. פעמיים מנוע חדש היה בורח מההשהיה: מודל תמונות עם שם תהליך חדש בספטמבר, ובאוקטובר רינדור שרץ במיכל במקום כבן של שירות הרינדור. כל שינוי מנוע כולל כעת בדיקה של רשימת מנגנון ההגנה.
- ההחזקה של הבלם מעולם לא שוחררה. הוא עצר את שירות הווידאו והשאיר קובץ החזקה כדי שאף דבר לא יפעיל אותו מחדש. גם לא הייתה התראה לאף אחד, והפלט נעצר למשך שלושה ימים לפני ששמנו לב. ההחזקה משתחררת כעת מעצמה: חמש דקות לאחר הבלם האחרון, ללא בלם חדש, לפחות 30 GB זיכרון פנוי וממוצע של 10 דקות של 93 °C או פחות. חיכוי שהמכונה תתקרר מעצמה מעולם לא היה עובד: היא עמדה על ממוצע של 88 °C עם ובלי רינדור.
- ההתראה נשמעה בטמפרטורה הרגילה של המכונה. סף ההתראה היה 88 °C, שהיה הממוצע של מכונה זו. במשך יום אחד, היא שהתה 32% מהזמן ב-90 °C ומעלה, 8% ב-93 °C ומעלה ו-3% ב-95 °C ומעלה, ומעולם לא הגיעה ל-97 °C. הזזנו את ההתראה ל-97 °C, הפלטוה שבה היא באמת מתה, והודעות הדוא"ל של ההתראה פסקו.
המסקנה
התוכנה שמרה על מכונה זו בחיים, אך הסיבה הייתה פיזית: הקירור שלה היה גרוע פי שניים עד שלושה מזה של מכונות אחיותיה. אם מכונת GB10 מכבה את עצמה תחת עומס, בדקו תחילה את זרימת האוויר. לאחר מכן הגבילו את שעון ה-GPU לפני שהשירותים שלכם מתחילים, השהו את המשימות הכבדות לפני שהמכונה מגיעה למגבלה שלה, והגדירו התראות מהטמפרטורות שבהן היא באמת פועלת.
Factory Floor כוללת מנגנון הגנה מסוג זה מפני חום: היא קוראת את החמה ביותר מחיישני ה-GPU ואזורי התרמי, משהה את המשימות הכבדות שציינתם בטמפרטורה מוגדרת (ברירת מחדל 92 °C) ומחדשת אותן רק מתחת לטמפרטורה נמוכה יותר (84 °C), לצד מנגנוני הגנה לזיכרון ולדיסק.