nvidia-smi工具详解及使用示例

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-SMINVIDIA系统管理接口工具本身。
Driver Version已安装的NVIDIA驱动程序版本。运行CUDA程序需确保其与CUDA Toolkit版本兼容。
CUDA Version此驱动程序支持的最高CUDA运行时版本
GPU设备信息GPUGPU的索引编号,从0开始。在多卡系统中用于指定设备。
NameGPU的具体型号(如RTX 4090, Tesla T4)。
Persistence-M持久化模式On表示启用,GPU在无负载时也保持上电状态,可减少后续任务启动延迟,但会消耗更多待机功耗。Off表示关闭。
Bus-IdPCI总线标识符,格式为域:总线:设备.功能,用于硬件定位。
运行状态Fan风扇转速,通常以百分比显示。部分服务器GPU可能显示为N/A
TempGPU核心温度,单位摄氏度。理想范围是低于85°C。长期超过此温度可能因热保护导致性能下降(降频)。
Perf性能状态,从P0(最高)到P12(最低)。P0表示正在以最大性能运行。
Pwr:Usage/Cap功耗Usage实时功耗CapGPU设定的功耗上限(TDP),单位瓦特(W)。
显存与计算Memory-Usage显存使用量,格式为已使用量 / 总量。监视此值有助于避免因显存不足(OOM)导致程序崩溃。
GPU-UtilGPU计算核心利用率,以百分比表示。高负载任务(如模型训练)下通常较高。持续过低(如<30%)可能表示存在CPU或数据I/O瓶颈。
Compute M.计算模式Default允许多个进程共享GPU;Exclusive_Process表示独占模式,同一时间仅允许一个进程使用。
进程信息GPU该进程正在使用的GPU索引。如果进程使用了多张卡,这里会列出多张卡的ID。
GI IDGPU Instance ID(GPU实例ID)这是MIG功能在物理GPU上划分出的“GPU实例”的编号。可以将其理解为一台物理服务器中的第一层虚拟化分区
CI IDCompute Instance ID(计算实例ID)这是在一个GPU实例内部,进一步划分出的“计算实例”的编号。它是第二层虚拟化分区,直接用于运行具体的计算任务。
PID进程的系统ID。这是唯一标识,可用于后续的监控或终止操作 (kill命令)。
Type进程类型。最常见的是 C (Compute,计算进程,如CUDA程序) 和 G (Graphics,图形进程)。AI任务通常是 C
Process name进程的名称。例如 pythontorch 等,能快速定位是哪个程序。
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)并启用了该功能后,才会在进程信息中看到具体的GICI编号

常用命令与实战技巧

除了基础的 nvidia-smi,以下命令能更好地监控和管理GPU:

  • 实时监控

    • 使用 nvidia-smi -l 2 可以每2秒自动刷新一次状态

    • 使用 watch -n 1 nvidia-smi 可以实现更灵活的实时监控

  • 查询详细信息

    • 使用 nvidia-smi -q 会显示全部详细信息,内容非常全面

    • 可以配合 -d 参数指定查询类别,如 nvidia-smi -q -d TEMPERATURE,POWER 只查看温度和功耗详情

    • 使用 -i 参数指定GPU索引,如 nvidia-smi -i 0 -q 只查询0号GPU的详细信息

  • 进程管理

    • 使用 nvidia-smi -q -d PROCESSES 可以查看占用GPU的具体进程、PID及其显存使用量

进阶管理功能

nvidia-smi 还支持一些直接影响GPU运行状态的操作(通常需要管理员权限):

  • 计算模式切换sudo nvidia-smi -i <gpu_id> -c <mode> 可以切换GPU的计算模式。例如,-c 3 设置为独占进程模式

  • 设置持久化模式sudo nvidia-smi -pm 1 可以启用持久化模式,可能减少应用启动延迟

  • 设置功耗上限sudo nvidia-smi -pl <功率值(瓦)> 可以为GPU设置新的功耗上限

典型问题排查思路

当遇到性能问题时,可以按以下步骤排查:

  1. GPU利用率低

    • 现象GPU-Util 持续低于30%

    • 可能原因:CPU数据预处理成为瓶颈;批处理大小(Batch Size)设置过小;程序存在同步等待。

    • 排查:检查CPU使用率;使用 nvidia-smi -q -d PROCESSES 确认GPU上是否有任务运行

  2. 显存不足

    • 现象:程序报错“CUDA out of memory”

    • 可能原因:模型或批处理大小过大;存在显存泄漏(显存占用只增不减)。

    • 排查:使用 nvidia-smi 观察 Memory-Usage;尝试减小批处理大小;检查代码确保显存及时释放

  3. GPU温度过高

    • 现象Temp 持续超过85°C

    • 可能原因:散热风扇故障或积灰;机箱风道不畅;负载持续满载。

    • 排查:清洁散热器;改善机箱通风;确保风扇正常运转

总结

  • 核心监控指标:重点关注 GPU-Util(利用率)Memory-Usage(显存)Temp(温度) 和 Power(功耗),它们是判断GPU工作状态和性能瓶颈的关键

  • 常用命令:基础状态用 nvidia-smi,详细查询用 nvidia-smi -q,实时监控用 nvidia-smi -l 2 或 watch 命令

  • 更多帮助:在终端输入 nvidia-smi -h 可查看完整的命令帮助。


参考:


anzhihe 安志合个人博客,版权所有 丨 如未注明,均为原创 丨 转载请注明转自:https://chegva.com/6622.html | ☆★★每天进步一点点,加油!★★☆ | 

您可能还感兴趣的文章!

发表评论

电子邮件地址不会被公开。 必填项已用*标注