저희 GB10 머신이 스스로 꺼지는 문제가 발생했습니다. 로그는 메모리 문제를 지적했지만, 실제 원인은 발열이었습니다

운영

저희 NVIDIA GB10 머신 3대 중 한 대가 9월에 4일 동안 세 번 꺼졌습니다. 9월 10일, 9월 12일(17시간 동안 꺼져 있었음), 그리고 다시 켠 지 12분 후인 9월 13일에 각각 한 번씩 꺼졌습니다. 매번 누군가 전원 버튼을 눌러야 했습니다.

발열로 인한 종료(shutdown)가 어떤 모습인지

시스템 저널은 활동 도중에 종료 기록 없이 그냥 멈췄습니다. 하드 파워오프(power-off)가 발생하면 journald가 버퍼를 쓸 시간이 없기 때문입니다. 7월에도 비슷한 종료 이후 시계가 이전 날짜로 돌아간 적이 있습니다. 그리고 멈춘(hang) 머신을 재부팅하는 하드웨어 워치독은 아무것도 하지 않았습니다. 머신이 멈춘 것이 아니라 전원이 끊겼기 때문입니다.

잘못된 단서

각 종료 직전의 마지막 커널 로그는 GPU 메모리 부족 오류(NV_ERR_NO_MEMORY)였기 때문에 메모리가 원인처럼 보였습니다. 하지만 그렇지 않았습니다. 해당 로그는 커널이 가장 자주 기록하는 항목일 뿐이었습니다. 종료 전 19일간 실행된 한 부팅 세션에서 440,580번 기록되었습니다. 이렇게 자주 나타나는 로그는 무엇이든 발생하기 직전의 마지막 로그가 될 수밖에 없습니다. 로그 라인을 탓하기 전에, 아무 문제도 없을 때 그 라인이 얼마나 자주 나타나는지 세어보십시오.

맞았던 단서

파워오프 시 저널은 마지막 몇 분간의 기록을 잃기 때문에, 저희는 온도, 부하 및 메모리 정보를 1분마다 파일에 기록하고 디스크에 플러시(flush)하는 작은 샘플러를 추가했습니다. 이 샘플러는 7월 이후 발생한 5번의 종료를 모두 포착했습니다. 모든 종료는 GPU가 96%로 완전히 부하된 상태에서 발생했으며, CPU 온도는 85~97 °C였습니다.

타이밍이 나머지 상황을 설명해 주었습니다. 9월 초쯤 우리는 이 머신으로 영상 렌더링을 옮겼습니다. 풀 로드 상태에서 GPU 전력은 약 24W에서 46W로, GPU 온도 중앙값은 68°C에서 86°C로, 그리고 CPU가 95°C 이상인 주당 분은 0분에서 4,283분으로 증가했습니다. 동일한 96% 부하로 언어 모델을 실행하는 나머지 두 대의 GB10 머신은 65~81°C를 유지했습니다. 이 머신만 유독 냉각 성능이 떨어졌습니다.

첫 번째 해결책: GPU 클럭 상한 설정

GB10에서는 nvidia-smi로 전력 제한을 설정할 수 없지만, GPU 클럭 상한을 설정할 수 있습니다: nvidia-smi -lgc 0,2000. 7월에는 이 설정으로 수초 만에 가장 뜨거운 영역의 온도를 91 °C에서 77~83 °C로 낮췄습니다. 두 가지 세부 사항이 중요합니다:

두 번째 수정 사항: 단계별 열 가드

렌더링이 도입된 후 상한 제한만으로는 부족했으므로, 이제 가드가 1초마다 모든 센서를 읽고 단계별로 작동합니다. 89 °C에서 GPU 클럭을 낮추고, 92 °C에서 다시 낮춥니다. 94 °C부터는 렌더러를 일시 중지(SIGSTOP)하고 CPU 속도를 늦춥니다. 96 °C부터는 냉각에 필요한 시간 동안 모든 GPU 작업을 일시 중지합니다. 머신이 일정 기간 더 낮은 온도를 유지한 후에만 단계를 되돌립니다. 97 °C에서 20초간 지속되면, 최종 수단으로 비디오 서비스를 완전히 중단합니다.

렌더링 시작 후 첫 9분 동안 가장 뜨거운 영역의 온도는 중앙값 89°C로 최고 94°C까지 치솟았으며, 이전에는 97°C에서 정체되었습니다. 대가가 따랐습니다. 9월 중순 하루 동안 렌더러는 전체 시간의 17% 동안 일시 중지되었고, GPU는 하루 대부분 900MHz 이하로 실행되었습니다. 또한 완전한 해결책도 아니었습니다. 10월 11일 97~98°C에서 머신이 한 번 더 스스로 꺼졌습니다. 이 글을 쓰는 현재까지 20일 동안 중단 없이 실행되고 있습니다.

과정에서 저지른 네 가지 실수

핵심 요약

소프트웨어가 이 기계를 살려두었지만, 원인은 물리적이었습니다: 냉각 성능이 형제 기기들보다 2~3배 더 나빴습니다. GB10 기계가 부하 상태에서 스스로 꺼진다면, 먼저 공기 흐름을 확인하십시오. 그다음 서비스가 시작되기 전에 GPU 클럭을 제한하고, 기계가 한계에 도달하기 전에 무거운 작업을 일시 중지하며, 실제로 작동하는 온도를 기준으로 알람을 설정하십시오.

Factory Floor에는 이러한 종류의 열 가드가 포함되어 있습니다: GPU 및 열 구역 센서 중 가장 높은 온도를 읽고, 지정된 온도(기본값 92 °C)에서 사용자가 지정한 무거운 작업을 일시 중지하며, 더 낮은 온도(84 °C) 미만일 때만 재개합니다. 메모리 및 디스크 가드도 함께 제공됩니다.

업데이트됨: