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

> 用 nvidia-smi 命令在 Linux 上监控 GPU 使用率：实时查看、CSV 日志、nvtop、DCGM exporter、ECC 与 Xid 错误，以及 AMD 平台上 rocm-smi 的对应命令。

来源：https://fullgpu.com/zh/docs/gpu-monitoring  
更新日期：2026-10-22  
发布方：FullGPU (https://fullgpu.com/)

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

## nvidia-smi 速查表

| 任务 | 命令 |
| --- | --- |
| 所有 GPU 的单次快照 | `nvidia-smi` |
| 每 2 秒刷新一次 | `nvidia-smi -l 2` |
| 列出 GPU 及其 UUID | `nvidia-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、NUMA | `nvidia-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 本身运行失败，请参阅[驱动故障排查](https://fullgpu.com/zh/docs/nvidia-drivers-cuda)。

## 用 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 服务器通过[私有网络](https://fullgpu.com/zh/products/private-networking)或 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）事件，或未能记录该事件 | 重启以应用待处理的重映射。如果反复出现或失败，请提交工单。 |
| 74 | NVLink 错误 | 请提交工单，并附上完整的日志行。 |
| 79 | GPU 已从总线上掉线 | 请提交工单。在服务器重启之前，该 GPU 一直不可用，并且可能需要维修。 |

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

```
sudo nvidia-bug-report.sh
```

该命令会将 `nvidia-bug-report.log.gz` 写入当前目录。根据我们的[服务等级协议](https://fullgpu.com/zh/legal/sla)，故障 GPU 会被优先更换，工程师 7×24 小时响应：请在控制台[提交工单](https://fullgpu.com/zh/help/getting-support)。

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

| 任务 | NVIDIA | AMD |
| --- | --- | --- |
| 快照 | `nvidia-smi` | `rocm-smi` 或 `amd-smi metric` |
| 实时查看 | `nvidia-smi -l 2` | `watch -n 2 rocm-smi` |
| 持续输出表格 | `nvidia-smi dmon` | `amd-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 xid` | `sudo dmesg -T \| grep -i amdgpu` |

关于 AMD 工具的更多内容，请参阅 [ROCm 配置](https://fullgpu.com/zh/docs/amd-rocm)。

## 相关页面

- [在 Ubuntu 上查看 CUDA 版本和 NVIDIA 驱动](https://fullgpu.com/zh/docs/nvidia-drivers-cuda): 用 nvidia-smi 和 nvcc 查看 NVIDIA 驱动与 CUDA 版本，了解两者的版本必须如何对应，并在 Ubuntu 24.04 上加装一个 CUDA 工具包，而无需安装新的驱动。
- [在多 GPU 服务器上运行 NCCL 测试：all_reduce_perf 分步指南](https://fullgpu.com/zh/docs/multi-gpu-nccl): 在多 GPU 服务器上运行 NCCL 测试：检查 NVLink 拓扑，编译 nccl-tests，读懂 all_reduce_perf 输出中的 busbw，并在全部 8 张 GPU 上启动 torchrun 任务。
- [GPU 服务器 SLA 赔偿额度：运作方式](https://fullgpu.com/zh/help/sla-credits): GPU 服务器 SLA 赔偿额度详解：我们承诺 99.9% 的月度可用性，未达标时赔偿额度为该服务器月费的 10% 至 100%；本文说明哪些情况计入停机时间，以及如何申请赔偿。
- [GPU 服务器支持：工单的运作方式](https://fullgpu.com/zh/help/getting-support): FullGPU 的 GPU 服务器支持 7×24 小时提供，由工程师通过您控制台中的工单处理。了解谁可以提交工单、工单中应写明哪些信息，以及哪些事务无需提交工单。
