nvidia-smi(NVIDIA System Management Interface)是NVIDIA官方提供的GPU管理工具,提供管理和监控 GPU 的接口。其核心功能包括NVIDIA GPU运行状况、工作负载、硬件状态诊断和资源调度管理。
核心功能
| 功能模块 | 具体能力 | 适用场景 |
|---|---|---|
| 实时监控 | 显存占用、温度、功耗、时钟频率 | 深度学习训练过程监控 |
| 进程管理 | 查看/终止占用GPU的进程 | 资源泄漏应急处理 |
| 计算模式控制 | 切换默认/专属计算模式 | 多任务并发调度 |
| ECC错误检测 | 读取内存错误计数器 | 硬件可靠性验证 |
| 性能状态调节 | 动态调整GPU功耗墙(P0-P12) | 能效比优化 |
nvidia-smi输出字段解析
执行 nvidia-smi 命令后,会看到类似下面的表格。
+-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 580.95.05 Driver Version: 580.95.05 CUDA Version: 13.0 | |-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 NVIDIA B200 On | 00000000:51:00.0 Off | 0 | | N/A 27C P0 136W / 1000W | 0MiB / 183359MiB | 0% Default | | | | Disabled | +-----------------------------------------+------------------------+----------------------+ | 1 NVIDIA B200 On | 00000000:52:00.0 Off | 0 | | N/A 25C P0 140W / 1000W | 0MiB / 183359MiB | 0% Default | | | | Disabled | +-----------------------------------------+------------------------+----------------------+ | 2 NVIDIA B200 On | 00000000:62:00.0 Off | 0 | | N/A 27C P0 138W / 1000W | 0MiB / 183359MiB | 0% Default | | | | Disabled | +-----------------------------------------+------------------------+----------------------+ | 3 NVIDIA B200 On | 00000000:63:00.0 Off | 0 | | N/A 26C P0 138W / 1000W | 0MiB / 183359MiB | 0% Default | | | | Disabled | +-----------------------------------------+------------------------+----------------------+ | 4 NVIDIA B200 On | 00000000:75:00.0 Off | 0 | | N/A 27C P0 139W / 1000W | 0MiB / 183359MiB | 0% Default | | | | Disabled | +-----------------------------------------+------------------------+----------------------+ | 5 NVIDIA B200 On | 00000000:76:00.0 Off | 0 | | N/A 25C P0 140W / 1000W | 0MiB / 183359MiB | 0% Default | | | | Disabled | +-----------------------------------------+------------------------+----------------------+ | 6 NVIDIA B200 On | 00000000:86:00.0 Off | 0 | | N/A 27C P0 142W / 1000W | 0MiB / 183359MiB | 0% Default | | | | Disabled | +-----------------------------------------+------------------------+----------------------+ | 7 NVIDIA B200 On | 00000000:87:00.0 Off | 0 | | N/A 26C P0 138W / 1000W | 0MiB / 183359MiB | 0% Default | | | | Disabled | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | +=========================================================================================+ | 0 N/A N/A 3085666 C /home/anzhihe/chegva/.venv/bin/python 97757MiB | | 1 N/A N/A 1742545 C /home/anzhihe/chegva/.venv/bin/python3 97122MiB | | 2 N/A N/A 3151439 C /home/anzhihe/chegva/.venv/bin/python3.12 12850MiB | | 2 N/A N/A 3151917 C /home/anzhihe/chegva/.venv/bin/python 95683MiB | +-----------------------------------------------------------------------------------------+
nvidia-smi 的默认输出非常经典,可以看作由两个主要部分构成:上方的 GPU状态总览表格 和下方的 Processes(进程信息)表格。
上方的 GPU状态总览表格,总结了每个物理GPU的核心实时指标,是快速监控的关键。
下方的 Processes(进程信息)表格,显示了正在使用GPU资源的各个进程的详细信息,在多用户环境或排查显存占用时极为有用。
各字段详细含义如下:
| 字段类别 | 字段名称 | 含义与解读 |
|---|---|---|
| 标题与版本 | NVIDIA-SMI | NVIDIA系统管理接口工具本身。 |
| Driver Version | 已安装的NVIDIA驱动程序版本。运行CUDA程序需确保其与CUDA Toolkit版本兼容。 | |
| CUDA Version | 此驱动程序支持的最高CUDA运行时版本。 | |
| GPU设备信息 | GPU | GPU的索引编号,从0开始。在多卡系统中用于指定设备。 |
| Name | GPU的具体型号(如RTX 4090, Tesla T4)。 | |
| Persistence-M | 持久化模式。On表示启用,GPU在无负载时也保持上电状态,可减少后续任务启动延迟,但会消耗更多待机功耗。Off表示关闭。 | |
| Bus-Id | PCI总线标识符,格式为域:总线:设备.功能,用于硬件定位。 | |
| 运行状态 | Fan | 风扇转速,通常以百分比显示。部分服务器GPU可能显示为N/A。 |
| Temp | GPU核心温度,单位摄氏度。理想范围是低于85°C。长期超过此温度可能因热保护导致性能下降(降频)。 | |
| Perf | 性能状态,从P0(最高)到P12(最低)。P0表示正在以最大性能运行。 | |
| Pwr:Usage/Cap | 功耗:Usage为实时功耗,Cap为GPU设定的功耗上限(TDP),单位瓦特(W)。 | |
| 显存与计算 | Memory-Usage | 显存使用量,格式为已使用量 / 总量。监视此值有助于避免因显存不足(OOM)导致程序崩溃。 |
| GPU-Util | GPU计算核心利用率,以百分比表示。高负载任务(如模型训练)下通常较高。持续过低(如<30%)可能表示存在CPU或数据I/O瓶颈。 | |
| Compute M. | 计算模式。Default允许多个进程共享GPU;Exclusive_Process表示独占模式,同一时间仅允许一个进程使用。 | |
| 进程信息 | GPU | 该进程正在使用的GPU索引。如果进程使用了多张卡,这里会列出多张卡的ID。 |
| GI ID | GPU Instance ID(GPU实例ID),这是MIG功能在物理GPU上划分出的“GPU实例”的编号。可以将其理解为一台物理服务器中的第一层虚拟化分区。 | |
| CI ID | Compute Instance ID(计算实例ID),这是在一个GPU实例内部,进一步划分出的“计算实例”的编号。它是第二层虚拟化分区,直接用于运行具体的计算任务。 | |
| PID | 进程的系统ID。这是唯一标识,可用于后续的监控或终止操作 (kill命令)。 | |
| Type | 进程类型。最常见的是 C (Compute,计算进程,如CUDA程序) 和 G (Graphics,图形进程)。AI任务通常是 C。 | |
| Process name | 进程的名称。例如 python、torch 等,能快速定位是哪个程序。 | |
| GPU Memory Usage | 该进程当前占用的GPU显存量。注意:此值不等于整个GPU的总显存使用量("Memory-Usage"),后者是所有进程占用之和。 |
请注意:不同厂家和版本的工具,其命令和输出字段名称可能不同。例如,华为的相应工具为 npu-smi,阿里的相应工具为 ppu-smi,英特尔数据中心GPU的工具则为 xpu-smi。
MIG解释及GI、CI、PID之间关系
MIG 是 Multi-Instance GPU 的缩写,是NVIDIA在Ampere架构及之后的数据中心GPU(如A100, H100)上引入的一项关键功能。它允许将一块物理GPU安全地分割成多个独立的、具备各自显存和计算核心的“小GPU”(即GPU实例),并分配给不同的用户或作业,从而实现硬件级的资源隔离、安全隔离和更精细的资源利用。
GI、CI、PID这三个字段标识了进程在 MIG虚拟化架构中的精确位置,其层级关系为:
物理GPU → GI (GPU实例) → CI (计算实例) → 进程 (PID)
当一个物理GPU 未启用MIG 或进程不在MIG实例中运行时,GI 和 CI 字段通常会显示为 N/A 或 -,这是正常现象。只有在使用了支持MIG的GPU(如A100)并启用了该功能后,才会在进程信息中看到具体的GI和CI编号
常用命令与实战技巧
除了基础的 nvidia-smi,以下命令能更好地监控和管理GPU:
进阶管理功能
nvidia-smi 还支持一些直接影响GPU运行状态的操作(通常需要管理员权限):
典型问题排查思路
当遇到性能问题时,可以按以下步骤排查:
GPU利用率低
可能原因:CPU数据预处理成为瓶颈;批处理大小(Batch Size)设置过小;程序存在同步等待。
显存不足
可能原因:模型或批处理大小过大;存在显存泄漏(显存占用只增不减)。
GPU温度过高
总结
核心监控指标:重点关注 GPU-Util(利用率)、Memory-Usage(显存)、Temp(温度) 和 Power(功耗),它们是判断GPU工作状态和性能瓶颈的关键。
常用命令:基础状态用
nvidia-smi,详细查询用nvidia-smi -q,实时监控用nvidia-smi -l 2或watch命令。更多帮助:在终端输入
nvidia-smi -h可查看完整的命令帮助。
参考: