Nasz komputer GB10 sam się wyłączał. Logi wskazywały na pamięć; przyczyną było przegrzanie

Operacje

Jeden z naszych trzech komputerów NVIDIA GB10 gasł trzy razy w ciągu czterech dni we wrześniu: 10 września, 12 września (pozostał wyłączony przez 17 godzin) i 13 września, dwanaście minut po ponownym uruchomieniu. Za każdym razem potrzebna była osoba, która nacisnęła przycisk zasilania.

Jak wygląda wyłączenie z powodu przegrzania

Dziennik systemowy po prostu się urwał w trakcie pracy, bez wpisu o zamknięciu systemu: twarde odcięcie zasilania nie daje journald czasu na zapis bufora. W lipcu, po podobnym wyłączeniu, zegar wrócił nawet ze starą datą. A sprzętowy watchdog, który restartuje zawieszoną maszynę, nic nie zrobił, ponieważ maszyna się nie zawiesiła: zasilanie zniknęło.

Błędna wskazówka

Ostatnie linie jądra przed każdym awarią to błędy wyczerpania pamięci GPU (NV_ERR_NO_MEMORY), więc pamięć wyglądała na winną. Nie była. Te linie były po prostu najczęstszą rzeczą zapisywaną przez jądro: 440 580 z nich w jednym uruchomieniu, które trwało 19 dni przed zakończeniem. Gdy linia pojawia się tak często, będzie ostatnią linią przed czymkolwiek. Zanim obwinisz linię logu, policz, jak często pojawia się, gdy nic nie idzie źle.

Właściwa wskazówka

Ponieważ dziennik traci ostatnie minuty przy odcięciu zasilania, dodaliśmy mały próbnik, który co minutę zapisuje temperatury, obciążenie i pamięć do pliku oraz wymusza zapis na dysk. Uchwycił wszystkie pięć awarii od lipca. Każda z nich nastąpiła przy pełnym obciążeniu GPU (96%), z CPU w zakresie 85 do 97 °C.

Czas trwania wyjaśnił resztę. Około początku września przenieśliśmy renderowanie wideo na tę maszynę. Moc GPU przy pełnym obciążeniu wzrosła z około 24 W do 46 W, medianowa temperatura GPU z 68 do 86 °C, a liczba minut w tygodniu z CPU na poziomie 95 °C lub więcej z zera do 4 283. Nasze dwa pozostałe komputery GB10, które uruchamiają model językowy przy tym samym obciążeniu 96%, utrzymywały się w zakresie 65 do 81 °C. Ta po prostu gorzej się chłodziła.

Pierwsza poprawka: limit taktowania GPU

Na GB10 nvidia-smi nie może ustawić limitu mocy, ale może ograniczyć taktowanie GPU: nvidia-smi -lgc 0,2000. W lipcu obniżyło to najgorętszą strefę z 91 °C do 77–83 °C w ciągu kilku sekund. Dwa szczegóły mają znaczenie:

Drugie rozwiązanie: zabezpieczenie termiczne działające stopniowo

Limit nie wystarczył, gdy doszło renderowanie, więc zabezpieczenie teraz odczytuje każdy czujnik raz na sekundę i działa stopniowo: obniżenie zegara GPU od 89 °C i kolejne obniżenie od 92 °C; od 94 °C renderer jest wstrzymywany (SIGSTOP), a CPU zwalniany; od 96 °C każde zadanie GPU jest wstrzymywane na czas potrzebny do schłodzenia. Powrót do wyższych wartości następuje dopiero po pewnym czasie utrzymywania niższej temperatury. Przy 97 °C przez 20 sekund awaryjny hamulec całkowicie zatrzymuje usługę wideo.

W pierwszych dziewięciu minutach renderowania najgorętsza strefa osiągnęła szczyt 94 °C przy medianie 89 °C, w porównaniu z wcześniejszymi plateau na poziomie 97 °C. Ma to swoją cenę: w jednym dniu w połowie września renderer był wstrzymany przez 17% czasu, a GPU pracował przez większość dnia z zegarem 900 MHz lub niższym. To też nie jest panaceum: maszyna raz jeszcze sama się wyłączyła, 11 października, przy temperaturze 97–98 °C. Od tego czasu działa bez przerwy, 20 dni w momencie pisania tego tekstu.

Cztery błędy, które popełniliśmy po drodze

Wniosek

Oprogramowanie utrzymywało tę maszynę przy życiu, ale przyczyna była fizyczna: jej chłodzenie było dwa do trzech razy gorsze niż w maszynach siostrzanych. Jeśli maszyna GB10 sama się wyłącza pod obciążeniem, najpierw sprawdź przepływ powietrza. Następnie ogranicz taktowanie GPU przed uruchomieniem usług, wstrzymaj ciężkie zadania, zanim maszyna osiągnie swój limit, i ustaw alarmy na temperaturach, przy których ona faktycznie pracuje.

Factory Floor zawiera tego typu zabezpieczenie termiczne: odczytuje najwyższą wartość z czujników GPU i strefy termicznej, wstrzymuje wskazane przez Ciebie ciężkie zadania przy ustalonej temperaturze (domyślnie 92 °C) i wznawia je dopiero poniżej niższej wartości (84 °C), wraz z zabezpieczeniami pamięci i dysku.

Zaktualizowano: