Onze GB10-machine schakelde zichzelf uit. Het logboek gaf het geheugen de schuld; het was hitte.

Ops

Een van onze drie NVIDIA GB10-machines viel drie keer uit in vier dagen in september: op 10 september, op 12 september (hij bleef 17 uur uit) en op 13 september, twaalf minuten nadat hij weer was ingeschakeld. Elke keer was er iemand nodig om de aan/uit-knop in te drukken.

Zo ziet een hitte-uitschakeling eruit

Het systeemjournal stopte gewoon, midden in een activiteit, zonder een afsluiting erin: een harde stroomuitval geeft journald geen tijd om zijn buffer weg te schrijven. In juli kwam de klok na een vergelijkbare uitschakeling zelfs terug met een oude datum. En de hardware watchdog, die een hangende machine herstart, deed niets, omdat de machine niet hing: de stroom was weg.

De verkeerde aanwijzing

De laatste kernelregels voor elke uitval waren GPU-geheugengebrek-fouten (NV_ERR_NO_MEMORY), dus het geheugen leek de schuldige. Dat was niet zo. Die regels waren simpelweg het meest voorkomende dat de kernel schreef: 440.580 keer in een enkele opstart die 19 dagen had gedraaid voordat hij eindigde. Als een regel zo vaak voorkomt, zal hij de laatste regel zijn vóór alles. Voordat je een logregel de schuld geeft, tel je hoe vaak hij verschijnt als er niets misgaat.

De juiste aanwijzing

Omdat het journal de laatste minuten verliest bij een stroomuitval, hadden we een kleine sampler toegevoegd die elke minuut temperaturen, belasting en geheugen naar een bestand schrijft en naar schijf spoelt. Die ving alle vijf uitvals sinds juli. Elke uitval kwam bij volledige GPU-belasting (96%), met de CPU op 85 tot 97 °C.

De timing verklaarde de rest. Rond het begin van september hadden we videorendering op deze machine gezet. Het GPU-verbruik onder volledige belasting ging van ongeveer 24 W naar 46 W, de mediaan GPU-temperatuur van 68 naar 86 °C, en de minuten per week met de CPU op 95 °C of meer van geen naar 4.283. Onze twee andere GB10-machines, die het taalmodel op dezelfde 96% belasting draaien, bleven op 65 tot 81 °C. Deze koelde simpelweg slechter.

De eerste oplossing: een GPU-klokplafond

Op GB10 kan nvidia-smi geen vermogenslimiet instellen, maar wel het GPU-klokplafond: nvidia-smi -lgc 0,2000. In juli bracht dat de heetste zone binnen seconden van 91 °C naar 77 tot 83 °C. Twee details zijn belangrijk:

De tweede oplossing: een bewaker voor temperatuur in stappen

De limiet was niet voldoende zodra rendering begon, dus leest een bewaker nu elke seconde elke sensor en handelt in stappen: een lagere GPU-klok vanaf 89 °C en nog lager vanaf 92 °C; vanaf 94 °C wordt de renderer gepauzeerd (SIGSTOP) en de CPU vertraagd; vanaf 96 °C wordt elke GPU-taak gepauzeerd voor de seconden die nodig zijn om af te koelen. Het gaat alleen terug naar de vorige stap nadat de machine een tijdje koeler is gebleven. Bij 97 °C gedurende 20 seconden stopt een noodrem de videodienst volledig.

In de eerste negen minuten onder rendering piekte de heetste zone op 94 °C met een mediaan van 89 °C, tegen eerdere plateaus van 97 °C. Het heeft een prijs: op één dag in half september was de renderer 17% van de tijd gepauzeerd, en draaide de GPU de meeste tijd op 900 MHz of minder. En het is geen geneesmiddel: de machine schakelde zichzelf nog één keer uit, op 11 oktober, bij 97 tot 98 °C. Sindsdien draait het zonder onderbreking, 20 dagen op het moment van schrijven.

Vier fouten die we onderweg maakten

De conclusie

Software hield deze machine in leven, maar de oorzaak was fysiek: de koeling was twee tot drie keer slechter dan die van zijn soortgenoten. Als een GB10-machine zichzelf onder belasting uitschakelt, controleer dan eerst de luchtdoorstroom. Begrens vervolgens de GPU-klok voordat je services starten, pauzeer de zware taken voordat de machine zijn limiet bereikt, en stel alarmen in op basis van de temperaturen waarop de machine daadwerkelijk draait.

Factory Floor bevat een dergelijke hittebewaker: deze leest de hoogste waarde van de GPU- en thermische zonesensoren, pauzeert de zware taken die je opgeeft bij een ingestelde temperatuur (standaard 92 °C) en hervat ze alleen onder een lagere temperatuur (84 °C), met geheugen- en schijfbewakers ernaast.

Bijgewerkt: