# 1. 什么是 nvidia-smi
nvidia-smi 全称是 NVIDIA System Management Interface,是 NVIDIA 提供的管理和监控 GPU 的接口。
nvidia-smi 调用的是 NVML。NVML 全称是 NVIDIA Management Library,提供了一组 C API,用于 NVIDIA GPU 监控和管理的库。
## 1.1 可查询的状态
- ECC 错误计数
- GPU 利用率
- 活动计算进程
- 时钟和 PState
- 温度和风扇速度
- 电源管理
- 硬件识别
## 1.2 可修改的状态
- ECC 模式
- ECC 复位
- 计算模式
- 持久模式
# 2. nvidia-smi 字段含义
![image.png](https://blog.zs-fighting.cn/upload/2024/04/image-fb17c3407c2d42e8b0527e4fdaf64afc.png)
|字段|说明|
|-------|-------|
|NVIDIA-SMI|nvidia-smi 的版本号|
|Driver Version|驱动版本号|
|CUDA Version|CUDA 版本号|
|GPU|GPU 卡序号|
|GPU Name|GPU 的名称和内存容量|
|Persistence-M|持久模式是否启用。On 表示启用, Off 表示关闭。启用时 GPU 将保持最大性能状态|
|Bus-Id|GPU 所在的 PCIe 总线地址|
|Disp.A|显示器是否连接到 GPU 的输出端口。On 表示连接,Off 表示没有连接|
|Volatile Uncorr. ECC|未 corrected 错误的易失性 ECC 内存错误计数。用于检测内存错误|
|Fan|风扇速度, N/A 表示没有风扇或风扇速度读数|
|Temp|GPU 温度|
|Perf|性能状态。P0 是最大性能状态, P8 是最小性能状态|
|Pwr|Usage/Cap: 当前功耗和功耗上限|
|Memory-Usage|已用 GPU 显存/总 GPU 显存|
|GPU-Util|GPU 利用率|
|Compute M.|计算模式。Default 是默认模式|
|MIG M.|MIG(Multi-Instance GPU) 模式, 将一个物理 GPU 分成多个独立、隔离的实例。Disabled 表示未启用|
|字段|说明|
|-------|-------|
|GPU|GPU 设备的 ID|
|GI|Global ID, 针对多 GPU 系统, 一个进程所有的 cuda context 的统一 ID|
|CI|Compute Instance ID, 属于同一个 GPU 进程内, 区分不同 cuda context 的 ID|
|PID|进程 ID|
|Type|进程类型, C 表示 CUDA 进程, G 表示 Graphics 进程|
|Process name|进程名称|
|GPU Memory Usage|该进程当前在 GPU 上占用的内存大小|
# 3. 常用参数
- `nvidia-smi -l` 定时刷新状态
每隔 5 秒刷新一次
```
nvidia-smi -l 5
```
- `nvidia-smi -L` 查看显卡型号
```
nvidia-smi -L
GPU 0: NVIDIA A100-SXM4-80GB (UUID: GPU-x-8bff-5236-2111-x)
GPU 1: NVIDIA A100-SXM4-80GB (UUID: GPU-x-2a64-20a8-8c5b-x)
...
```
- `nvidia-smi -q` 查看 GPU 的状态详情
可通过 -i 参数指定 GPU 序号,如果不指定,默认查询全部。
```
nvidia-smi -q -i 0
==============NVSMI LOG==============
Driver Version : 535.129.03
CUDA Version : 12.2
Attached GPUs : 8
GPU 00000000:27:00.0
Product Name : NVIDIA A100-SXM4-80GB
Product Brand : NVIDIA
Product Architecture : Ampere
Display Mode : Enabled
Display Active : Disabled
Persistence Mode : Enabled
Addressing Mode : None
MIG Mode
Current : Disabled
Pending : Disabled
```
# 4. 常用子命令
- `nvidia-smi nvlink -s` 查看 NVLink 网络状态
```
nvidia-smi nvlink -s
GPU 0: NVIDIA A100-SXM4-80GB (UUID: GPU-d604695a-8bff-5236-2111-59cae59c2a48)
Link 0: 25 GB/s
Link 1: 25 GB/s
Link 2: 25 GB/s
Link 3: 25 GB/s
Link 4: 25 GB/s
Link 5: 25 GB/s
Link 6: 25 GB/s
Link 7: 25 GB/s
Link 8: 25 GB/s
Link 9: 25 GB/s
Link 10: 25 GB/s
Link 11: 25 GB/s
```
- `nvidia-smi topo -m` 查看连接拓扑
```
nvidia-smi topo -m
GPU0 GPU1 GPU2 GPU3 GPU4 GPU5 GPU6 GPU7 NIC0 CPU Affinity NUMA Affinity GPU NUMA ID
GPU0 X NV12 NV12 NV12 NV12 NV12 NV12 NV12 SYS 0-31,64-95 0 N/A
GPU1 NV12 X NV12 NV12 NV12 NV12 NV12 NV12 SYS 0-31,64-95 0 N/A
GPU2 NV12 NV12 X NV12 NV12 NV12 NV12 NV12 SYS 0-31,64-95 0 N/A
GPU3 NV12 NV12 NV12 X NV12 NV12 NV12 NV12 SYS 0-31,64-95 0 N/A
GPU4 NV12 NV12 NV12 NV12 X NV12 NV12 NV12 SYS 32-63,96-127 1 N/A
GPU5 NV12 NV12 NV12 NV12 NV12 X NV12 NV12 SYS 32-63,96-127 1 N/A
GPU6 NV12 NV12 NV12 NV12 NV12 NV12 X NV12 SYS 32-63,96-127 1 N/A
GPU7 NV12 NV12 NV12 NV12 NV12 NV12 NV12 X SYS 32-63,96-127 1 N/A
NIC0 SYS SYS SYS SYS SYS SYS SYS SYS X
Legend:
X = Self
SYS = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI)
NODE = Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node
PHB = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU)
PXB = Connection traversing multiple PCIe bridges (without traversing the PCIe Host Bridge)
PIX = Connection traversing at most a single PCIe bridge
NV# = Connection traversing a bonded set of # NVLinks
NIC Legend:
NIC0: mlx5_bond_0
```
NV12 表示有 12 根 NVLink,以每个 25 GB/s 的速率计算,这里 GPU 与 GPU 之间的互联速度达 300 GB/s。
# 5. dcgm
通常在GPU密集型集群中,管理员面临的挑战之一是缺乏有效识别故障,性能下降,电源效率低下及其根本原因的工具。如今,如果GPU在节点中出现故障,管理员需要花费时间手动跟踪和检测故障设备,并运行离线诊断测试。这需要完全关闭节点,删除系统软件并安装用于执行深度诊断的特殊驱动程序。
DCGM包括系统验证功能,可执行深度诊断,以主动调查硬件问题或严重的系统问题。深度诊断包括验证GPU计算性能、互连带宽和延迟、功率和热特性,以及检测任何违规或异常。以下输出显示了来自DCGM的全面诊断报告的示例。
`dcgmi diag -r 3`
![image.png](https://blog.zs-fighting.cn/upload/2024/04/image-3780a9ff77c849678162dd2ef2ab9a62.png)
DCGM将测试日志存储在主机文件系统上。系统验证和压力检查通过JSON文本文件提供其他时间序列数据,以获取有关每次测试期间GPU行为的更多详细信息。
NVIDIA 相关命令集合