GPU 软件

用于监控 GPU 服务器的 nvidia-smi 命令

从快速查看到长期指标:如何观察 GPU 的利用率、显存、功耗和错误,以及如何判断哪些问题应由我们来修复。

本页内容
  1. nvidia-smi 速查表
  2. 实时查看 GPU
  3. 用 dmon 持续输出指标
  4. 用 --query-gpu 记录到 CSV 文件
  5. nvtop:GPU 版的 htop
  6. 用 DCGM exporter 和 Prometheus 采集长期指标
  7. 温度、功耗和 ECC 错误
  8. Xid 错误,以及何时提交工单
  9. AMD 平台的对应命令:rocm-smi 与 amd-smi

以下 nvidia-smi 监控命令涵盖了在 Linux 上监控 GPU 使用情况所需的一切,从训练过程中的实时查看,到保留数周的指标。这些命令在单卡套餐和 8 卡服务器上的用法完全相同。最后几节介绍硬件错误、何时提交工单,以及 AMD 平台上的对应命令。

nvidia-smi 速查表

任务命令
所有 GPU 的单次快照nvidia-smi
每 2 秒刷新一次nvidia-smi -l 2
列出 GPU 及其 UUIDnvidia-smi -L
持续输出使用率、功耗、时钟频率和显存nvidia-smi dmon -s pucm
进程及其占用的显存nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv
以 CSV 格式输出选定指标,每 10 秒一次nvidia-smi --query-gpu=index,utilization.gpu,memory.used --format=csv -l 10
温度、功耗或 ECC 详细信息nvidia-smi -q -d TEMPERATURE(或 POWER、ECC)
GPU 之间的连接方式:NVLink、PCIe、NUMAnvidia-smi topo -m
每条 NVLink 链路的状态nvidia-smi nvlink -s

下文逐一解释这些命令,AMD 平台的对应命令列在本页末尾。

实时查看 GPU

nvidia-smi              # one snapshot
nvidia-smi -l 2         # print a new snapshot every 2 seconds
watch -n 2 nvidia-smi   # same, redrawn in place

GPU-Util 是至少有一个 CUDA 内核在运行的时间占比,而不是每个核心的繁忙程度,因此 100% 并不能证明 GPU 得到了高效利用。Memory-Usage 是已分配的显存;vLLM 等框架会有意预留大部分显存。Pwr:Usage/Cap 和 Temp 显示功耗和温度,Perf 显示性能状态,其中 P0 为最高。进程列表显示每张 GPU 正被哪些 PID 使用;在容器内,这个列表通常为空,因此请在主机上查看。如果 nvidia-smi 本身运行失败,请参阅驱动故障排查。

用 dmon 持续输出指标

nvidia-smi dmon -s pucm -d 5
nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv

dmon 每 5 秒(-d 5)为每张 GPU 输出一行。-s 后面的字母用于选择指标组:p 为功耗和温度,u 为利用率,c 为时钟频率,m 为显存;加上 e 可显示 ECC 和 PCIe 错误,加上 t 可显示 PCIe 吞吐量。-i 0,1 可将输出限定为部分 GPU。第二条命令会列出每个进程及其占用的显存。

用 --query-gpu 记录到 CSV 文件

fields=timestamp,index,utilization.gpu,memory.used,memory.total
fields=$fields,temperature.gpu,power.draw,clocks.sm
nvidia-smi --query-gpu=$fields --format=csv -l 10 >> ~/gpu-metrics.csv

这会每 10 秒为每张 GPU 追加一行;请在 tmux 中运行,或将其作为服务运行。如果文件要用脚本解析,请使用 --format=csv,noheader,nounits。nvidia-smi --help-query-gpu 会列出所有字段,例如 HBM GPU 上的 temperature.memory。

nvtop:GPU 版的 htop

sudo apt install -y nvtop
nvtop

nvtop 会为每张 GPU 绘制利用率和显存图表,图表下方是进程列表。较新的版本(例如 Ubuntu 24.04 中的版本)也支持 AMD GPU。按 Q 键退出。

用 DCGM exporter 和 Prometheus 采集长期指标

如需历史数据和告警,可以使用 NVIDIA 的 DCGM exporter:它以 Prometheus 格式暴露 GPU 指标,Grafana 可以将这些指标绘制成图表。以下是用 Docker 启动的最简示例,请将 TAG 替换为 NVIDIA NGC 目录中的当前标签:

