Mesin GB10 kami terus-menerus mati sendiri. Log menyalahkan memori; penyebabnya adalah panas
Ops
Salah satu dari tiga mesin NVIDIA GB10 kami mati tiga kali dalam empat hari pada bulan September: pada 10 September, pada 12 September (mati selama 17 jam) dan pada 13 September, dua belas menit setelah dinyalakan kembali. Setiap kali, seseorang harus menekan tombol daya.
Seperti apa tampilan mati karena panas
Journal sistem berhenti begitu saja, di tengah aktivitas, tanpa entri shutdown di dalamnya: pemutusan daya keras tidak memberi waktu bagi journald untuk menulis buffer-nya. Pada bulan Juli, setelah mati yang serupa, jam bahkan kembali dengan tanggal lama. Dan hardware watchdog, yang me-reboot mesin yang hang, tidak melakukan apa-apa, karena mesin tersebut tidak hang: dayanya hilang.
Petunjuk yang salah
Baris kernel terakhir sebelum setiap kematian adalah error GPU out-of-memory (NV_ERR_NO_MEMORY), sehingga memori tampak bersalah. Padahal tidak. Baris-baris itu hanyalah hal yang paling sering ditulis kernel: 440.580 kali dalam satu boot yang berjalan selama 19 hari sebelum berakhir. Ketika sebuah baris muncul sesering itu, ia akan menjadi baris terakhir sebelum apa pun. Sebelum menyalahkan baris log, hitung seberapa sering baris itu muncul saat tidak ada masalah.
Petunjuk yang benar
Karena journal kehilangan menit-menit terakhir saat pemutusan daya, kami telah menambahkan sampler kecil yang menulis suhu, beban, dan memori ke sebuah file setiap menit dan menyimpannya ke disk. Sampler tersebut menangkap semua lima kematian sejak Juli. Setiap kematian terjadi pada beban GPU penuh (96%), dengan CPU pada 85 hingga 97 °C.
Waktunya menjelaskan sisanya. Sekitar awal September, kami memindahkan rendering video ke mesin ini. Daya GPU-nya pada beban penuh naik dari sekitar 24 W menjadi 46 W, suhu GPU median naik dari 68 menjadi 86 °C, dan menit per minggu dengan CPU pada 95 °C atau lebih naik dari nol menjadi 4.283. Dua mesin GB10 kami yang lain, yang menjalankan model bahasa pada beban 96% yang sama, tetap pada 65 hingga 81 °C. Mesin ini hanya pendinginannya lebih buruk.
Perbaikan pertama: batas clock GPU
Pada GB10, nvidia-smi tidak dapat mengatur batas daya, tetapi dapat membatasi clock GPU: nvidia-smi -lgc 0,2000. Pada bulan Juli, hal itu menurunkan zona terpanas dari 91 °C menjadi 77 hingga 83 °C dalam hitungan detik. Dua detail penting:
- Terapkan sebelum layanan berat dimulai. Layanan batas kami pertama kali berjalan sekitar 15 detik setelah boot, ketika server model sudah mulai memuat pada daya penuh, yaitu momen yang membuat mesin crash. Sekarang layanan itu berjalan sebelum Docker dimulai.
- Periksa di bawah beban. Dengan batas aktif, jam GPU yang dilaporkan tetap terbaca sekitar 2.400 MHz saat GPU idle. Di bawah beban, jam tersebut bertahan di 1.976 MHz.
Perbaikan kedua: pengaman suhu bertahap
Batas tersebut tidak cukup begitu rendering mulai berjalan, sehingga kini sebuah pengaman membaca setiap sensor sekali per detik dan bertindak secara bertahap: menurunkan jam GPU dari 89 °C dan menurunkannya lagi dari 92 °C; dari 94 °C renderer dijeda (SIGSTOP) dan CPU diperlambat; dari 96 °C setiap tugas GPU dijeda selama beberapa detik hingga dingin. Pengaman kembali ke tahap sebelumnya hanya setelah mesin tetap lebih dingin untuk sementara waktu. Pada 97 °C selama 20 detik, rem darurat menghentikan layanan video sepenuhnya.
Dalam sembilan menit pertama di bawah rendering, zona terpanas mencapai puncak 94 °C dengan median 89 °C, dibandingkan dengan plateau 97 °C sebelumnya. Hal ini ada harganya: pada satu hari di pertengahan September, renderer dijeda selama 17% waktu, dan GPU berjalan pada 900 MHz atau kurang selama sebagian besar hari. Dan ini bukan obat mujarab: mesin tersebut mati sendiri sekali lagi, pada 11 Oktober, pada suhu 97 hingga 98 °C. Sejak saat itu, mesin berjalan tanpa henti, 20 hari saat kami menulis ini.
Empat kesalahan yang kami buat di sepanjang jalan
- Menjeda satu tugas tidak mendinginkan mesin. Rem aktif saat renderer sudah dijeda, karena sebuah model gambar masih bekerja dan selusin timer dimulai pada menit yang sama. Tahap tertinggi kini menjeda setiap tugas GPU berat, bukan hanya renderer.
- Pengaman menjeda tugas berdasarkan nama, dan nama-nama tersebut berubah. Dua kali sebuah mesin baru akan lolos dari jeda: sebuah model gambar dengan nama proses baru pada September, dan pada Oktober sebuah renderer yang berjalan dalam kontainer alih-alih sebagai proses anak dari layanan render. Setiap perubahan mesin kini mencakup pemeriksaan daftar pengaman.
- Tahan rem tidak pernah terangkat. Rem menghentikan layanan video dan meninggalkan file tahan sehingga tidak ada yang merestartnya. Tidak ada yang memberi peringatan kepada siapa pun, dan output berhenti selama tiga hari sebelum kami menyadarinya. Tahan kini mengangkat dirinya sendiri: lima menit setelah rem terakhir, tanpa rem baru, dengan setidaknya 30 GB memori kosong dan rata-rata sepuluh menit 93 °C atau kurang. Menunggu mesin mendingin tidak akan pernah berhasil: rata-ratanya 88 °C baik dengan maupun tanpa rendering.
- Alarm berbunyi pada suhu normal mesin. Ambang batas peringatan adalah 88 °C, yang merupakan rata-rata suhu mesin ini. Selama satu hari, mesin ini berada pada suhu 90 °C atau lebih selama 32% waktu, 8% pada 93 °C atau lebih, dan 3% pada 95 °C atau lebih, serta tidak pernah mencapai 97 °C. Kami memindahkan alarm ke 97 °C, titik datar tempat mesin benar-benar mati, dan email alarm pun berhenti.
Kesimpulan
Perangkat lunak menjaga mesin ini tetap hidup, tetapi penyebabnya bersifat fisik: pendinginannya dua hingga tiga kali lebih buruk daripada mesin sejenisnya. Jika mesin GB10 mati sendiri saat beban tinggi, periksa aliran udara terlebih dahulu. Kemudian batasi clock GPU sebelum layanan Anda dimulai, jeda pekerjaan berat sebelum mesin mencapai batasnya, dan atur alarm berdasarkan suhu yang benar-benar dicapai mesin saat beroperasi.
Factory Floor menyertakan pengaman panas semacam ini: sistem membaca sensor GPU dan zona termal yang paling panas, menjeda pekerjaan berat yang Anda tentukan pada suhu tertentu (92 °C secara default), dan melanjutkannya hanya jika suhu turun di bawah nilai yang lebih rendah (84 °C), disertai pengaman memori dan disk.