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 | GPU 0: Tesla V100-SXM2-32GB (UUID: GPU-xxxxxx) |
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>
0或DISABLED:禁用持久化模式(默认)。GPU 驱动在最后一个客户端断开连接后会卸载。1或ENABLED:启用持久化模式。驱动始终保持加载状态,减少后续应用启动的延迟。1
2# 为 GPU 0 启用持久化模式
nvidia-smi -i 0 -pm 1
4.2 配置 ECC 内存
- 启用/禁用 ECC:
nvidia-smi -e <0/1>0或DISABLED:禁用 ECC。1或ENABLED:启用 ECC(需要重启生效)。
- 重置 ECC 错误计数:
nvidia-smi -p <0/1>0或VOLATILE:重置易失性错误计数。1或AGGREGATE:重置聚合性错误计数。
4.3 设置计算模式
命令:nvidia-smi -c <MODE>
控制 GPU 如何被计算应用程序共享。
| 模式值 | 模式名称 | 描述 |
|---|---|---|
0 |
DEFAULT |
多个计算应用可以共享 GPU(默认)。 |
1 |
EXCLUSIVE_THREAD |
已弃用。 |
2 |
PROHIBITED |
禁止任何计算应用使用 GPU。 |
3 |
EXCLUSIVE_PROCESS |
一个计算进程可以独占 GPU,该进程内的多个线程可共享。 |
1 | # 将 GPU 0 设置为独占进程模式 |
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 | # 将详细查询结果保存到文件 |
5.3 指定目标 GPU
使用 -i 或 --id 参数对特定的 GPU 进行操作。
1 | # 仅查看 GPU 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 不可或缺的工具。掌握其核心用法:
- 日常监控:使用
nvidia-smi或nvidia-smi -l 1实时查看 GPU 状态。 - 问题诊断:使用
nvidia-smi -q获取详细报告,分析温度、功耗、ECC 错误和进程占用。 - 性能调优:通过
-pm、-c等参数调整 GPU 运行模式以适应不同工作负载。 - 自动化脚本:利用
-f、-x参数将输出重定向或格式化为 XML,便于集成到监控系统中。
官方资源:
- NVIDIA 管理库 (NVML) 开发者网站:http://developer.nvidia.com/nvidia-management-library-nvml/
- Python 绑定 (
nvidia-ml-py):http://pypi.python.org/pypi/nvidia-ml-py/