docker run -d --name dcgm-exporter --gpus all --cap-add SYS_ADMIN \
  -p 127.0.0.1:9400:9400 nvcr.io/nvidia/k8s/dcgm-exporter:TAG
curl -s http://127.0.0.1:9400/metrics \
  | grep -E 'DCGM_FI_DEV_(GPU_UTIL|GPU_TEMP|POWER_USAGE|XID_ERRORS)'

每项指标都应为每张 GPU 显示一个值。请让您的 Prometheus 服务器通过私有网络或 SSH 隧道抓取这些指标,并针对 DCGM_FI_DEV_XID_ERRORS 和温度设置告警。切勿将指标端口对互联网开放。在 AMD 服务器上,AMD 面向 Instinct GPU 的 device metrics exporter 起同样的作用。

温度、功耗和 ECC 错误

nvidia-smi -q -d TEMPERATURE
nvidia-smi -q -d POWER,PERFORMANCE
nvidia-smi -q -d ECC
nvidia-smi -q -d ROW_REMAPPER
  • 温度。将当前读数与同一输出中的“GPU Slowdown Temp”和“GPU Shutdown Temp”阈值进行比较。读数接近降频阈值时,时钟频率会降低。
  • 功耗和时钟频率。PERFORMANCE 部分列出了时钟事件原因(clock event reasons)。高负载下出现“SW Power Cap”属于正常;如果 GPU 繁忙时出现“HW Slowdown”或“HW Thermal Slowdown”,则值得上报。
  • ECC。数据中心 GPU 会即时纠正单比特显存错误。易失性(volatile)计数器在驱动重新加载时清零;累计(aggregate)计数器则覆盖 GPU 的整个生命周期。不可纠正的错误通常会中止正在运行的任务。
  • 行重映射。HBM GPU 会替换有故障的显存行。“Pending: Yes”表示该 GPU 需要重置或重启才能应用此次重映射。反复出现重映射或重映射失败,说明这张 GPU 需要处理。

Xid 错误,以及何时提交工单

NVIDIA 驱动会以 Xid 消息的形式在内核日志中报告 GPU 故障:

sudo dmesg -T | grep -i xid
sudo journalctl -k --since "24 hours ago" | grep -i xid
Xid含义处理方法
13、31、43图形引擎异常、GPU 显存页错误、GPU 停止处理通常是应用程序中的 bug 或非法内存访问所致。如果在不同任务中持续出现,请提交工单。
48、94、95双比特 ECC 错误;已隔离(contained)或未隔离(uncontained)的 ECC 错误请提交工单。已隔离的错误(94)只会中止受影响的应用程序;出现 95 后,必须重置 GPU。
63、64行重映射或显存页退役(page retirement)事件,或未能记录该事件重启以应用待处理的重映射。如果反复出现或失败,请提交工单。
74NVLink 错误请提交工单,并附上完整的日志行。
79GPU 已从总线上掉线请提交工单。在服务器重启之前,该 GPU 一直不可用,并且可能需要维修。

请在工单中附上服务器 IP、Xid 日志行和一份 NVIDIA bug 报告,它会把相关日志收集到一个文件中:

sudo nvidia-bug-report.sh

该命令会将 nvidia-bug-report.log.gz 写入当前目录。根据我们的服务等级协议,故障 GPU 会被优先更换,工程师 7×24 小时响应:请在控制台提交工单。

AMD 平台的对应命令:rocm-smi 与 amd-smi

任务NVIDIAAMD
快照nvidia-smirocm-smi 或 amd-smi metric
实时查看nvidia-smi -l 2watch -n 2 rocm-smi
持续输出表格nvidia-smi dmonamd-smi monitor
使用率、显存、功耗、温度nvidia-smi --query-gpu=...rocm-smi --showuse --showmemuse --showpower --showtemp
进程nvidia-smi --query-compute-apps=...amd-smi process
内核消息sudo dmesg -T | grep -i xidsudo dmesg -T | grep -i amdgpu

关于 AMD 工具的更多内容,请参阅 ROCm 配置。

问题仍未解决?

请在控制台提交工单,写明服务器、您运行了什么以及错误输出(如有)。工程师 7×24 小时答复。

提交工单

登录 FullGPU

管理您的 GPU 服务器、余额和账单。

首次使用 FullGPU? 创建账户