LabHub

한국어

시작하기
블로그

블로그

GPU 하드웨어·드라이버 장애 진단

상태: 초안 (2026-10-06 갱신). 공식 문서로 확인한 서술이 바탕이고, 소비자용 GPU 세 종에서 읽기 전용으로 확인한 부분(10절 끝의 「실측」)만 직접 확인한 값입니다. 데이터센터 GPU 와 실제 장애 사건은 측정하지 못했습니다. 글 끝의 「확인한 버전과 날짜」와 「확인하지 못한 것」을 먼저 읽으십시오. 작성 규칙: 실측 데이터가 기본이고, 못 잰 것은 「미실측」으로 표시합니다.

GPU 하드웨어·드라이버 장애 진단

요약

GPU 장애 진단은 세 갈래의 신호를 읽는 일입니다. 커널 로그의 XID 메시지, DCGM(Data Center GPU Manager)과 nvidia-smi 지표, 쿠버네티스의 노드 상태입니다.

이 글을 읽고 나면 면접에서 설명할 수 있는 것

  1. XID 를 「번호, 카탈로그의 즉시 조치 버킷, 단독 발생 여부」 순서로 읽어 앱 오류와 하드웨어 오류를 가르는 법
  2. ECC, NVLink, 스로틀링, PCIe 강등이 어떤 지표와 코드로 드러나는지, 그리고 느린 GPU 하나를 찾는 법
  3. 자동 격리·복구 파이프라인의 구성, 그리고 무엇에 페이지를 울리고 무엇을 티켓으로 남길지의 기준

1. 신호가 흐르는 길

GPU + 드라이버(NVML)
 ├─ 커널 로그 "NVRM: Xid (PCI:0000:ca:00): 79, ..." ─► 로그 수집기(syslog 모니터)
 ├─ NVML 이벤트(XID) ─► 디바이스 플러그인 ─► 장치 unhealthy ─► kubelet allocatable 감소
 └─ DCGM ─┬─ dcgm-exporter :9400/metrics ─► Prometheus ─► 알림
          └─ health watch, dcgmi diag (능동 점검)

dcgm-exporter 기본 지표 파일(default-counters.csv, main)에서 진단에 쓰는 것입니다. 괄호는 기본 상태입니다.

영역 지표 읽는 법
사용률·메모리 GPU_UTIL, FB_USED/FB_FREE/FB_RESERVED(MiB) 사용률 0 이어도 메모리는 잡힐 수 있음
온도·전력·클럭 GPU_TEMP, MEMORY_TEMP, POWER_USAGE, SM_CLOCK, MEM_CLOCK 클럭 하락은 스로틀링 의심
XID XID_ERRORS (켜짐) 「마지막 XID 값」을 담은 게이지이지 횟수가 아님
ECC·리매핑 ECC_*_TOTAL, RETIRED_*(꺼짐), *_REMAPPED_ROWS, ROW_REMAP_FAILURE(켜짐) 리매핑 실패는 즉시 조치 대상
PCIe·NVLink PCIE_REPLAY_COUNTER, NVLINK_BANDWIDTH_TOTAL(켜짐), NVLink CRC·REPLAY·RECOVERY(꺼짐) 증가율을 봄. 오류 계열은 CSV 에서 켜야 함
스로틀 시간 POWER_VIOLATION, THERMAL_VIOLATION 등(꺼짐, ns 카운터) 사유별 누적 시간

DCGM API 문서의 필드 이름(예: ..._TEMP_CELSIUS)과 exporter 지표 이름이 다를 수 있으니 쓰는 exporter 의 CSV 를 기준으로 삼습니다.

2. 소비자용 GPU 와 데이터센터 GPU

항목 데이터센터 GPU 소비자용
DCGM 전체 기능 「제한된 기능」(DCGM 공식 문서)
프로파일링 PROF_* Volta 이상 데이터센터 지원 대상 아님(exporter CSV 주석)
오류 격리·동적 페이지 오프라이닝 GA100, GH100, GB10x GA10x·Ada 열에는 없음(문서 표)
행 리매핑 지원 GA10x·Ada 열에 표시됨(제품별 지원은 미확인)

실험 환경 실측입니다. 8GB급 노트북 GPU(드라이버 595.91.07)의 dcgm-exporter 원문에는 XID_ERRORS 와 PROF_* 줄이 없었고 MEMORY_TEMP 와 리매핑 행 지표는 0 이었습니다. 0 이 「지원하고 정상」인지 「미지원이라 0」인지, XID 줄이 없는 이유가 exporter 판인지 소비자용 GPU 제약인지는 확인하지 못했습니다. XID 카탈로그의 「적용 대상」 열도 A100 이상 데이터센터 제품뿐입니다.

3. XID 읽는 법

형식은 NVRM: Xid (PCI 주소): 번호, 부가 정보 입니다. 읽는 순서는 ① 카탈로그의 즉시 조치 버킷, ② 단독(solo)인지 다른 XID 와 함께인지(45 는 다른 오류의 결과로도 찍힘), ③ 같은 GPU 에서 반복되는지입니다. 버킷은 RESTART_APP(앱만 재시작), RESET_GPU, RESTART_BM(노드 재시작), IGNORE, CONTACT_SUPPORT 입니다. Xid 154 는 필요한 복구 조치(None, Drain P2P, Drain and Reset, GPU Reset Required, Node Reboot Required)를 알려 줍니다.

XID 카탈로그 이름 즉시 조치 해석
13 Graphics Engine Exception RESTART_APP 대개 앱의 범위 밖 접근 등. 같은 TPC·GPC 에서 반복되면 하드웨어 점검
31 GPU memory page fault RESTART_APP MMU 폴트. 같은 GPU 에서 반복되면 하드웨어, 다른 GPU 면 앱
43 GPU stopped processing IGNORE 앱의 소프트웨어 오류로 종료, GPU 는 정상
45 Preemptive cleanup 단독이면 RESTART_FM, 아니면 IGNORE 다른 오류·앱 종료의 결과
48 Double Bit ECC Error WORKFLOW_XID_48 정정 불가 ECC. 리셋 또는 재부팅 필요, 63·64 동반 시 DRAIN_AND_RESET
63 / 64 메모리 리매핑 이벤트 / 실패 IGNORE / RESET_GPU 리매핑 기록 성공 / 기록 실패
74 NVLink Error WORKFLOW_NVLINK_ERR 반대편 GPU 고장이 이쪽에 74 로 보일 수 있음
79 Fallen off the bus RESTART_BM PCIe 로 GPU 접근 불가
94 / 95 포함 / 비포함 메모리 오류 RESTART_APP / RESET_GPU 94 는 앱 하나, 95 는 여러 앱에 영향

31 은 카탈로그가 앱 쪽이 흔하다 하고 GPU 디버그 가이드는 「Suspected Hardware Problems」라 하므로 단발은 앱, 반복은 하드웨어라는 분기를 직접 둬야 합니다. 디바이스 플러그인은 13, 31, 43, 45, 68, 109 를 「앱 오류」로 하드코딩해 무시하고, NVML 이 critical 로 알리는 나머지 XID 에서 장치를 unhealthy 로 표시합니다(소스). 소스의 FIXME 는 unhealthy 에서 돌아오는 경로가 없다고 하므로 리셋 뒤 플러그인 재시작이 필요하다고 추론합니다(미확인).

4. ECC, 행 리매핑, 리타이어

단일 비트 오류는 하드웨어가 정정하고 이중 비트는 검출만 합니다. 카운터는 드라이버 로드 이후의 volatile 과 평생 누적인 aggregate 로 나뉩니다. Ampere 이후는 행 리매핑이 페이지 리타이어(구형 최대 64)를 대체해 최대 512 번 리매핑하며 적용에는 GPU 리셋이 필요합니다. 리매핑 실패 플래그는 이미 8행이 리매핑된 은행에 또 시도하거나, 이미 리매핑한 행에 또 시도하거나, 총 512회에 닿을 때 서며 RMA 판단의 근거가 됩니다. 근거 문서는 A100 이후 기준입니다.

