ماشین GB10 ما خودش خاموش می‌شد. لاگ، حافظه را مقصر می‌دانست؛ اما مشکل حرارت بود

عملیات

یکی از سه ماشین NVIDIA GB10 ما در چهار روز ماه سپتامبر سه بار خاموش شد: در 10 سپتامبر، در 12 سپتامبر (17 ساعت خاموش ماند) و در 13 سپتامبر، دوازده دقیقه پس از روشن شدن مجدد. هر بار برای روشن کردن آن نیاز به حضور یک نفر برای فشردن دکمه پاور بود.

خاموشی ناشی از حرارت چگونه به نظر می‌رسد

ژورنال سیستم دقیقاً در میانه فعالیت متوقف شد و هیچ رکورد خاموشی در آن وجود نداشت: قطع ناگهانی برق به journald فرصت نوشتن بافر خود را نمی‌دهد. در ماه ژوئیه، پس از یک خاموشی مشابه، ساعت حتی با تاریخ قدیمی بازگشت. و واچ‌داگ سخت‌افزاری که ماشین‌های هنگ‌کرده را ریستارت می‌کند، کاری نکرد؛ زیرا ماشین هنگ نکرده بود: برق قطع شده بود.

سرنخ اشتباه

آخرین خطوط کرنل پیش از هر خاموشی، خطاهای کمبود حافظه GPU (NV_ERR_NO_MEMORY) بودند، بنابراین حافظه مقصر به نظر می‌رسید. اما چنین نبود. آن خطوط صرفاً رایج‌ترین چیزی بودند که کرنل می‌نوشت: 440,580 مورد از آن‌ها در یک بوت که 19 روز قبل از پایان کارش اجرا شده بود. وقتی خطی به این فراوانی ظاهر می‌شود، همیشه آخرین خط پیش از هر اتفاقی خواهد بود. پیش از سرزنش یک خط لاگ، بشمارید که چه بسا دفعات در حالت عادی و بدون بروز مشکل ظاهر می‌شود.

سرنخ درست

چون ژورنال در زمان قطع برق، دقایق پایانی خود را از دست می‌دهد، ما یک نمونه‌بردار کوچک اضافه کرده بودیم که دما، بار و حافظه را هر دقیقه در یک فایل می‌نویسد و روی دیسک ذخیره می‌کند. این ابزار هر پنج خاموشی از ماه ژوئیه به بعد را ثبت کرد. همه آن‌ها در بار کامل GPU (96٪) رخ دادند، در حالی که دمای CPU بین 85 تا 97 درجه سانتی‌گراد بود.

زمان‌بندی، بقیه ماجرا را توضیح داد. حدود اوایل سپتامبر، رندر ویدیو را به این ماشین منتقل کرده بودیم. توان GPU آن در بار کامل از حدود 24 وات به 46 وات رسید، دمای میانی GPU از 68 به 86 درجه سانتی‌گراد افزایش یافت و دقایق در هفته با دمای CPU 95 درجه سانتی‌گراد یا بیشتر از صفر به 4,283 رسید. دو ماشین GB10 دیگر ما که مدل زبانی را با همان بار 96٪ اجرا می‌کنند، در دمای 65 تا 81 درجه سانتی‌گراد باقی ماندند. این ماشین صرفاً خنک‌کنندگی ضعیف‌تری داشت.

راه‌حل اول: سقف‌گذاری کلاک GPU

در GB10، ابزار nvidia-smi نمی‌تواند محدودیت توان تنظیم کند، اما می‌تواند کلاک GPU را سقف‌گذاری کند: nvidia-smi -lgc 0,2000. در ماه ژوئیه، این کار دمای داغ‌ترین ناحیه را در عرض چند ثانیه از 91 درجه سانتی‌گراد به 77 تا 83 درجه سانتی‌گراد کاهش داد. دو نکته مهم است:

رفع دوم: یک محافظ حرارتی به‌صورت مرحله‌ای

سقف کافی نبود، به‌محض اینکه رندرینگ اضافه شد، بنابراین اکنون یک محافظ هر سنسور را یک بار در ثانیه می‌خواند و به‌صورت مرحله‌ای عمل می‌کند: کاهش کلاک GPU از 89 درجه سانتی‌گراد و کاهش مجدد از 92 درجه سانتی‌گراد؛ از 94 درجه سانتی‌گراد، رندرر متوقف می‌شود (SIGSTOP) و سرعت CPU کم می‌شود؛ از 96 درجه سانتی‌گراد، هر کار GPU برای مدتی که لازم است تا خنک شود، متوقف می‌شود. تنها پس از آنکه دستگاه مدتی خنک بماند، مراحل به عقب برمی‌گردند. در 97 درجه سانتی‌گراد به مدت 20 ثانیه، یک ترمز آخرین‌تلاش، سرویس ویدیو را به‌طور کامل متوقف می‌کند.

در نه دقیقه اول زیر بار رندرینگ، گرم‌ترین ناحیه به اوج 94 درجه سانتی‌گراد با میانه 89 درجه سانتی‌گراد رسید، در مقابل فلات‌های 97 درجه سانتی‌گراد در گذشته. این کار هزینه‌ای دارد: در یک روز از اواسط سپتامبر، رندرر برای 17٪ از زمان متوقف بود و GPU بیشتر روز با 900 مگاهرتز یا کمتر کار کرد. و این درمان قطعی نیست: دستگاه یک بار دیگر، در 11 اکتبر، در دمای 97 تا 98 درجه سانتی‌گراد خودش را خاموش کرد. از آن زمان تا لحظه نگارش این متن، 20 روز بدون وقفه کار کرده است.

چهار اشتباهی که در مسیر مرتکب شدیم

نکته کلیدی

نرم‌افزار این دستگاه را زنده نگه داشت، اما علت فیزیکی بود: سیستم خنک‌کننده آن دو تا سه برابر ضعیف‌تر از دستگاه‌های هم‌خانواده‌اش بود. اگر یک دستگاه GB10 تحت بار خودبه‌خود خاموش می‌شود، ابتدا جریان هوا را بررسی کنید. سپس کلاک GPU را قبل از شروع سرویس‌هایتان محدود کنید، کارهای سنگین را قبل از رسیدن دستگاه به حد مجاز متوقف کنید و آلارم‌ها را بر اساس دماهایی که دستگاه واقعاً در آن‌ها کار می‌کند تنظیم کنید.

Factory Floor شامل یک محافظ حرارتی از این نوع است: گرم‌ترین سنسور از میان سنسورهای GPU و ناحیه حرارتی را می‌خواند، کارهای سنگینی که شما نام می‌برید را در یک دمای مشخص (به‌طور پیش‌فرض 92 درجه سانتی‌گراد) متوقف می‌کند و آن‌ها را تنها در دمایی پایین‌تر (84 درجه سانتی‌گراد) از سر می‌گیرد، در کنار محافظ‌های حافظه و دیسک.

به‌روزرسانی شد: