具有监控GPU使用情况和更改GPU状态的功能,是一个跨平台工具,支持所有标准的NVIDIA驱动程序支持的Linux和WindowsServer 2008 R2 开始的64位系统。这个工具是N卡驱动附带的,只要装好驱动,就会有这个命令
直接输入nvidia-smi显示GPU当前状态
- **GPU:**本机中的GPU编号(有多块显卡的时候,从0开始编号)图上GPU的编号是:0
- **Fan:**风扇转速(0%-100%),N/A表示没有风扇
- **Name:**GPU类型,图上GPU的类型是:NVIDIA GeForce 3090 一般显示不全的话 用
nvidia-smi -L - **Temp:**GPU的温度(GPU温度过高会导致GPU的频率下降)
- **Perf:**GPU的性能状态,从P0(最大性能)到P12(最小性能),图上是:P8
- **Persistence-M:**持续模式的状态,持续模式虽然耗能大,但是在新的GPU应用启动时花费的时间更少,图上显示的是:off
- **Pwr:Usager/Cap:**能耗表示,Usage:用了多少,Cap总共多少
- **Bus-Id:**GPU总线相关显示,domain:bus:device.function
- **Disp.A:**Display Active ,表示GPU的显示是否初始化
- **Memory-Usage:**显存使用率
- **Volatile GPU-Util:**GPU使用率
- **Uncorr. ECC:**关于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`
#echo "starttime is $timeStart"
#echo "endtiem is $timeEnd"
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