nvidia-smi(简称NVSMI)是NVIDIA提供的一个跨平台工具,用于监控GPU使用情况、修改GPU状态以及管理如MIG等高级功能。它随NVIDIA驱动程序一同安装,是进行GPU运维/DevOps和性能调优的必备工具。
一、查看GPU概要信息状态
执行以下命令可查看所有GPU的当前概要信息:
$ nvidia-smi
输出示例如下:
Fri Dec5 07:41:24 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.148.08 Driver Version: 570.148.08 CUDA Version: 12.8 |
|-----------------------------------------+------------------------+----------------------+
| 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 H20-3e On | 00000000:10:00.0 Off | 0 |
| N/A 31C P0 113W / 500W | 140917MiB / 143771MiB | 0% Default |
| | | Disabled |
+-----------------------------------------+------------------------+----------------------+
...
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 945408 C /usr/bin/python3 140908MiB |
| 1 N/A N/A 945409 C /usr/bin/python3 141000MiB |
...
常用指标说明:
- Fan: 风扇转速(0%--100%),N/A表示没有风扇。
- Temp: GPU温度(温度过高会导致GPU频率下降)。
- Perf: 性能状态,从P0(最大性能)到P12(最小性能)。
- Pwr: GPU功耗。
- Persistence-M: 持续模式状态。持续模式耗能大,但在启动新的GPU应用时耗时更少。
- Bus-Id: GPU总线地址,格式为
domain:bus:device.function。
- Disp.A: Display Active,表示GPU的显示是否已初始化。
- Memory-Usage: 显存使用率。
- Volatile GPU-Util: 实时GPU使用率。
- ECC: 是否开启错误检查和纠正技术,
0/DISABLED, 1/ENABLED。
- Compute M.: 计算模式,
0/DEFAULT, 1/EXCLUSIVE_PROCESS, 2/PROHIBITED。
- MIG M.: MIG模式状态,
Enabled 或 Disabled。
二、查询GPU详细信息
nvidia-smi 支持多种查询选项,以获取更详细的GPU信息。
-
查看所有GPU的详细信息
$ nvidia-smi -q
-
查看指定GPU(如0号卡)的详细信息
$ nvidia-smi -q -i 0
-
将查询信息输出到文件
$ nvidia-smi -q -f gpu_info.txt
$ cat gpu_info.txt
-
以XML格式输出信息
$ nvidia-smi -q -x
-
指定查询信息类别
使用 -d 参数指定类别,可选值包括 MEMORY, UTILIZATION, ECC, TEMPERATURE, POWER, CLOCK, COMPUTE, PIDS, PERFORMANCE, SUPPORTED_CLOCKS, PAGE_RETIREMENT, ACCOUNTING。
# 示例:查看0号卡的ECC详情
$ nvidia-smi -i 0 -q -d ECC
-
动态刷新信息
使用 -l 参数指定刷新间隔(秒),按 Ctrl+C 停止。
# 示例:查看6号卡详细信息,每隔5秒刷新一次
$ nvidia-smi -i 6 -q -l 5
-
自定义查询属性并格式化输出
使用 --query-gpu 和 --format 参数灵活获取所需字段。
$ nvidia-smi --query-gpu=gpu_name,gpu_bus_id,vbios_version --format=csv
name, pci.bus_id, vbios_version
NVIDIA H20-3e, 00000000:10:00.0, 96.00.C3.00.02
...
-
使用管道命令过滤关键信息
# 过滤出所有GPU的序列号和UUID
$ nvidia-smi -q | egrep -i “seria|uuid”
三、查看GPU ID与UUID
此命令列出所有GPU的索引、名称及其唯一标识符(UUID),在指定设备时非常有用。
$ nvidia-smi -L
GPU 0: NVIDIA H20-3e (UUID: GPU-bc6059f0-5e92-c3b0-c304-xxx)
GPU 1: NVIDIA H20-3e (UUID: GPU-1f63ffb0-900b-d9e1-9afe-xxx)
...
四、MIG(多实例GPU)管理
MIG(Multi-Instance GPU)是NVIDIA的一项GPU虚拟化技术,允许将一块物理GPU划分为多个独立的GPU实例,分配给不同的虚拟机、容器或用户,从而提高GPU资源的利用率和多租户支持能力。此技术通常需要特定硬件(如支持MIG的GPU型号)和软件支持,无需额外许可证但可能需要NVLINK等硬件。
MIG的基本操作流程为:启用MIG -> 创建GPU实例(GI) -> 创建计算实例(CI) -> (使用后)删除CI -> 删除GI -> 禁用MIG。
-
查看MIG状态
通过 nvidia-smi -i <gpu_id> 命令查看 “MIG M.” 项,判断MIG是否已开启(Enabled/Disabled)。
$ nvidia-smi -i 7
-
开启/关闭指定GPU的MIG
# 开启7号卡的MIG
$ nvidia-smi -i 7 -mig 1
# 关闭7号卡的MIG(将销毁所有现有MIG实例)
$ nvidia-smi -i 7 -mig 0
注意:若开启时遇到“pending”状态,可能原因及解决方法包括:
- GPU正被程序使用:终止相关进程。
- Docker容器挂载了该GPU:停止运行的容器。
- 系统服务占用:尝试
systemctl stop nvsm 或 systemctl stop dcgm。
- 重置GPU:执行
nvidia-smi --gpu-reset(谨慎使用)。
-
查看可创建的GPU实例(GI)配置
$ nvidia-smi mig -i 7 -lgip
输出显示不同配置的GI类型(ID)、可创建数量(Free/Total)、内存大小和算力(SM)等信息。
-
创建GPU实例(GI)
# 在7号卡上创建一个ID为9(例如MIG 3g.71gb)的GI实例
$ nvidia-smi mig -i 7 -cgi 9
# 查看已创建的GI
$ nvidia-smi mig -i 7 -lgi
仅创建GI后,通过 nvidia-smi -i 7 查看会显示“No MIG devices found”,因为还需要创建计算实例(CI)。
-
查看并创建计算实例(CI)
# 查看指定GI(如ID 1)支持的CI配置
$ nvidia-smi mig -i 7 -lcip -gi 1
# 在7号卡的GI 1上,创建ID为0和1的CI实例
$ nvidia-smi mig -i 7 -cci 0,1 -gi 1
创建成功后,执行 nvidia-smi -L 可看到类似 MIG 1c.3g.40gb Device 0 的子设备及其UUID。
-
一键创建GI及对应的CI
# 创建GI(ID 5)并自动创建其全算力CI
$ nvidia-smi mig -i 7 -cgi 5 -C
-
删除MIG实例
MIG支持灵活删除,可单独删除CI或GI。
# 删除7号卡上GI 1的所有CI
$ nvidia-smi mig -i 7 -dci -gi 1
# 删除7号卡上的GI 1
$ nvidia-smi mig -i 7 -dgi -gi 1
# 删除7号卡上GI 2的特定CI 1
$ nvidia-smi mig -i 7 -dci -ci 1 -gi 2
五、设备状态修改
以下命令用于修改GPU的运行时状态(通常需要管理员权限):
- 设置持久模式:
$ nvidia-smi -pm 0/1 (0/DISABLED, 1/ENABLED)
- 切换ECC支持:
$ nvidia-smi -e 0/1 (0/DISABLED, 1/ENABLED)
- 重置ECC错误计数:
$ nvidia-smi -p 0/1 (0/VOLATILE, 1/AGGREGATE)
- 设置计算模式:
$ nvidia-smi -c (0/DEFAULT,1/EXCLUSIVE_PROCESS,2/PROHIBITED)
- GPU复位:
$ nvidia-smi -r
- 设置GPU工作频率:
$ nvidia-smi -ac <图形时钟,内存时钟>
- 重置GPU工作频率:
$ nvidia-smi -rac
- 设置最大功耗限制:
$ nvidia-smi -pl <瓦特数>
六、实时监控数据输出
6.1 设备监控 (dmon)
以滚动格式实时监控所有GPU的设备级指标。
# 监控所有GPU(默认指标 pwr, utilization, clock)
$ nvidia-smi dmon
# 指定监控0号GPU,每秒刷新,共采样5次
$ nvidia-smi dmon -i 0 -d 1 -c 5
# 指定监控指标:功耗温度(p)、使用率(u)、时钟(c)、显存(m)
$ nvidia-smi dmon -s pucm
# 输出到文件
$ nvidia-smi dmon -f monitor.log
6.2 进程监控 (pmon)
以滚动格式实时监控占用GPU的进程信息,对于人工智能训练任务调试非常有用。
# 监控所有GPU上的进程
$ nvidia-smi pmon
# 指定监控1号GPU,每2秒刷新一次
$ nvidia-smi pmon -i 1 -d 2
# 指定监控指标:使用率(u)、显存(m)
$ nvidia-smi pmon -s um
# 输出到文件
$ nvidia-smi pmon -f process_monitor.log
|