เครื่อง GB10 ของเราปิดตัวเองอยู่เรื่อย ๆ บันทึกเหตุการณ์โทษว่ามาจากหน่วยความจำ แต่สาเหตุจริงคือความร้อน

ปฏิบัติการ

หนึ่งในเครื่อง NVIDIA GB10 สามเครื่องของเราดับไปสามครั้งภายในสี่วันในเดือนกันยายน: เมื่อวันที่ 10 กันยายน, วันที่ 12 กันยายน (เครื่องดับนาน 17 ชั่วโมง) และวันที่ 13 กันยายน โดยดับลงหลังจากเปิดเครื่องกลับมาได้เพียง 12 นาที แต่ละครั้งต้องมีคนมากดปุ่มเปิดเครื่อง

ลักษณะของการดับจากความร้อน

ระบบบันทึกเหตุการณ์ (system journal) หยุดทำงานกลางคันโดยไม่มีบันทึกการปิดระบบ: การตัดไฟอย่างกะทันหันไม่เปิดโอกาสให้ journald เขียนข้อมูลในบัฟเฟอร์ลงดิสก์ ในเดือนกรกฎาคม หลังการดับลักษณะเดียวกัน นาฬิกากลับมาพร้อมวันที่เก่า และตัวตรวจสอบระบบ (hardware watchdog) ที่ควรรีสตาร์ทเครื่องเมื่อค้าง กลับไม่ทำงาน เพราะเครื่องไม่ได้ค้าง แต่ไฟฟ้าถูกตัดไป

เบาะแสที่ผิด

บรรทัดสุดท้ายของ kernel ก่อนเครื่องดับทุกครั้งคือข้อผิดพลาดหน่วยความจำ GPU หมด (NV_ERR_NO_MEMORY) ทำให้ดูเหมือนหน่วยความจำคือตัวการ แต่ไม่ใช่ บรรทัดเหล่านั้นเป็นเพียงข้อความที่ kernel เขียนบ่อยที่สุด: มีถึง 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 ภายในไม่กี่วินาที มีสองรายละเอียดสำคัญ:

การแก้ไขครั้งที่สอง: ตัวจำกัดความปลอดภัยจากความร้อนแบบเป็นขั้น

ขีดจำกัดอย่างเดียวไม่เพียงพอเมื่อเริ่มมีการเรนเดอร์ ดังนั้นตัวจำกัดความปลอดภัยจึงอ่านทุกเซนเซอร์ทุกวินาทีและทำงานเป็นขั้น: ลดนาฬิกา GPU เมื่อถึง 89 °C และลดอีกครั้งเมื่อถึง 92 °C; เมื่อถึง 94 °C จะหยุดตัวเรนเดอร์ชั่วคราว (SIGSTOP) และลดความเร็ว CPU; เมื่อถึง 96 °C จะหยุดงาน GPU ทุกงานชั่วคราวจนกว่าจะเย็นลง มันจะกลับสู่สภาวะปกติก็ต่อเมื่อเครื่องเย็นลงแล้วสักพักหนึ่ง ที่ 97 °C เป็นเวลา 20 วินาที เบรกฉุกเฉินจะหยุดบริการวิดีโอทั้งหมด

ในช่วง 9 นาทีแรกภายใต้การเรนเดอร์ โซนที่ร้อนที่สุดสูงสุดที่ 94 °C โดยมีค่ามัธยฐาน 89 °C เทียบกับที่เคยคงที่ที่ 97 °C ก่อนหน้านี้ มีต้นทุนที่ต้องจ่าย: ในวันที่หนึ่งกลางเดือนกันยายน ตัวเรนเดอร์ถูกหยุดชั่วคราว 17% ของเวลา และ GPU ทำงานที่ 900 MHz หรือน้อยกว่าตลอดทั้งวัน และมันไม่ใช่การรักษาที่หายขาด: เครื่องดับตัวเองอีกครั้งหนึ่งเมื่อวันที่ 11 ตุลาคม ที่อุณหภูมิ 97 ถึง 98 °C นับจากนั้นมันทำงานต่อเนื่องมา 20 วัน ณ เวลาที่เราเขียนข้อความนี้

4 ข้อผิดพลาดที่เราทำระหว่างทาง

บทสรุป

ซอฟต์แวร์ช่วยให้เครื่องนี้ทำงานต่อได้ แต่สาเหตุเป็นเชิงกายภาพ: ระบบระบายความร้อนของมันแย่กว่าเครื่องรุ่นเดียวกันสองถึงสามเท่า หากเครื่อง GB10 ดับเองขณะรับโหลด ให้ตรวจสอบการไหลของอากาศก่อน จากนั้นจำกัดสัญญาณนาฬิกา GPU ก่อนที่บริการของคุณจะเริ่ม หยุดงานหนักก่อนที่เครื่องจะถึงขีดจำกัด และตั้งค่าสัญญาณเตือนจากอุณหภูมิที่เครื่องทำงานจริง

Factory Floor มีตัวจำกัดความปลอดภัยด้านความร้อนแบบนี้: มันอ่านค่าอุณหภูมิสูงสุดจากเซ็นเซอร์ GPU และโซนความร้อน, หยุดงานหนักที่คุณระบุไว้ที่อุณหภูมิที่กำหนด (ค่าเริ่มต้น 92 °C) และเริ่มงานต่อเฉพาะเมื่ออุณหภูมิต่ำกว่าค่าที่กำหนดไว้ต่ำกว่า (84 °C) โดยมีตัวจำกัดความปลอดภัยสำหรับหน่วยความจำและดิสก์อยู่ข้างเคียง

อัปเดตแล้ว: