📋 核心要点
nvidia-smi是 N 卡驱动自带的跨平台工具,可监控 GPU 使用情况并更改状态- 直接输入查看当前 GPU 状态;
nvidia-smi -l N每 N 秒刷新一次 - 输出 CSV 用
--format=csv --filename=xx.csv --query-gpu=...指定监控字段 - 常用字段:
utilization.gpu(GPU 使用率)、memory.used(显存占用)、power.draw(功耗)、temperature.gpu(温度)
nvidia-smi 具有监控 GPU 使用情况和更改 GPU 状态的功能,是跨平台工具,支持所有标准 NVIDIA 驱动支持的 Linux 和 Windows Server 2008 R2 起的 64 位系统。该工具由 N 卡驱动附带,装好驱动即可使用。
直接输入 nvidia-smi 显示 GPU 当前状态

- GPU:本机 GPU 编号(多卡从 0 开始)
- Fan:风扇转速(0%–100%),N/A 表示无风扇
- Name:GPU 类型,显示不全时用
nvidia-smi -L - Temp:GPU 温度(过高会导致频率下降)
- Perf:性能状态,P0(最大)到 P12(最小)
- Persistence-M:持续模式,耗能大但新 GPU 应用启动更快
- Pwr: Usage/Cap:能耗,Usage 用了多少,Cap 总共多少
- Bus-Id:GPU 总线,格式 domain:bus:device.function
- Disp.A:Display Active,显示是否初始化
- Memory-Usage:显存使用率
- Volatile GPU-Util:GPU 使用率
- Uncorr. ECC:错误检查纠正是否开启,0/disabled,1/enabled
- Compute M:计算模式,0/DEFAULT,1/EXCLUSIVE_PROCESS,2/PROHIBITED
- Processes:各进程占用的显存、进程号、占用的 GPU
隔几秒刷新显存状态
❯Bash
nvidia-smi -l 2 # 每两秒刷新一次结果写入文件,指定监控字段
❯Bash
nvidia-smi -l 1 --format=csv --filename=report.csv \
--query-gpu=timestamp,name,index,utilization.gpu,memory.total,memory.used,power.draw
# -l 隔多久记录一次
# --format 结果文件格式
# --filename 结果文件名称
# --query-gpu 记录哪些数据到 csv
# timestamp 时间戳
# memory.total 显存大小
# memory.used 显存使用大小
# utilization.gpu GPU 使用率
# power.draw 功耗自动测试脚本
❯Bash
#!/bin/bash
# nvidia-smi 执行时间函数
function timeout()
{
time_start=`date +%s`
time_end=`date +%s`
i=$(($time_end - $time_start))
timeout=$1
echo "timeout is :$timeout"
while ([ $i -ne $timeout ]); do
time_end=`date +%s`
i=$(($time_end - $time_start))
done
}
nvidia-smi -l 1 --format=csv --filename=$1 \
--query-gpu=timestamp,name,index,utilization.gpu,memory.total,memory.used,power.draw &
echo "shell PID: $$"
echo "nvidia-smi PID: $!"
id=$!
echo $id
timeout $2
echo $id
kill -9 "$id"
# 执行方式 ./nvidia-log.sh /home/test/log.csv 120