2011-11-22 45 views

回答

57

我不知道的東西,結合這些信息,但是你可以使用nvidia-smi工具,以獲得原始數據,像這樣(感謝@jmsu對-l提示):

$ nvidia-smi -q -g 0 -d UTILIZATION -l 

==============NVSMI LOG============== 

Timestamp      : Tue Nov 22 11:50:05 2011 

Driver Version     : 275.19 

Attached GPUs     : 2 

GPU 0:1:0 
    Utilization 
     Gpu      : 0 % 
     Memory     : 0 % 
+3

我想如果你添加一個-l,你就可以持續更新,有效地監控GPU和內存的利用率。 – jmsu

+6

如果我運行GPU utilizacion時只說N/A? – natorro

+3

@natorro看起來像nVidia放棄了對某些顯卡的支持。檢查此鏈接http://forums.nvidia.com/index.php?showtopic=205165 – jmsu

15

here下載並安裝最新的穩定CUDA驅動程序(4.2)。在Linux上,nVidia-smi 295.41給你正是你想要的。使用nvidia-smi

[[email protected] release]# nvidia-smi 
Wed Sep 26 23:16:16 2012  
+------------------------------------------------------+      
| NVIDIA-SMI 3.295.41 Driver Version: 295.41   |      
|-------------------------------+----------------------+----------------------+ 
| Nb. Name      | Bus Id  Disp. | Volatile ECC SB/DB | 
| Fan Temp Power Usage /Cap | Memory Usage   | GPU Util. Compute M. | 
|===============================+======================+======================| 
| 0. Tesla C2050    | 0000:05:00.0 On  |   0   0 | 
| 30% 62 C P0 N/A/N/A | 3% 70MB/2687MB | 44%  Default | 
|-------------------------------+----------------------+----------------------| 
| Compute processes:            GPU Memory | 
| GPU PID  Process name          Usage  | 
|=============================================================================| 
| 0. 7336  ./align             61MB | 
+-----------------------------------------------------------------------------+ 

編輯:在最新的NVIDIA驅動程序,這支持僅限於特斯拉卡。

2

這可能不是優雅,但你可以嘗試

while true; do sleep 2; nvidia-smi; done 

我也@Edric,其中工程嘗試過的方法,但我更喜歡的nvidia-smi原始佈局。

+5

或你可以執行'nvidia-smi -l 2'。或者爲了防止反覆輸出控制檯,'watch -n 2'nvidia-smi'' – grisaitis

+0

@grisaitis很酷的東西! – skyuuka

37

要獲得實時瞭解所使用的資源,這樣做:

nvidia-smi -l 1

這將循環,並呼籲在每一秒的看法。

如果你不想讓過去的環形通話的痕跡在控制檯歷史,你也可以這樣做:

watch -n0.1 nvidia-smi

其中0.1是時間間隔,單位爲秒。

enter image description here

6

另一個有用的監測方法是使用ps過濾上消耗你的GPU過程。我用這個很多:

ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `lsof -n -w -t /dev/nvidia*` 

這將顯示所有nvidia GPU利用進程和一些關於他們的統計資料。 lsof ...檢索使用當前用戶擁有的nvidia GPU的所有進程的列表,ps -p ...顯示這些進程的結果psps f爲子/父進程關係/層次結構顯示了很好的格式,-o指定了自定義格式。這與剛剛做ps u類似,但添加了進程組ID並刪除了一些其他字段。

nvidia-smi相比,其中一個優勢是它將顯示進程分叉以及使用GPU的主進程。

不過,它僅限於執行命令的用戶擁有的進程。爲了將其打開到任何用戶擁有的所有進程,我在lsof之前添加一個sudo

最後,我將它與watch結合起來以獲得持續更新。因此,在最後,它看起來像:

watch -n 0.1 'ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `sudo lsof -n -w -t /dev/nvidia*`' 

其中有像輸出:

Every 0.1s: ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `sudo lsof -n -w -t /dev/nvi... Mon Jun 6 14:03:20 2016 
USER  PGRP PID %CPU %MEM STARTED  TIME COMMAND 
grisait+ 27294 50934 0.0 0.1 Jun 02 00:01:40 /opt/google/chrome/chrome --type=gpu-process --channel=50877.0.2015482623 
grisait+ 27294 50941 0.0 0.0 Jun 02 00:00:00 \_ /opt/google/chrome/chrome --type=gpu-broker 
grisait+ 53596 53596 36.6 1.1 13:47:06 00:05:57 python -u process_examples.py 
grisait+ 53596 33428 6.9 0.5 14:02:09 00:00:04 \_ python -u process_examples.py 
grisait+ 53596 33773 7.5 0.5 14:02:19 00:00:04 \_ python -u process_examples.py 
grisait+ 53596 34174 5.0 0.5 14:02:30 00:00:02 \_ python -u process_examples.py 
grisait+ 28205 28205 905 1.5 13:30:39 04:56:09 python -u train.py 
grisait+ 28205 28387 5.8 0.4 13:30:49 00:01:53 \_ python -u train.py 
grisait+ 28205 28388 5.3 0.4 13:30:49 00:01:45 \_ python -u train.py 
grisait+ 28205 28389 4.5 0.4 13:30:49 00:01:29 \_ python -u train.py 
grisait+ 28205 28390 4.5 0.4 13:30:49 00:01:28 \_ python -u train.py 
grisait+ 28205 28391 4.8 0.4 13:30:49 00:01:34 \_ python -u train.py 
+1

你也可以得到計算程序的PID,佔用沒有'sudo'的所有用戶的GPU像這樣:'nvidia-smi --query-compute-apps = pid --format = csv,noheader' –

7

使用參數 「--query - 計算 - 應用=」

nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv 

如需更多幫助,請參考

nvidia-smi --help-query-compute-app