GPU之nvidia-smi命令詳解


https://www.jianshu.com/p/ceb3c020e06b

1、nvidia-smi介紹

nvidia-sim簡稱NVSMI,提供監控GPU使用情況和更改GPU狀態的功能,是一個跨平台工具,支持所有標准的NVIDIA驅動程序支持的Linux和WindowsServer 2008 R2 開始的64位系統。這個工具是N卡驅動附帶的,只要裝好驅動,就會有這個命令

2、nvidia-smi常用命令介紹

1)顯示GPU當前的狀態:nvidia-smi

 
image

表格參數詳解:

  • GPU:本機中的GPU編號(有多塊顯卡的時候,從0開始編號)圖上GPU的編號是:0

  • Fan:風扇轉速(0%-100%),N/A表示沒有風扇

  • Name:GPU類型,圖上GPU的類型是:Tesla T4

  • Temp:GPU的溫度(GPU溫度過高會導致GPU的頻率下降)

  • Perf:GPU的性能狀態,從P0(最大性能)到P12(最小性能),圖上是:P0

  • 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

2)隔幾秒刷新一下顯存狀態:nvidia-smi -l 秒數

隔兩秒刷新一下GPU的狀態:nvidia-smi -l 2

 
image

3) 將監控結果寫入文件,並且指定寫入文件的監控字段

nvidia-smi -l 1 --format=csv --filename=report.csv --query-gpu=timestamp,name,index,utilization.gpu,memory.total,memory.used,power.draw

 
image
  • -l:隔多久記錄一次,命令中寫的是1

  • --format:結果記錄文件格式是csv

  • --filename: 結果記錄文件的名字

  • --query-gpu:記錄哪些數據到csv文件

  • timestamp:時間戳

  • memory.total:顯存大小

  • memory.total:顯存使用了多少

  • utilization.gpu:GPU使用率

  • power.draw:顯存功耗,對應Pwr:Usage


上面是顯存監控中常用的幾個命令,如果還有什么參數想了解,可以通過:

nvidia-smi -h 命令查看

如果想調整結果記錄文件的字段,可以通過下面的命令查看對應的字段:

nvidia-smi --help-query-gpu

3 簡易測試腳本

nvidia-smi命令會實時記錄gpu的情況,如果想讓命令停止下來,需要手動執行ctrl-c,或者kill掉進程,為了便於使用,這里編寫了一個shell腳本,輸入:記錄文件名、執行時間,執行命令即可

將下面的腳本復制到文本,然后保存,chmod 755 XXX.sh 修改腳本執行權限,執行即可

 
image
#!/bin/bash** 

# nvidia-smi執行時間函數
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"
 
 
13人點贊
 
 
更多精彩內容,就在簡書APP
 
 


作者:木子的毛線
鏈接:https://www.jianshu.com/p/ceb3c020e06b
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM