Skip to content

附录

本附录为速查手册,供日常运维与面试快速翻阅。命令与字段基于较新版本驱动/CUDA/DCGM/NCCL 整理,不同版本可能存在差异,请以 NVIDIA 官方文档为准


附录 A nvidia-smi 命令速查

A.1 基础查询

命令作用示例
nvidia-smi查看 GPU 总览(利用率、显存、进程)nvidia-smi
nvidia-smi -L列出 GPU 及 UUIDnvidia-smi -L
nvidia-smi -i <id>指定 GPU 操作nvidia-smi -i 0
nvidia-smi -l <秒>循环刷新输出nvidia-smi -l 2
nvidia-smi -q查看完整详细信息nvidia-smi -q -i 0
nvidia-smi topo -m查看 GPU 拓扑(NVLink/PCIe 亲和性)nvidia-smi topo -m
nvidia-smi -q -xXML 格式输出,便于程序解析nvidia-smi -q -x > gpu.xml

A.2 --query-gpu 常用字段表

字段含义示例
index / uuidGPU 序号 / 唯一标识--query-gpu=index,uuid
nameGPU 型号--query-gpu=name
driver_version驱动版本--query-gpu=driver_version
memory.total / memory.used / memory.free显存总量/已用/空闲--query-gpu=memory.used --format=csv
utilization.gpu / utilization.memorySM 利用率 / 显存带宽利用率--query-gpu=utilization.gpu
temperature.gpu / temperature.memory核心温度 / 显存温度--query-gpu=temperature.gpu
power.draw / power.limit当前功耗 / 功耗上限--query-gpu=power.draw,power.limit
clocks.sm / clocks.memSM 频率 / 显存频率--query-gpu=clocks.sm,clocks.mem
clocks_throttle_reasons.active降频原因--query-gpu=clocks_throttle_reasons.active
ecc.errors.corrected.aggregate.total累计可纠正 ECC 错误--query-gpu=ecc.errors.corrected.aggregate.total
ecc.errors.uncorrected.aggregate.total累计不可纠正 ECC 错误--query-gpu=ecc.errors.uncorrected.aggregate.total
retired_pages.pending待退休显存页--query-gpu=retired_pages.pending
mig.mode.currentMIG 模式状态--query-gpu=mig.mode.current
pcie.link.gen.current / pcie.link.width.currentPCIe 代际 / 链路宽度--query-gpu=pcie.link.gen.current

组合示例:nvidia-smi --query-gpu=index,name,temperature.gpu,utilization.gpu,memory.used,power.draw --format=csv -l 5

A.3 显存与进程管理

命令作用示例
nvidia-smi --query-compute-apps=pid,used_memory --format=csv查看占卡进程及显存定位"显存泄漏"进程
kill -9 <pid>结束残留进程释放显存配合上一条使用
nvidia-smi --gpu-reset -i <id>(旧写法 nvidia-smi -r重置 GPU(需无进程占用,部分平台/虚拟化不支持)nvidia-smi --gpu-reset -i 0
nvidia-smi -c 0/2/3设置计算模式(默认/独占线程/独占进程)nvidia-smi -c 0

A.4 时钟与功耗管理

命令作用示例
nvidia-smi -pm 1开启持久化模式(避免首核延迟、掉驱动)nvidia-smi -pm 1
nvidia-smi -pl <瓦数>设置功耗上限nvidia-smi -pl 250
nvidia-smi -lgc <频率>锁定 SM 时钟nvidia-smi -lgc 1500
nvidia-smi -rgc重置时钟锁定nvidia-smi -rgc
nvidia-smi boost-slider --vboost 1开启最大显存 boost训练前性能调优
nvidia-smi -q -d CLOCK查看时钟与降频原因排查过热降频

A.5 MIG 操作(A100/H100 等)

命令作用示例
nvidia-smi mig -mip 0 1开启 GPU 0 的 MIG 模式(需重启生效场景视平台而定)开 MIG
nvidia-smi mig -lgip列出可用 GPU 实例配置(1g.10gb 等)规划切分方案
nvidia-smi mig -cgi <配置> -C创建 GPU 实例并自动创建计算实例nvidia-smi mig -cgi 1g.10gb,1g.10gb -C -i 0
nvidia-smi mig -lgi / -lci列出 GPU 实例 / 计算实例查看切分结果
nvidia-smi mig -dci -gi <gi> -ci <ci>删除计算实例 / GPU 实例(-dgi回收切分
命令作用示例
nvidia-smi nvlink --status查看 NVLink 链路状态nvidia-smi nvlink -s -i 0
nvidia-smi nvlink --capabilities查看 NVLink 能力规划多卡拓扑
nvidia-smi nvlink --error -i <id>查看 NVLink 错误计数排查 XID 74
nvidia-smi topo -m矩阵方式查看卡间连接(NV# 表示 NVLink 数量)亲和性调度依据

A.7 ECC 查询

命令作用示例
nvidia-smi -q -d ECC查看 ECC 配置与错误计数nvidia-smi -q -d ECC -i 0
nvidia-smi -q -d PAGE_RETIREMENT查看显存页退休记录排查 XID 63/64
nvidia-smi -e 1开启 ECC(需重启生效)默认已开启
nvidia-smi --query-gpu=ecc.errors.uncorrected.volatile.total --format=csv查询未纠正 ECC 错误(易失计数)监控脚本采集

附录 B XID 错误码速查表

XID 是 NVIDIA 驱动写入内核日志的 GPU 错误码,通过 dmesg -T | grep -i xidjournalctl -k | grep Xid 查看。下表为常见经验总结,具体含义与处置以 NVIDIA 官方 XID 文档(docs.nvidia.com/deploy/xid-errors)为准。

XID含义可能原因建议动作
13Graphics Engine Exception(图形/计算引擎异常)应用非法内存访问、越界;少数为驱动 Bug优先排查应用(CUDA kernel 越界);复现后用 compute-sanitizer 定位;升级驱动
14通道异常(Channel exception,较罕见)驱动/通道状态异常记录日志,升级驱动;频繁出现联系 NVIDIA 支持
31FIFO: MMU Error(GPU 显存页错误)应用非法地址访问(典型 CUDA Bug)或驱动 Bug用 compute-sanitizer 检查应用;升级驱动;偶发可重启应用
32Invalid or corrupted push buffer stream驱动 Bug 或硬件问题升级驱动;复现频繁则 GPU 重置/硬件检测
43GPU stopped processing(GPU 停止响应)GPU 挂起,应用死循环或硬件异常重启应用;必要时 GPU 重置;频繁出现检测硬件
45Preemptive cleanup(因先前错误触发的抢占式清理)伴随其他 XID 出现处理先出现的根因 XID,无需单独处理
48Double Bit ECC Error(不可纠正 ECC 错误)显存硬件故障高危:尽快隔离节点,重置/更换 GPU
61内部微控制器断点/警告固件内部事件观察;频繁出现升级驱动/固件
62内部微控制器停止固件异常重启节点;频繁出现联系支持
63ECC 页退休记录成功(行重映射事件)显存开始出现坏点记录并监控频率;持续增长则计划更换
64ECC 页退休记录失败(重映射资源耗尽)显存坏点过多高危:尽快更换 GPU
69Graphics Engine class error应用/驱动异常排查应用,升级驱动
74NVLink errorNVLink 链路故障(线缆/Switch/硬件)检查 nvidia-smi nvlink --error;重插/更换部件;隔离节点
79GPU has fallen off the bus(掉卡)PCIe 链路故障、供电不足、过热、硬件损坏高危:检查电源/散热/插槽;重启节点;复现则更换 GPU
92高单比特 ECC 错误率显存开始劣化监控趋势;持续增长则计划更换
94Contained ECC error(已遏制的不可纠正错误)显存错误但影响被限制在应用内受影响应用需重启;GPU 可继续服役但需监控
95Uncontained ECC error(未遏制的不可纠正错误)严重显存故障,数据可能已损坏高危:重置 GPU/重启节点,尽快更换 GPU
119GSP RPC 超时GSP 固件与驱动通信异常升级驱动/固件;重启节点
120GSP 错误GSP 固件异常升级驱动;必要时禁用 GSP 回退验证;重启节点

处置通则:48/64/79/95 等硬件类 XID 建议立即 cordon 节点、驱逐 Pod、走硬件流程;13/31/43 等应用类 XID 优先排查应用代码。可用 DCGM health check(dcgmi health -g <group> -c)自动监控。


附录 C DCGM 常用指标对照表

指标(DCGM_FI_DEV_*)含义告警建议阈值
GPU_UTILSM 利用率(%)训练场景长期 <50% 提示资源浪费
MEM_COPY_UTIL显存带宽利用率(%)结合 GPU_UTIL 判断瓶颈
FB_USED / FB_FREE已用/空闲显存(MB)使用率 >90% 告警
FB_RESERVED预留显存(MB)观测用
GPU_TEMP核心温度(℃)>85℃ 警告,>90℃ 严重(以型号规格为准)
MEMORY_TEMP显存温度(℃)>95℃ 告警(HBM 型号以官方规格为准)
POWER_USAGE当前功耗(W)持续接近 power limit 提示供电/散热瓶颈
SM_CLOCK / MEM_CLOCKSM/显存频率(MHz)低于标称值排查降频原因
CLOCKS_EVENT_REASONS_*降频原因位掩码(thermal/power 等)非 0 持续时告警
ECC_SBE_VOL_TOTAL单比特(可纠正)ECC 错误累计持续增长告警
ECC_DBE_VOL_TOTAL双比特(不可纠正)ECC 错误累计>0 严重告警(关联 XID 48/94/95)
RETIRED_SBE / RETIRED_DBE因 SBE/DBE 退休的显存页数增长告警(关联 XID 63/64)
RETIRED_PENDING待退休页=1 告警,需重置 GPU 生效
PCIE_TX_THROUGHPUT / PCIE_RX_THROUGHPUTPCIe 收发吞吐(KB/s)基线对比,异常偏低排查链路
PCIE_REPLAY_COUNTERPCIe 重传计数持续增长提示链路质量问题
NVLINK_BANDWIDTH_TOTALNVLink 总带宽训练基线对比
XID_ERRORS最近 XID 错误码非 0 即告警,按附录 B 分级处理
GR_ENGINE_ACTIVE / SM_ACTIVE / SM_OCCUPANCY引擎活跃/张量占用(需 profiling 权限)性能分析用
NVLINK_CRC_FLIT_ERROR_COUNT_TOTALNVLink CRC 错误增长告警(关联 XID 74)

提示:Prometheus 场景通常部署 dcgm-exporter,指标名自动转为 DCGM_FI_DEV_GPU_UTIL 等形式;部分指标默认未开启,需在 dcgm-exporter 配置中启用。


附录 D NCCL 环境变量速查

变量名作用典型取值使用场景
NCCL_DEBUG日志级别WARN / INFO / TRACE排查通信问题时设 INFO
NCCL_DEBUG_SUBSYS日志子系统过滤INIT,NET,GRAPH精细化定位
NCCL_DEBUG_FILE日志输出到文件/tmp/nccl.%h.%p.log大规模作业日志收集
NCCL_SOCKET_IFNAME指定 Bootstrap/TCP 网卡eth0 / bond0多网卡机器必配,选错会卡住
NCCL_IB_HCA指定使用的 IB/RoCE 网卡mlx5_0,mlx5_1多轨 IB 网络
NCCL_IB_GID_INDEXRoCEv2 的 GID 索引3(常见值,视系统而定)RoCE 环境必查项
NCCL_IB_DISABLE禁用 IB,退回 TCP0 / 1定位是否为 IB 链路问题时设 1
NCCL_IB_QPS_PER_CONNECTION每条连接的 QP 数4拥塞调优
NCCL_IB_TIMEOUTIB 超时22不稳定链路调大
NCCL_SOCKET_NTHREADS / NCCL_NSOCKS_PERTHREADsocket 线程参数视 CPU 而定TCP 模式性能调优
NCCL_NET_GDR_LEVEL / NCCL_NET_GDR_READGPUDirect RDMA 距离阈值/开关PIX / 1GDR 性能调优与排障
NCCL_P2P_DISABLE禁用 P2P(NVLink/PCIe 直传)1定位 P2P 问题时对照测试
NCCL_P2P_LEVELP2P 允许的最大距离NVL / PIX / SYS拓扑限制
NCCL_P2P_NET_CHUNKSIZE网络 P2P 分块大小默认 128K调优
NCCL_SHM_DISABLE禁用共享内存传输1容器 shm 异常时对照测试
NCCL_BUFFSIZE通信缓冲区大小(字节)4194304带宽/延迟调优
NCCL_NTHREADS每 CUDA block 线程数512调优
NCCL_ALGO强制通信算法Ring / Tree性能对比测试
NCCL_PROTO强制传输协议Simple / LL / LL128性能对比测试
NCCL_MIN_NCHANNELS / NCCL_MAX_NCHANNELS通道数范围8 / 16调优
NCCL_CROSS_NIC允许跨网卡通信1多轨网络拓扑
NCCL_TOPO_FILE指定拓扑描述文件/path/to/topo.xml虚拟化/特殊拓扑
NCCL_TOPO_DUMP_FILE导出检测到的拓扑/tmp/topo.xml与官方 XML 对比排障
NCCL_LAUNCH_MODE启动模式PARALLEL / GROUP启动超时问题排查
NCCL_ASYNC_ERROR_HANDLING异步错误处理(旧名 NCCL_ASYNC_EXIT1及时暴露通信错误
NCCL_COMM_BLOCKING阻塞式通信调用1某些容错场景
NCCL_NVLS_ENABLE启用 NVLink SHARP(NVLS)0 / 1H100/NVSwitch 集群调优
NCCL_IB_MERGE_NICS多轨 IB 合并为单网卡视图0 / 1IB 多轨调优

排障套路:先 NCCL_DEBUG=INFO 看日志;怀疑 IB 问题设 NCCL_IB_DISABLE=1 对照;怀疑 P2P 设 NCCL_P2P_DISABLE=1 对照;用 nccl-tests(all_reduce_perf 等)量化带宽与延迟基线。


附录 E GPU 相关故障排查命令清单

E.1 通用信息收集

bash
# 内核日志中的 GPU 关键词
dmesg -T | grep -iE 'xid|nvrm|nvidia|nvlink|ecc'
journalctl -k -g 'Xid' --since "1 hour ago"
journalctl -u nvidia-persistenced -u nvidia-fabricmanager

# GPU 基本信息与拓扑
nvidia-smi -q -d ECC,CLOCK,POWER,TEMPERATURE
nvidia-smi topo -m
lspci | grep -i nvidia        # 检查 PCIe 枚举,"掉卡"时常发现少卡

E.2 DCGM 诊断

bash
dcgmi discovery -l                     # 列出 GPU
dcgmi health -g 0 -c                   # 查看健康检查结果
dcgmi diag -g 0 -r 2                   # 中级诊断(r 1/2/3 逐级加深)
dcgmi stats -g 0 -e                    # 开启统计采集
dcgmi dmon -e 1002,1003,1004,1005      # 实时监控温度/功耗/利用率/显存

E.3 IB/RoCE 网络排查

bash
ibstat                                 # 查看 IB 网卡状态(State: Active 为正常)
iblinkinfo                             # 查看 fabric 内链路状态
ibdiagnet                              # 全网诊断(需订阅管理器环境)
ibv_devinfo                            # RDMA 设备与 GID 信息(RoCE 查 GID index)
ethtool ethX                           # RoCE/以太网链路速率与错误

E.4 场景化排查组合

场景一:掉卡(nvidia-smi 少卡 / XID 79)

bash
lspci | grep -i nvidia | wc -l         # 对比应有卡数
dmesg -T | grep -iE 'xid.*79|fallen off'
nvidia-smi -q -d POWER,TEMPERATURE     # 查供电/散热
ipmitool sel list 2>/dev/null | tail   # 查硬件事件日志(BMC)
# 处置:重启节点 → 复现则报硬件工单;K8s 侧 cordon 节点

场景二:训练性能差

bash
nvidia-smi dmon -s pucm                # 功耗/利用率/时钟/显存
nvidia-smi --query-gpu=clocks_throttle_reasons.active --format=csv -l 5
nvidia-smi nvlink --error              # NVLink 错误
dcgmi dmon -e 1009,1010                # PCIe 收发吞吐
# 网络侧:跑 nccl-tests 对比基线;NCCL_DEBUG=INFO 查走了什么链路
# K8s 侧:确认拓扑亲和(nvidia-smi topo -m),避免跨 NUMA/跨交换机

场景三:Pod 起不来(GPU 分配失败)

bash
kubectl describe pod <pod> -n <ns>     # 看 Events:Insufficient nvidia.com/gpu?
kubectl describe node <node> | grep -A5 Allocatable   # 节点可分配 GPU 数
kubectl get pods -n kube-system -l app=nvidia-device-plugin-daemonset -o wide
kubectl logs -n kube-system <device-plugin-pod>       # device-plugin 日志
kubectl exec -it <pod> -- env | grep NVIDIA_VISIBLE_DEVICES
nvidia-smi                             # 节点上确认驱动与 device-plugin 状态
# 常见原因:device-plugin 未就绪 / 显存碎片化 / CDI 配置错误 / RuntimeClass 未配

场景四:显存泄漏/进程残留

bash
nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv
fuser -v /dev/nvidia*                  # 找占用设备文件的进程
# 容器场景注意:宿主机 nvidia-smi 看到的 PID 是容器内进程的宿主机 PID
crictl ps | grep <关键>              # 反查容器

场景五:ECC/硬件健康巡检(日常)

bash
nvidia-smi --query-gpu=index,ecc.errors.uncorrected.aggregate.total,retired_pages.pending --format=csv
dcgmi diag -g 0 -r 1                   # 轻量诊断可定时执行

附录 F 常见面试题精简版(30 道)

  1. nvidia-smi 显存占用但无进程? 多为进程异常退出残留或 CUDA context 未释放;fuser -v /dev/nvidia* 找进程,不行再考虑 GPU reset。
  2. GPU 利用率和显存利用率的区别? 前者是 SM 活跃时间占比,后者是显存带宽利用率;高显存低 SM 通常是访存受限 kernel。
  3. 什么是 ECC?DBE 和 SBE 区别? 显存纠错;SBE 单比特可纠正,DBE 双比特不可纠正,DBE 属高危(XID 48/95)。
  4. XID 79 是什么?怎么处理? GPU 掉总线,多为硬件/供电/散热;cordon 节点、查硬件日志、重启,复现则换卡。
  5. XID 13/31 通常是谁的问题? 多为应用非法显存访问,用 compute-sanitizer 定位。
  6. 持久化模式(Persistence Mode)有什么用? 保持驱动常驻,避免首次 CUDA 初始化慢和驱动卸载导致的异常。
  7. MIG 是什么? A100/H100 的硬件级切分,可把一张卡切成最多 7 个隔离实例,故障域隔离但切分固定。
  8. MIG 和时间片/vGPU 的区别? MIG 硬件隔离、比例固定;时间片是时分复用无显存隔离;vGPU 需授权、支持动态比例。
  9. GPU 拓扑亲和为什么重要? 跨 NUMA/跨 PCIe switch 通信慢;用 nvidia-smi topo -m 看,调度时让多卡作业落在同一 NVLink 域。
  10. device-plugin 在 K8s 中做什么? 向 kubelet 上报 nvidia.com/gpu 资源,并在容器启动时注入 GPU 设备与环境变量。
  11. K8s 默认 GPU 调度的局限? 只按整卡数量,不支持按显存/算力切分与装箱优化,需要 Volcano/HAMi 等扩展。
  12. GPU 共享方案有哪些? 时间片、MIG、MPS、vGPU、用户态拦截(vCUDA/HAMi)等。
  13. MPS 是什么? 多进程服务,让多进程并发共享一张卡的 SM,隔离弱于 MIG。
  14. Volcano 解决什么问题? Gang Scheduling(成组调度)、队列公平性、AI 作业的原生调度语义。
  15. 什么是 Gang Scheduling? 一个分布式作业的所有 Pod 要么全部调度成功要么都不调度,避免死锁与资源浪费。
  16. NCCL 是干什么的? NVIDIA 多卡/多机集合通信库,AllReduce 等原语,是分布式训练的通信底座。
  17. NCCL 排查三板斧? NCCL_DEBUG=INFO 看日志;nccl-tests 测带宽基线;NCCL_IB_DISABLE=1 等变量做对照隔离。
  18. RoCE 环境最常见的 NCCL 配置错误? NCCL_SOCKET_IFNAME 选错网卡、NCCL_IB_GID_INDEX 不对导致建链失败或走慢路径。
  19. GPUDirect RDMA 是什么? 网卡直接读写 GPU 显存,绕过 CPU/内存拷贝,多机训练关键优化。
  20. 如何发现 GPU 降频? nvidia-smi -q -d CLOCK 看 throttle reasons(过热/功耗/空闲)。
  21. dcgm-exporter 暴露什么? 将 DCGM 指标转成 Prometheus 格式,如利用率、温度、ECC 错误、XID 等。
  22. 训练任务带宽不达标怎么定位? 分层:卡内(nvidia-smi dmon)→ 卡间 NVLink → 机间(nccl-tests + ibstat)→ 存储 IO。
  23. DCGM diag 的三个级别? r1 秒级轻检、r2 分钟级含显存测试、r3 深度诊断(需独占 GPU,业务空窗执行)。
  24. GPU 节点上线前要做什么? 烧机(gpu-burn/DCGM r3)、nccl-tests 基线、ECC 清零观察、打标签与拓扑登记。
  25. 为什么训练 Pod 要配 shm? NCCL/PyTorch DataLoader 用共享内存,容器默认 64MB 太小,需挂 emptyDir(Medium: Memory)。
  26. CUDA_VISIBLE_DEVICES 和 NVIDIA_VISIBLE_DEVICES 区别? 前者 CUDA 运行时过滤,后者 nvidia-container-toolkit 注入设备,容器内以前者看到的为准。
  27. 显存碎片导致 OOM 怎么办? PyTorch 用 expandable_segments:True / 调整 max_split_size_mb;调度侧做显存装箱。
  28. NVSwitch 的作用? 全互联交换芯片,让整机 8 卡间任意两卡满带宽 NVLink 通信(DGX/HGX 架构)。
  29. GPU 故障自动处置流水线? dcgm-exporter 暴露 XID → 告警规则分级 → cordon + 驱逐 Pod → 创建工单/自动重启 → 复现换卡。
  30. 大模型训练对网络的要求? 参数同步流量大且同步突发,要求 RDMA 无损网络(PFC/ECN 配置)、轨道式组网、NCCL 多轨调优。

附录 G 参考资源

G.1 官方文档

主题链接
NVIDIA 数据中心文档总入口https://docs.nvidia.com/datacenter/
XID 错误官方文档https://docs.nvidia.com/deploy/xid-errors/
CUDA 文档https://docs.nvidia.com/cuda/
DCGM 文档https://docs.nvidia.com/datacenter/dcgm/
dcgm-exporterhttps://github.com/NVIDIA/dcgm-exporter
NCCL 文档https://docs.nvidia.com/deeplearning/nccl/
nccl-testshttps://github.com/NVIDIA/nccl-tests
GPU Operatorhttps://docs.nvidia.com/datacenter/cloud-native/gpu-operator/
k8s-device-pluginhttps://github.com/NVIDIA/k8s-device-plugin
NVIDIA Container Toolkithttps://docs.nvidia.com/datacenter/cloud-native/container-toolkit/
MIG 用户指南https://docs.nvidia.com/datacenter/tesla/mig-user-guide/
Volcanohttps://volcano.sh/
HAMihttps://github.com/Project-HAMi/HAMi
Kubernetes 官方文档https://kubernetes.io/zh-cn/docs/
Kubernetes GPU 管理https://kubernetes.io/zh-cn/docs/tasks/manage-gpus/scheduling-gpus/

G.2 推荐书籍与社区

类型名称说明
书籍《Kubernetes 权威指南》(龚正等)K8s 进阶参考书
书籍《CUDA C 编程权威指南》理解 GPU 计算模型,有助于性能分析
书籍《大规模语言模型:从理论到实践》理解大模型训练对基础设施的要求
官方博客NVIDIA Technical Bloghttps://developer.nvidia.com/blog/ 工程实践与调优文章
社区NVIDIA Developer Forums驱动/DCGM/NCCL 问题官方答疑
社区Kubernetes Slack / CNCF 社区云原生与 GPU 调度相关讨论
开源项目DeepSpeed / Megatron-LM 文档理解分布式训练框架对集群的需求

本文档内容以编写时(2026 年)主流版本为准,命令参数与指标名称可能随版本演进,使用前请核对对应版本官方文档。