- 基於 NVIDIA Management Library (NVIDIA 管理庫),實現 NVIDIA GPU 設備的管理和監控功能
- 主要支持 Tesla, GRID, Quadro 以及 TitanX 的產品,有限支持其餘的 GPU 產品
因此咱們在常見的 NVIDIAGPU 產品上安裝完驅動後,都同時安裝上 nvidia-smi 管理工具,幫助管理人員經過命令行的方式對 GPU 進行監控和管理。
當咱們成功部署了 GRID 軟件之後,咱們能夠經過如下 nvidia-smi 命令實現對 GPU 的管理。
nvidia-smi 會隨着 GRID 軟件不斷的升級,而功能不斷的豐富,因此當咱們在執行一些複雜的 nvidia-smi 命令時,可能早期的 GRID 版本沒法支持這些命令。
如下 nvidia-smi 經常使用命令行是我的推薦瞭解的:
nvidia-smi
這是服務器上特斯拉 K80 的信息。
上面的表格中:
第一欄的 Fan:N/A 是風扇轉速,從 0 到 100% 之間變更,這個速度是計算機指望的風扇轉速,實際狀況下若是風扇堵轉,可能打不到顯示的轉速。有的設備不會返回轉速,由於它不依賴風扇冷卻而是經過其餘外設保持低溫(好比咱們實驗室的服務器是常年放在空調房間裏的)。
第二欄的 Temp:是溫度,單位攝氏度。
第三欄的 Perf:是性能狀態,從 P0 到 P12,P0 表示最大性能,P12 表示狀態最小性能。
第四欄下方的 Pwr:是能耗,上方的 Persistence-M:是持續模式的狀態,持續模式雖然耗能大,可是在新的 GPU 應用啓動時,花費的時間更少,這裏顯示的是 off 的狀態。
第五欄的 Bus-Id 是涉及 GPU 總線的東西,domain:bus:device.function
第六欄的 Disp.A 是 Display Active,表示 GPU 的顯示是否初始化。
第五第六欄下方的 Memory Usage 是顯存使用率。
第七欄是浮動的 GPU 利用率。
第八欄上方是關於 ECC 的東西。
第八欄下方 Compute M 是計算模式。
下面一張表示每一個進程佔用的顯存使用率。java
顯存佔用和 GPU 佔用是兩個不同的東西,顯卡是由 GPU 和顯存等組成的,顯存和 GPU 的關係有點相似於內存和 CPU 的關係。windows
nvidia-smi -q
查看當前全部 GPU 的信息,也能夠經過參數 i 指定具體的 GPU。
好比 nvidia-smi-q -i 0 表明咱們查看服務器上第一塊 GPU 的信息。
經過 nvidia-smi -q 咱們能夠獲取如下有用的信息:
GPU 的 SN 號、VBIOS、PN 號等信息:服務器
能夠參考 瞭解 GPU 從 nvidia-smi 命令開始app
windows 上的使用
nvidia-smi 所在的位置爲:
C:\Program Files\NVIDIA Corporation\NVSMIdom
cmd 進入目錄輸入命令便可:工具
nvidia-smi --help-query-gpu:性能
"memory.total"
Total installed GPU memory.ui
"memory.used"
Total memory allocated by active contexts.
"memory.free"
Total free memory.
nvidia-smi --query-gpu=timestamp,memory.total,memory.free,memory.used,name,utilization.gpu,utilization.memory --format=csv -l 5
nvidia-smi --format=csv,noheader,nounits --query-gpu=timestamp,index,memory.total,memory.used,memory.free,utilization.gpu,utilization.memory -lms 500 -f smi-1-90s-instance.log
計算程序運行時間段內 平均顯存使用狀況
顯存:顯卡的存儲空間。
nvidia-smi 查看的都是顯卡的信息,裏面memory是顯存
top:
若是有多個gpu,要計算單個GPU,好比計算GPU0的利用率:
1 先導出全部的gpu的信息到 smi-1-90s-instance.log文件:
nvidia-smi --format=csv,noheader,nounits --query-gpu=timestamp,index,memory.total,memory.used,memory.free,utilization.gpu,utilization.memory -lms 500 -f smi-1-90s-instance.log
2 GPU0的所有數據,將第一個gpu的信息導出到test.log裏面
awk -F"," '{ if($2==0){print $0} } ' smi-1-90s-instance.log >> test.log
3 再cat smi-1-90s-instance.log | awk '{sum7+=$7;count++}END{print sum7/count}'
https://javawind.net/html5-apple-watch-clock-face/index.htmltop;將動態刷新的信息寫入到文件中top -d 0.5 -b|grep hello|tee -a >top.txt將動態產生的系統信息放入文件中