Próbuję monitorować proces, który używa cuda i MPI, czy jest jakiś sposób, aby to zrobić, coś w stylu polecenia "góra", ale monitoruje także GPU?górne polecenie dla procesorów graficznych używających CUDA
Odpowiedz
nie jestem świadomy wszystkiego, co łączy te informacje, ale można użyć narzędzia nvidia-smi
aby uzyskać dane surowe, jak tak (dzięki @jmsu za cynk na -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 %
Pobierz i zainstaluj najnowszy stabilny sterownik CUDA (4.2) z here. Na Linuksie nVidia-smi 295.41 daje dokładnie to, czego chcesz. używać 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 |
+-----------------------------------------------------------------------------+
EDIT: W najnowszych sterowników NVIDIA, to wsparcie jest ograniczone do Tesla kart.
To nie może być elegancki, ale można spróbować
while true; do sleep 2; nvidia-smi; done
Próbowałem też metodę @Edric, który działa, ale wolę oryginalny układ nvidia-smi
.
Aby uzyskać wgląd w czasie rzeczywistym na temat wykorzystywanych zasobów, wykonaj następujące czynności:
nvidia-smi -l 1
Ta pętla i wywołać widok w każdej sekundzie.
Jeśli nie chcesz zachować przeszłości ślady pętlą rozmowy w historii konsoli, można również zrobić:
watch -n0.1 nvidia-smi
Gdzie 0.1 to przedział czasu, w sekundach.
Innym użytecznym podejściem jest wykorzystanie monitoringu ps
filtrowane na procesy, które zużywają swoje GPU. I używać ten jeden dużo:
ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `lsof -n -w -t /dev/nvidia*`
To pokaże wszystkie procesy GPU nvidia wykorzystującego i kilka statystyk na ich temat. lsof ...
pobiera listę wszystkich procesów wykorzystujących procesory graficzne nvidia należące do bieżącego użytkownika, a ps -p ...
pokazuje ps
wyniki dla tych procesów. ps f
pokazuje ładne formatowanie relacji/hierarchii procesów potomnych/macierzystych, a -o
określa niestandardowe formatowanie. Ten jest podobny do robienia tylko ps u
, ale dodaje identyfikator grupy procesów i usuwa inne pola.
Jedną z zalet tego ponad nvidia-smi
jest to, że wyświetla widły procesowe, a także główne procesy wykorzystujące GPU.
Jedną wadą jest to, że ogranicza się do procesów posiadanych przez użytkownika, który wykonuje polecenie. Aby otworzyć go do wszystkich procesów posiadanych przez dowolnego użytkownika, dodam sudo
przed lsof
.
Na koniec łączę to z watch
, aby uzyskać ciągłą aktualizację.Tak, w końcu to wygląda:
watch -n 0.1 'ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `sudo lsof -n -w -t /dev/nvidia*`'
który ma wyjście jak:
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
Możesz również uzyskać PID programów obliczeniowych, które zajmują GPU wszystkich użytkowników bez 'sudo' w ten sposób:' nvidia-smi --query-compute-apps = pid --format = csv, noheader' –
Korzystanie argument "--query-obliczeniowo aplikacje ="
nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv
w celu uzyskania dalszej pomocy, plz postępuj zgodnie z
nvidia-smi --help-query-compute-app
Myślę, że jeśli dodasz -l do tego, otrzymasz aktualizację w sposób ciągły skutecznie monitorujący procesor graficzny i wykorzystanie pamięci. – jmsu
Co się stanie, jeśli po uruchomieniu GPU utilizacion po prostu wypisze N / A ?? – natorro
@Natorro Wygląda na to, że nVidia zrzuciła obsługę niektórych kart. Sprawdź ten link http://forums.nvidia.com/index.php?showtopic=205165 – jmsu