Unser GB10-Gerät schaltete sich immer wieder selbst aus. Das Protokoll machte den Speicher verantwortlich; es war die Hitze.

Ops

Eines unserer drei NVIDIA GB10-Geräte fiel im September dreimal innerhalb von vier Tagen aus: am 10. September, am 12. September (es blieb 17 Stunden ausgeschaltet) und am 13. September, zwölf Minuten nach dem erneuten Einschalten. Jedes Mal musste eine Person den Ein-/Aus-Schalter drücken.

So sieht eine Abschaltung wegen Überhitzung aus

Das Systemjournal endete einfach mitten in der Aktivität, ohne einen Eintrag zur Herunterfahrsequenz: Ein harter Stromausfall lässt journald keine Zeit, seinen Puffer zu schreiben. Im Juli zeigte die Uhr nach einer ähnlichen Abschaltung sogar ein altes Datum an. Und der Hardware-Watchdog, der ein hängendes Gerät neu startet, griff nicht ein, weil das Gerät nicht gehangen hatte: Der Strom war weg.

Der falsche Hinweis

Die letzten Kernel-Zeilen vor jedem Ausfall waren GPU-Speicherüberlauf-Fehler (NV_ERR_NO_MEMORY), daher schien der Speicher schuld zu sein. Das war er nicht. Diese Zeilen waren schlicht das Häufigste, was der Kernel schrieb: 440.580 davon in einem einzigen Start, der 19 Tage lief, bevor er endete. Wenn eine Zeile so oft erscheint, wird sie immer die letzte Zeile vor einem beliebigen Ereignis sein. Bevor Sie eine Log-Zeile beschuldigen, zählen Sie, wie oft sie erscheint, wenn nichts schiefgeht.

Der richtige Hinweis

Weil das Journal bei einem Stromausfall die letzten Minuten verliert, hatten wir einen kleinen Sampler hinzugefügt, der jede Minute Temperaturen, Last und Speicher in eine Datei schreibt und auf die Festplatte sichert. Er erfasste alle fünf Ausfälle seit Juli. Jeder trat bei voller GPU-Last (96 %) auf, mit einer CPU-Temperatur von 85 bis 97 °C.

Das Timing erklärte den Rest. Um den Anfang September herum hatten wir das Video-Rendering auf dieses Gerät verlagert. Die GPU-Leistung unter Volllast stieg von etwa 24 W auf 46 W, die Median-GPU-Temperatur von 68 auf 86 °C und die Minuten pro Woche mit einer CPU-Temperatur von 95 °C oder mehr von null auf 4.283. Unsere beiden anderen GB10-Geräte, die das Sprachmodell bei derselben Last von 96 % ausführen, blieben bei 65 bis 81 °C. Dieses Gerät kühlte einfach schlechter.

Die erste Lösung: eine GPU-Taktbegrenzung

Auf GB10 kann nvidia-smi kein Leistungslimit setzen, aber es kann den GPU-Takt begrenzen: nvidia-smi -lgc 0,2000. Im Juli sank die Temperatur der heißesten Zone dadurch innerhalb von Sekunden von 91 °C auf 77 bis 83 °C. Zwei Details sind wichtig:

Die zweite Maßnahme: eine Hitzeschutzregel in Stufen

Die Begrenzung reichte nicht aus, sobald das Rendering hinzukam. Daher liest eine Sicherheitsregel nun jede Sekunde jeden Sensor und greift stufenweise ein: eine niedrigere GPU-Taktung ab 89 °C und eine weitere Reduzierung ab 92 °C; ab 94 °C wird der Renderer pausiert (SIGSTOP) und die CPU gedrosselt; ab 96 °C werden alle GPU-Jobs für die zur Abkühlung benötigten Sekunden pausiert. Die Stufen werden erst zurückgenommen, wenn die Maschine eine Weile kühler geblieben ist. Bei 97 °C über 20 Sekunden stoppt eine Notbremsung den Videodienst vollständig.

In den ersten neun Minuten unter Rendering erreichte die heißeste Zone einen Spitzenwert von 94 °C mit einem Median von 89 °C, verglichen mit Plateaus bei 97 °C zuvor. Das hat seinen Preis: An einem Tag Mitte September war der Renderer für 17 % der Zeit pausiert, und die GPU lief den größten Teil des Tages mit 900 MHz oder weniger. Und es ist keine Heilung: Die Maschine schaltete sich am 11. Oktober noch einmal selbst ab, bei 97 bis 98 °C. Seitdem läuft sie ohne Unterbrechung, 20 Tage zum Zeitpunkt dieses Textes.

Vier Fehler, die wir auf dem Weg gemacht haben

Das Fazit

Software hielt diese Maschine am Laufen, aber die Ursache war physisch: Ihre Kühlung war zwei- bis dreimal schlechter als die ihrer Geschwistergeräte. Wenn sich eine GB10-Maschine unter Last selbst abschaltet, prüfen Sie zuerst den Luftstrom. Begrenzen Sie dann den GPU-Takt, bevor Ihre Dienste starten, pausieren Sie die schweren Jobs, bevor die Maschine ihre Grenze erreicht, und setzen Sie Alarme basierend auf den Temperaturen, bei denen sie tatsächlich läuft.

Factory Floor enthält eine solche Wärmeschutzregel: Sie liest den höchsten Wert der GPU- und Thermal-Zonen-Sensoren, pausiert die von Ihnen benannten schweren Jobs bei einer festgelegten Temperatur (standardmäßig 92 °C) und setzt sie erst unterhalb einer niedrigeren Temperatur (84 °C) wieder fort, flankiert von Speicher- und Festplatten-Schutzregeln.

Aktualisiert: