1、nvidia-smi介紹
nvidia-sim簡(jiǎn)稱(chēng)NVSMI拒秘,提供監(jiān)控GPU使用情況和更改GPU狀態(tài)的功能渺杉,是一個(gè)跨平臺(tái)工具,支持所有標(biāo)準(zhǔn)的NVIDIA驅(qū)動(dòng)程序支持的Linux和WindowsServer 2008 R2 開(kāi)始的64位系統(tǒng)砚偶。這個(gè)工具是N卡驅(qū)動(dòng)附帶的批销,只要裝好驅(qū)動(dòng),就會(huì)有這個(gè)命令
2染坯、nvidia-smi常用命令介紹
1)顯示GPU當(dāng)前的狀態(tài):nvidia-smi
表格參數(shù)詳解:
GPU:本機(jī)中的GPU編號(hào)(有多塊顯卡的時(shí)候均芽,從0開(kāi)始編號(hào))圖上GPU的編號(hào)是:0
Fan:風(fēng)扇轉(zhuǎn)速(0%-100%),N/A表示沒(méi)有風(fēng)扇
Name:GPU類(lèi)型单鹿,圖上GPU的類(lèi)型是:Tesla T4
Temp:GPU的溫度(GPU溫度過(guò)高會(huì)導(dǎo)致GPU的頻率下降)
Perf:GPU的性能狀態(tài)掀宋,從P0(最大性能)到P12(最小性能),圖上是:P0
Persistence-M:持續(xù)模式的狀態(tài),持續(xù)模式雖然耗能大劲妙,但是在新的GPU應(yīng)用啟動(dòng)時(shí)花費(fèi)的時(shí)間更少湃鹊,圖上顯示的是:off
Pwr:Usager/Cap:能耗表示,Usage:用了多少镣奋,Cap總共多少
Bus-Id:GPU總線相關(guān)顯示币呵,domain:bus:device.function
Disp.A:Display Active ,表示GPU的顯示是否初始化
Memory-Usage:顯存使用率
Volatile GPU-Util:GPU使用率
Uncorr. ECC:關(guān)于ECC的東西侨颈,是否開(kāi)啟錯(cuò)誤檢查和糾正技術(shù)余赢,0/disabled,1/enabled
Compute M:計(jì)算模式,0/DEFAULT,1/EXCLUSIVE_PROCESS,2/PROHIBITED
Processes:顯示每個(gè)進(jìn)程占用的顯存使用率肛搬、進(jìn)程號(hào)没佑、占用的哪個(gè)GPU
2)隔幾秒刷新一下顯存狀態(tài):nvidia-smi -l 秒數(shù)
隔兩秒刷新一下GPU的狀態(tài):nvidia-smi -l 2
3) 將監(jiān)控結(jié)果寫(xiě)入文件,并且指定寫(xiě)入文件的監(jiān)控字段
nvidia-smi -l 1 --format=csv --filename=report.csv --query-gpu=timestamp,name,index,utilization.gpu,memory.total,memory.used,power.draw
-l:隔多久記錄一次温赔,命令中寫(xiě)的是1
--format:結(jié)果記錄文件格式是csv
--filename: 結(jié)果記錄文件的名字
--query-gpu:記錄哪些數(shù)據(jù)到csv文件
timestamp:時(shí)間戳
memory.total:顯存大小
memory.total:顯存使用了多少
utilization.gpu:GPU使用率
power.draw:顯存功耗蛤奢,對(duì)應(yīng)Pwr:Usage
上面是顯存監(jiān)控中常用的幾個(gè)命令,如果還有什么參數(shù)想了解陶贼,可以通過(guò):
nvidia-smi -h 命令查看
如果想調(diào)整結(jié)果記錄文件的字段啤贩,可以通過(guò)下面的命令查看對(duì)應(yīng)的字段:
nvidia-smi --help-query-gpu
3 簡(jiǎn)易測(cè)試腳本
nvidia-smi命令會(huì)實(shí)時(shí)記錄gpu的情況,如果想讓命令停止下來(lái)拜秧,需要手動(dòng)執(zhí)行ctrl-c痹屹,或者kill掉進(jìn)程,為了便于使用枉氮,這里編寫(xiě)了一個(gè)shell腳本志衍,輸入:記錄文件名、執(zhí)行時(shí)間聊替,執(zhí)行命令即可
將下面的腳本復(fù)制到文本楼肪,然后保存,chmod 755 XXX.sh 修改腳本執(zhí)行權(quán)限惹悄,執(zhí)行即可
#!/bin/bash**
# nvidia-smi執(zhí)行時(shí)間函數(shù)
function timeout()
{
timeStart=`date +%s`
timeEnd=`date +%s`
#echo "starttime is $timeStart"
#echo "endtiem is $timeEnd"
i=$(($timeEnd - $timeStart))
timeout=$1
echo "timeout is :$timeout"
while ([ $i -ne $timeout ])
do
timeEnd=`date +%s`
i=$(($timeEnd - $timeStart))
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"