nvidia-smi常用指令及其参数说明

一、什么是 NVIDIA-SMI?

nvidia-smi 是 NVIDIA 的系统管理界面(System Management Interface),用于监控和管理 NVIDIA GPU 设备。它是 NVIDIA 驱动安装包的一部分,无需额外安装。

核心功能

  • 监控:实时查看 GPU 状态、温度、功耗、显存使用率、进程占用等。
  • 管理:修改 GPU 配置选项,如启用/禁用 ECC 内存、设置持久化模式、调整计算模式等。
  • 诊断:查询设备拓扑、时钟速度、支持的功能等。

支持的产品

  • 完全支持:所有 Tesla(Fermi 架构起)、Quadro(Fermi 架构起)、GRID(Kepler 架构起)、GeForce Titan(Kepler 架构起)产品。
  • 有限支持:所有 GeForce 产品(Fermi 架构起)。

二、基础信息查询命令

2.1 查看 GPU 概览信息

命令nvidia-smi
这是最常用的命令,显示所有 GPU 的实时状态摘要。

输出字段详解

字段 含义
GPU 本机中的 GPU 编号(从 0 开始)
Name GPU 型号(如 Tesla V100)
Fan 风扇转速(百分比)
Temp GPU 核心温度(摄氏度)
Perf 性能状态(P0-P12,P0 为最高性能)
Pwr:Usage/Cap 当前功耗 / 最大设计功耗
Bus-Id PCI 总线 ID(格式:domain:bus:device.function
Disp.A Display Active,显示是否初始化
Memory-Usage 显存使用情况(已用 / 总量)
Volatile GPU-Util GPU 计算单元利用率(百分比)
Uncorr. ECC 未纠正的 ECC 错误计数
Compute M. 计算模式(Default, Exclusive_Process 等)
Processes 显示占用该 GPU 的进程及其显存使用量

2.2 列出所有 GPU 设备

命令nvidia-smi -L
以简洁格式列出系统中所有 NVIDIA GPU 设备。

1
2
GPU 0: Tesla V100-SXM2-32GB (UUID: GPU-xxxxxx)
GPU 1: Tesla V100-SXM2-32GB (UUID: GPU-yyyyyy)

2.3 查看系统拓扑

命令nvidia-smi topo --matrix
显示 GPU 之间以及 GPU 与 CPU、其他 PCIe 设备(如 InfiniBand 网卡)的互连拓扑。这对于配置 GPUDirect 等高级功能至关重要。


三、高级查询与监控

3.1 查询详细 GPU 信息

命令nvidia-smi -q
显示指定 GPU(或所有 GPU)的极其详细的信息报告。可以通过 -i <gpu_id> 指定 GPU。

报告包含的主要部分

  • GPU 基本信息:产品名称、序列号、UUID、VBIOS 版本等。
  • PCI 信息:总线 ID、带宽、链路宽度等。
  • 时钟信息:图形时钟、内存时钟、SM 时钟的当前值、默认值和最大值。
  • 温度与功耗:当前温度、功耗限制、电源管理状态。
  • 显存信息:总显存、已用显存、ECC 模式、BAR1 内存使用情况。
  • ECC 错误:易失性和聚合性 ECC 错误计数。
  • 计算进程:当前正在使用 GPU 的计算进程列表。

3.2 查询时钟信息

  • 查看当前时钟nvidia-smi -q -d CLOCK
    显示 GPU 的当前图形、内存和 SM 时钟速度,以及默认和最大时钟。

  • 查看支持的时钟列表nvidia-smi -q -d SUPPORTED_CLOCKS
    列出 GPU 支持的所有可用时钟速度组合。

3.3 虚拟 GPU (vGPU) 状态查询

命令nvidia-smi vgpu
查看虚拟化环境中 vGPU 的状态信息。如果系统未启用 vGPU,会提示不支持。

动态监控 vGPU 进程nvidia-smi vgpu -p
以滚动刷新的方式循环显示虚拟桌面中应用程序对 GPU 资源的占用情况。


四、设备管理与配置

4.1 设置持久化模式

命令nvidia-smi -pm <0/1>

  • 0DISABLED:禁用持久化模式(默认)。GPU 驱动在最后一个客户端断开连接后会卸载。
  • 1ENABLED:启用持久化模式。驱动始终保持加载状态,减少后续应用启动的延迟。
    1
    2
    # 为 GPU 0 启用持久化模式
    nvidia-smi -i 0 -pm 1

4.2 配置 ECC 内存

  • 启用/禁用 ECCnvidia-smi -e <0/1>
    • 0DISABLED:禁用 ECC。
    • 1ENABLED:启用 ECC(需要重启生效)。
  • 重置 ECC 错误计数nvidia-smi -p <0/1>
    • 0VOLATILE:重置易失性错误计数。
    • 1AGGREGATE:重置聚合性错误计数。

4.3 设置计算模式

命令nvidia-smi -c <MODE>
控制 GPU 如何被计算应用程序共享。

模式值 模式名称 描述
0 DEFAULT 多个计算应用可以共享 GPU(默认)。
1 EXCLUSIVE_THREAD 已弃用。
2 PROHIBITED 禁止任何计算应用使用 GPU。
3 EXCLUSIVE_PROCESS 一个计算进程可以独占 GPU,该进程内的多个线程可共享。
1
2
# 将 GPU 0 设置为独占进程模式
nvidia-smi -i 0 -c 3

4.4 重置 GPU

命令nvidia-smi -r
在 GPU 无响应或状态异常时,尝试触发 GPU 复位。此操作可能导致正在运行的进程崩溃,请谨慎使用。


五、实用参数与监控技巧

5.1 周期性监控

  • 按秒间隔循环刷新nvidia-smi -l <秒数>
    例如 nvidia-smi -l 2 每 2 秒刷新一次显示。
  • 按毫秒间隔循环刷新nvidia-smi -lms <毫秒数>
    例如 nvidia-smi -lms 500 每 500 毫秒刷新一次。

5.2 输出到文件

使用 -f--filename 参数将输出重定向到文件,便于后续分析。

1
2
3
4
# 将详细查询结果保存到文件
nvidia-smi -q -f gpu_info.log
# 周期性监控并记录到文件
nvidia-smi -l 1 -f monitor.log

5.3 指定目标 GPU

使用 -i--id 参数对特定的 GPU 进行操作。

1
2
3
4
# 仅查看 GPU 1 的详细信息
nvidia-smi -q -i 1
# 仅监控 GPU 0 和 GPU 2
nvidia-smi -i 0,2 -l 1

5.4 以 XML 格式输出

使用 -x--xml-format 参数,便于脚本解析。

1
nvidia-smi -q -x

六、命令参数速查表

参数类别 参数 功能描述
帮助 -h, --help 打印帮助信息。
列表 -L, --list-gpus 列出所有连接的 GPU。
查询 -q, --query 查询 GPU 详细信息。
-d, --display= 选择性显示信息(如 MEMORY, CLOCK)。
目标 -i, --id= 指定目标 GPU ID(如 0, 0,2)。
输出 -f, --filename= 将输出保存到文件。
-x, --xml-format 以 XML 格式输出。
监控 -l, --loop= 按指定秒数间隔循环刷新。
-lms, --loop-ms= 按指定毫秒数间隔循环刷新。
管理 -pm, --persistence-mode= 设置持久化模式 (0/1)。
-e, --ecc-config= 启用/禁用 ECC (0/1)。
-c, --compute-mode= 设置计算模式 (0-3)。
-r, --gpu-reset 触发 GPU 复位。

七、总结与最佳实践

nvidia-smi 是管理和监控 NVIDIA GPU 不可或缺的工具。掌握其核心用法:

  1. 日常监控:使用 nvidia-sminvidia-smi -l 1 实时查看 GPU 状态。
  2. 问题诊断:使用 nvidia-smi -q 获取详细报告,分析温度、功耗、ECC 错误和进程占用。
  3. 性能调优:通过 -pm-c 等参数调整 GPU 运行模式以适应不同工作负载。
  4. 自动化脚本:利用 -f-x 参数将输出重定向或格式化为 XML,便于集成到监控系统中。

官方资源