nvidia-smi -q -d ECC,ROW_REMAPPER,PAGE_RETIREMENT

5. NVLink, NVSwitch, Fabric Manager

Fabric Manager(FM)는 NVSwitch 시스템에서 GPU 전체를 하나의 메모리 패브릭으로 묶고 링크를 감시합니다. HGX A100 은 FM 초기화 전에 CUDA 를 시작하면 cudaErrorSystemNotReady 가 납니다. Hopper 이후는 GPU 와 스위치가 자체 링크 학습을 하고 리셋에 FM 이 필요 없습니다. FM 은 드라이버와 같은 버전이어야 합니다. 74 가 나오면 nvidia-smi nvlink -e 로 CRC·replay·recovery 오류 카운터를 봅니다. 치명적 SXid 는 CUDA 작업을 중단시키고 74 와 45 를 함께 남깁니다. Blackwell 계열은 NVLink 5 용 XID 144 부터 150 번대를 쓰고 SXid 는 적용되지 않습니다. Ampere NVSwitch 시스템은 FM 이 돌 때만 GPU 하나씩 리셋할 수 있고, 아니면 NVLink 로 묶인 GPU 를 함께 리셋합니다.

6. 스로틀링과 PCIe 강등

clocks_event_reasons 는 비트마스크입니다. 값은 GPU 유휴 0x1, 애플리케이션 클럭 0x2, SW 전력 상한 0x4, HW 슬로다운 0x8, 동기 부스트 0x10, SW 열 0x20, HW 열 0x40, HW 전력 브레이크 0x80, 디스플레이 클럭 0x100, 보드 한계 0x200, 신뢰성 0x400 입니다(go-nvml). 0x8 과 0x40 은 코어 클럭을 절반 이하로 낮추고 0x80 은 외부 전원 브레이크 신호라 의미가 큽니다. Llama 3 논문은 한낮 기온 때문에 처리량이 하루 주기로 1 에서 2% 변했다고 적습니다. PCIe 는 pcie.link.gen.current 와 pcie.link.gen.max, pcie.link.width.current 를 비교하되, 현재 값은 유휴 때 낮아질 수 있다는 매뉴얼 설명에 따라 부하 중에 재야 합니다. 재시도는 PCIE_REPLAY_COUNTER 이고, DCGM health 의 예시 출력은 분당 8회 초과를 경고로 보여 줍니다.

7. 느린 GPU 하나가 전체를 늦춘다

Meta 는 Llama 3 405B 의 54일 구간에서 466회 중단(예기치 않음 419)이 있었고 예기치 않은 중단의 약 78% 가 하드웨어 원인(GPU 58.7%)이라고 보고했습니다. 논문 원문을 열어 확인하니 이 58.7% 는 본문에 그렇게 적혀 있지만 표 5 의 인쇄된 비율을 더한 값이고, 같은 표의 건수로 다시 세면 GPU 분류가 268건이라 419건 중 64.0% 입니다(표의 「Faulty GPU」 30.1% 는 건수 148건과 맞지 않는 인쇄 오류로 보이며 건수로는 35.3%). 아래 「외부 근거」에 정리했습니다. 같은 글은 작동은 하지만 느린 낙오자가 찾기 어렵고 하나가 수천 GPU 를 늦출 수 있으며 느린 통신으로 나타난다고 적습니다. 찾는 순서는 제 정리입니다. ① 랭크별 스텝·집합 통신 시간을 비교합니다(PyTorch flight recorder). ② 느린 랭크 GPU 의 스로틀 사유, 온도, 전력, PCIe 세대와 폭, NVLink 오류를 나란히 놓습니다. ③ 노드를 비운 뒤 dcgmi diag -r 3(targeted_stress, nvbandwidth, nccl_tests 포함)으로 확인합니다. DCGM 문서는 이것이 포괄적 하드웨어 진단과 RMA 근거를 대신하지 않는다고 밝힙니다.

8. 쿠버네티스 대응: 격리와 자동 복구

flowchart LR
  D["탐지<br/>XID, DCGM, 플러그인"] --> C["분류<br/>카탈로그 버킷, 반복 여부"]
  C --> Q["cordon·taint"]
  Q --> R["drain<br/>PDB 존중"]
  R --> X["복구<br/>GPU 리셋, 노드 재시작, 교체"]
  X --> V["검증<br/>dcgmi diag -r 1 또는 2"]
  V --> U["uncordon"]
  X -. 반복 실패 .-> H["사람 호출"]

unhealthy 가 되어도 이미 배정된 파드는 그 장치에 묶여 있으므로(쿠버네티스 문서) 드레인이 필요합니다. 1.36 의 ResourceHealthStatus(베타)는 컨테이너 상태 allocatedResourcesStatus 로 장치 건강을 알려 줍니다. NVSentinel(v1.25.0, Beta/Stable, 쿠버네티스 1.34+, standalone DCGM 필요)은 DCGM 과 syslog 의 XID 를 내장 카탈로그로 분류해 cordon, drain, 리셋·재부팅까지 잇고, 5분 안에 노드의 50% 가 cordon 되면 멈추는 회로 차단기가 있고 기본은 모니터링만 켭니다. Amazon EKS 의 node monitoring agent 는 잘 알려진 XID 를 노드 조건 AcceleratedHardwareReady=False 로 올려 48 은 재부팅, 74·79 는 교체로 매기고 모르는 XID 는 이벤트로만 남깁니다. 벤더 문의 전에는 nvidia-bug-report.sh 출력, FM 로그, DCGM 진단 로그를 모읍니다(GPU 디버그 가이드).

9. 알림 설계

구글 SRE 책은 「응답이 기계적이면 페이지가 아니다」라고 합니다. 아래는 이를 적용한 제 제안입니다.

등급 대상 이유
페이지 자동 복구 실패·반복(같은 노드 재발), 쓸 수 있는 GPU 가 임계 아래, 회로 차단기 작동 판단이 필요하고 용량이 위협받음
티켓 XID 63(다음 리셋 때 적용), 리매핑 대기, ECC 증가 추세, 부하 중 PCIe 강등, HW 열 슬로다운, 알 수 없는 XID 급하지 않고 점검 창에서 처리
자동 처리와 기록만 XID 79·48+64·74·95 의 cordon·drain·리셋 기계적 응답
앱 팀으로 전달 13, 31, 43, 45 단발 하드웨어가 아님

10. 직접 해 보기 (읽기 전용)

# GPU 가 있는 노드에서 실행
journalctl -k --no-pager | grep -E "NVRM: Xid" | tail   # dmesg 가 막힌 계정에서도 읽힘, 아래 「실측」 참고
nvidia-smi --query-gpu=index,name,pcie.link.gen.current,pcie.link.gen.max,pcie.link.width.current,temperature.gpu,power.draw,clocks_event_reasons.active --format=csv
nvidia-smi -q -d PERFORMANCE,ECC,ROW_REMAPPER | head -80

# 쿠버네티스에서 dcgm-exporter 지표 확인
kubectl -n gpu-operator get po -l app=nvidia-dcgm-exporter -o wide
curl -s http://<파드IP>:9400/metrics | grep -E "XID|REMAP|PCIE_REPLAY|VIOLATION"

사용률, 전력, 온도, VRAM, 클럭만 보는 대시보드에서는 GPU 전용 알림 규칙이 빠지기 쉽습니다. 필자는 8GB 카드에서 서버 프로세스의 할당자 캐시가 6분 만에 6.4 GB 에서 7.8 GB 로 늘어난 것을 관찰했고, 이런 VRAM 추세가 경보를 연습하기 좋은 자료입니다.

외부 근거: 논문과 공식 자료로 확인한 것

데이터센터 GPU 와 대규모 클러스터가 없어 실제 장애 사건은 재지 못했습니다. 대신 대규모 운영 보고와 NVIDIA 공식 문서를 열어 11편의 서술을 대조했습니다. 외부 수치는 장비와 조건이 달라 방향과 일치 여부만 판정했습니다.

주제 자료와 확인한 위치 확인한 내용과 조건 이 글과의 관계
Llama 3 의 중단 통계 Llama Team(Meta), 「The Llama 3 Herd of Models」, arXiv 2407.21783, 3.3.4절과 표 5 최대 16K H100, 사전학습 54일: 중단 466회(계획 47, 예기치 않음 419), 사람 개입 3회. 예기치 않은 중단의 약 78% 가 하드웨어. GPU 분류 268건(64.0%): 불량 GPU 148, HBM3 메모리 72, SRAM 19, 시스템 프로세서 17, 침묵 데이터 손상 6, 열 인터페이스·센서 6. 낮 기온으로 처리량이 하루 주기로 1~2% 변동 지지. 단 본문의 「GPU 58.7%」는 표 인쇄 비율의 합이고 건수로는 64.0%(표 5 의 인쇄 오류)
연구 클러스터 Kokolis 외(Meta), 「Revisiting Reliability in Large-Scale ML Research Clusters」, HPCA 2025, arXiv 2410.21680 A100 약 24k, 11개월. 8 GPU 작업 평균 고장 간격 47.7일, 1,024 GPU 작업 7.9시간. 같은 증상이 여러 원인에서 나오므로 NCCL 타임아웃을 네트워크로 단정하지 말라고 권고. PCIe 오류와 XID 79 가 동시에 나온 비율 43%, 63% 지지. 7절의 「증상으로 원인을 단정하지 않는다」와 같은 방향
실제 XID 분포 Cui 외, 「Story of Two GPUs」, SC 2025, arXiv 2503.11901 (NCSA Delta, A100 448장 895일, H100 608장 146일) XID 31(MMU)이 A100 8,863건, XID 79 는 A100 10건뿐. H100 의 정정 불가 ECC 는 GPU 당 평균 간격이 A100 의 약 3분의 1. 시스템 전체 평균 오류 간격 1.4시간(A100), 1.9시간(H100). 노드 가용도 약 99.4%, 99.3% 지지. 우리 환경에서 XID 79 와 행 리매핑 실패를 만나지 못한 것이 이상하지 않다는 근거
대규모 학습의 진단 Jiang 외(ByteDance), MegaScale, NSDI 2024. Hu 외, NSDI 2024(arXiv 2403.07648). Dong 외(Alibaba), C4, HPCA 2025 MegaScale: 오류 탐지와 진단 검사 평균 10분 미만, 마지막 체크포인트에서 15분 안에 복구, 특정 호스트가 같은 순전파에서 약 10% 느려 제거 후 MFU 약 0.7% 개선. 인프라 실패는 건수의 약 11% 인데 GPU 시간의 82% 이상(Shanghai AI Lab 분석). C4: 진단 도구가 없으면 시간의 약 30% 가 탐지·진단·격리·재시작에 쓰임 지지. 7절의 느린 GPU 한 장이 전체를 늦춘다는 서술
XID 와 행 리매핑 NVIDIA XID 카탈로그(2026-09-09 갱신), GPU Memory Error Management 문서 11편의 XID 12개(13, 31, 43, 45, 48, 63, 64, 74, 79, 94, 95, 154 등)의 조치 분류와 행 리매핑 최대 512회, 은행당 8행 실패 조건이 문서와 일치. 카탈로그의 적용 대상 열은 A100, H100, B100, GB200 지지. 오류 격리와 동적 페이지 오프라이닝은 GA100, GH100, GB10x 에만 있고 행 리매핑은 GA10x 와 Ada 에도 표시되나 문서는 제품 단위로 약속하지 않음
소비자용 GPU 의 지표 DCGM 문서의 지원 표, dcgm-exporter 의 기본 수집 파일과 소스 소비자용 제품군에서는 정책 알림이 Tesla 에서만, 진단은 레벨 1 만. 프로파일링 지표는 데이터센터 Volta 이상에서만 지원 지지. 17편 서술과 일치

벤더 수치는 조건이 본문에 적힌 것만 옮겼고, 논문 본문을 열지 못한 자료는 쓰지 않았습니다.

11. 면접에서 나올 만한 질문

  1. XID 79 를 봤습니다. 어떻게 합니까? PCIe 로 GPU 에 접근할 수 없다는 뜻이고 카탈로그 버킷은 노드 재시작입니다. cordon 과 drain 뒤 재부팅하고, 반복되면 링크, 전원, 시스템 이벤트 로그를 보고 교체합니다.
  2. XID 13 과 48 은 어떻게 다룹니까? 13 은 대개 앱 오류라 Compute Sanitizer 로 보고, 같은 TPC·GPC 에서 반복되면 하드웨어를 의심합니다. 48 은 정정 불가 ECC 라 리셋 또는 재부팅이 필요하고 63·64 가 동반되면 drain 후 리셋합니다.
  3. 느린 GPU 하나를 어떻게 찾습니까? 랭크별 통신 시간으로 의심 랭크를 좁히고 그 GPU 의 스로틀 사유, 온도, PCIe, NVLink 오류를 비교합니다. 노드를 비운 뒤 dcgmi diag -r 3 으로 확인합니다.
  4. 자동 복구에서 무엇을 조심합니까? 동시성 상한과 회로 차단기로 한꺼번에 격리되지 않게 하고, 반복 실패는 사람에게 넘깁니다. 리셋은 GPU 를 쓰는 프로세스가 없어야 합니다.
  5. 무엇에 페이지를 울립니까? 기계적으로 처리되는 것은 자동화하고 기록만 남깁니다. 자동 복구가 실패하거나 반복될 때, 가용 GPU 가 임계 아래일 때 페이지합니다.

12. 흔한 오해

13. 참고 자료와 확인한 버전

모두 2026-10-05 에 열었습니다.

실측: 소비자용 GPU 세 종에서 읽은 값 (읽기 전용)

데스크톱 24GB급(Ampere 세대, 드라이버 570.195.03), 노트북 8GB급(Ada 세대, 595.91.07), 노트북 6GB급(Ampere 세대, 595.91.07)에서 nvidia-smi -q -d ECC,ROW_REMAPPER,PAGE_RETIREMENT, --query-gpu 필드, 커널 로그를 읽었습니다. 셋 다 유휴 상태였고 아무것도 바꾸지 않았습니다.

항목 24GB급 데스크톱 8GB급 노트북 6GB급 노트북
ECC 모드와 오류 카운터 N/A N/A N/A
페이지 리타이어 N/A N/A N/A
행 리매핑 N/A 값 있음: 정정 가능 0, 정정 불가 0, 대기 No, 실패 No N/A
뱅크 가용 히스토그램 없음 Max 64 뱅크, 나머지 구간 0 없음
remapped_rows.* 질의 [N/A] 0, 0, No, No [N/A]
NVRM: Xid 줄(부팅 이후) 0건 0건 0건

한계: 소비자용 세 종뿐이며 데이터센터 GPU 의 ECC, 행 리매핑 실패, XID 79 같은 실제 장애는 만나지 못했습니다. DCGM 의 XID_ERRORS 지표가 소비자용 GPU 에서 나오지 않는 이유(exporter 판인지 GPU 제약인지)도 이 시험으로는 가르지 못했습니다(미확인).

확인한 버전: GPU Operator 26.7.1 번들의 DCGM 4.6.1-1, DCGM Exporter 4.6.1-4.8.4, 쿠버네티스 안정판 v1.37.1.

확인하지 못한 것: 소비자용 GPU 의 ECC·행 리매핑·XID 지표 실제 출력, 실험 환경 exporter 의 판, 질의 필드명(제3자가 공개한 --help-query-gpu 출력 기준)이 드라이버 595 에서 유효한지, 카탈로그의 소비자용 GPU 적용 여부. 알림 등급표와 조사 순서는 공식 규정이 아닌 제 판단입니다.

로그인하면 좋아요를 누를 수 있습니다

댓글

아직 댓글이 없습니다.

로그인하면 댓글을 쓸 수 있습니다