Najlepsze narzędzie do monitorowania aktywności CUDA na GPU
Staram się monitorować proces, który używa CUDA i MPI, czy jest jakiś sposób mogę to zrobić, coś w rodzaju polecenia "top" , ale to monitoruje GPU też?
15 answers
Uważam gpustat bardzo przydatne. In może być zainstalowany za pomocą pip install gpustat
i wyświetla podział użycia według procesów lub użytkowników.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-08 18:52:31
Aby uzyskać wgląd w czasie rzeczywistym na używane zasoby, wykonaj:
nvidia-smi -l 1
Spowoduje to zapętlenie i wywołanie widoku w każdej sekundzie.
Jeśli nie chcesz zachować śladów zapętlonego połączenia w historii konsoli, możesz to zrobić:
watch -n0.1 nvidia-smi
Gdzie 0.1 jest interwałem czasu, w sekundach.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-30 06:53:26
Nie jestem świadomy niczego, co łączy te informacje, ale możesz użyć narzędzia nvidia-smi
, Aby uzyskać surowe dane, w ten sposób (dzięki @jmsu za końcówkę 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 %
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-22 11:51:54
Użyj argumentu "--query-compute-apps= "
nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv
Aby uzyskać dalszą pomoc, wykonaj
nvidia-smi --help-query-compute-app
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-28 01:03:54
Pobierz i zainstaluj najnowszy stabilny sterownik CUDA (4.2) z tutaj. W Linuksie nVidia-smi 295.41 daje dokładnie to, czego chcesz. użycie nvidia-smi
:
[root@localhost 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 sterownikach NVIDIA ta obsługa jest ograniczona do kart Tesla.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-28 10:42:18
Po prostu użyj watch nvidia-smi
, domyślnie wyświetli wiadomość w interwale 2S.
Na przykład, jak na poniższym obrazku:
Możesz również użyć watch -n 5 nvidia-smi
(- N 5 przez interwał 5s).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-29 03:29:26
Innym użytecznym podejściem do monitorowania jest użycie ps
filtrowanych na procesach, które zużywają Twoje GPU. Często używam tego:
ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `lsof -n -w -t /dev/nvidia*`
To pokaże wszystkie procesy wykorzystujące GPU nvidia i kilka statystyk na ich temat. lsof ...
pobiera listę wszystkich procesów za pomocą GPU nvidia należącego do bieżącego użytkownika, a ps -p ...
pokazuje wyniki dla tych procesów. ps f
pokazuje ładne Formatowanie dla relacji/hierarchii procesów potomnych / rodzicielskich, a -o
określa niestandardowe formatowanie. Ten jest podobnie jak po prostu robi ps u
, ale dodaje ID grupy procesów i usuwa niektóre inne pola.
Jedną z zalet tego nad nvidia-smi
jest to, że wyświetla zarówno widły procesów, jak i główne procesy, które używają GPU.
Wadą jest jednak ograniczenie do procesów należących do użytkownika, który wykonuje polecenie. Aby otworzyć go dla wszystkich procesów należących do dowolnego użytkownika, dodaję sudo
przed lsof
.
Na koniec łączę go z watch
, aby uzyskać ciągłą aktualizację. Tak więc w koniec, wygląda tak:
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 typu:
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-06 18:15:15
Możesz spróbować nvtop
, który jest podobny do powszechnie używanego narzędzia htop
, ale dla GPU NVIDIA. Oto zrzut ekranu nvtop
z tego w akcji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-09 12:46:55
To może nie jest eleganckie, ale możesz spróbować
while true; do sleep 2; nvidia-smi; done
Wypróbowałem również metodę @ Edric, która działa, ale wolę oryginalny układ nvidia-smi
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-10 00:02:40
Jeśli chcesz tylko znaleźć proces, który jest uruchomiony na gpu, możesz po prostu użyć następującego polecenia:
lsof /dev/nvidia*
Dla mnie nvidia-smi
i watch -n 1 nvidia-smi
są wystarczające w większości przypadków. Czasami nvidia-smi
nie pokazuje żadnego procesu, ale pamięć gpu jest zużyta, więc muszę użyć powyższego polecenia, aby znaleźć procesy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-07 01:17:22
Utworzyłem plik wsadowy z następującym kodem na komputerze z systemem windows, aby monitorować co sekundę. Dla mnie działa.
:loop
cls
"C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi"
timeout /T 1
goto loop
Nvidia-smi exe zazwyczaj znajduje się w "C:\Program Files\NVIDIA Corporation" jeśli chcesz uruchomić polecenie tylko raz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-14 12:28:11
W Linux Mint, a najprawdopodobniej Ubuntu, możesz spróbować "nvidia-smi --loop=1"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-27 22:58:39
Możesz użyć programu monitorującego spojrzenia z jego wtyczką GPU monitoring :
- open source
- aby zainstalować:
sudo apt-get install -y python-pip; sudo pip install glances[gpu]
- do uruchomienia:
sudo glances
Monitoruje również procesor, dysk IO, przestrzeń dyskową, Sieć i kilka innych rzeczy:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-09 20:19:08
Istnieje Prometheus GPU Metrics Exporter (PGME) , który wykorzystuje plik binarny nvidai-smi. Możesz to wypróbować. Po uruchomieniu eksportera możesz uzyskać do niego dostęp poprzez http://localhost:9101/metrics . Dla dwóch procesorów graficznych przykładowy wynik wygląda następująco:
temperature_gpu{gpu="TITAN X (Pascal)[0]"} 41
utilization_gpu{gpu="TITAN X (Pascal)[0]"} 0
utilization_memory{gpu="TITAN X (Pascal)[0]"} 0
memory_total{gpu="TITAN X (Pascal)[0]"} 12189
memory_free{gpu="TITAN X (Pascal)[0]"} 12189
memory_used{gpu="TITAN X (Pascal)[0]"} 0
temperature_gpu{gpu="TITAN X (Pascal)[1]"} 78
utilization_gpu{gpu="TITAN X (Pascal)[1]"} 95
utilization_memory{gpu="TITAN X (Pascal)[1]"} 59
memory_total{gpu="TITAN X (Pascal)[1]"} 12189
memory_free{gpu="TITAN X (Pascal)[1]"} 1738
memory_used{gpu="TITAN X (Pascal)[1]"} 10451
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-12 18:11:56
Możesz użyć nvidia-smi pmon -i 0
do monitorowania każdego procesu w GPU 0.
w tym tryb obliczeniowy, użycie sm, użycie pamięci, użycie enkodera, użycie dekodera.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-17 07:24:43