Monitorowanie użycia GPU (CUDA)

223

Zainstalowałem zestaw narzędzi CUDA na swoim komputerze i rozpocząłem projekt BOINC na GPU. W BOINC widzę, że działa na GPU, ale czy istnieje narzędzie, które może pokazać mi więcej szczegółów na temat tego, co działa na GPU - wykorzystanie GPU i wykorzystanie pamięci?

pbm
źródło

Odpowiedzi:

251

Dla procesorów graficznych Nvidia istnieje narzędzie, nvidia-smiktóre może pokazywać użycie pamięci, wykorzystanie GPU i temperaturę GPU. Istnieje również lista procesów obliczeniowych i kilka innych opcji, ale moja karta graficzna (GeForce 9600 GT) nie jest w pełni obsługiwana.

Sun May 13 20:02:49 2012       
+------------------------------------------------------+                       
| NVIDIA-SMI 3.295.40   Driver Version: 295.40         |                       
|-------------------------------+----------------------+----------------------+
| Nb.  Name                     | Bus Id        Disp.  | Volatile ECC SB / DB |
| Fan   Temp   Power Usage /Cap | Memory Usage         | GPU Util. Compute M. |
|===============================+======================+======================|
| 0.  GeForce 9600 GT           | 0000:01:00.0  N/A    |       N/A        N/A |
|   0%   51 C  N/A   N/A /  N/A |  90%  459MB /  511MB |  N/A      Default    |
|-------------------------------+----------------------+----------------------|
| Compute processes:                                               GPU Memory |
|  GPU  PID     Process name                                       Usage      |
|=============================================================================|
|  0.           Not Supported                                                 |
+-----------------------------------------------------------------------------+
pbm
źródło
1
Mój układ ION również nie pokazuje użycia. : /
Raphael,
123
watch -n 0.5 nvidia-smi, będzie aktualizować dane wyjściowe bez wypełniania terminala danymi wyjściowymi.
Bar
31
@Bar Dobra wskazówka. watch -d -n 0.5 nvidia-smibędzie jeszcze lepiej.
zeekvfu
3
@zeekvfu Myślę, że lepiej byłoby wyjaśnić, co robi -dflaga
donlucacorleone 10.10.2018
5
@donlucacorleone man watchmówi nam, że -dflaga podkreśla różnice między wynikami, więc może pomóc w wyróżnieniu, które wskaźniki zmieniają się w czasie.
David Kaczyński
71

W przypadku Linuksa use nvidia-smi -l 1będzie stale wyświetlał informacje o użytkowaniu GPU, z interwałem odświeżania wynoszącym 1 sekundę.

co było do okazania
źródło
74
Wolę korzystać watch -n 1 nvidia-smiz ciągłych aktualizacji bez wypełniania terminala danymi wyjściowymi
ali_m
1
Korzystanie z zegarka oznacza rozpoczynanie nowego procesu co sekundę w celu odpytywania kart. Lepiej zrobić -l, a nie co sekundę, sugerowałbym co minutę lub co 5 minut.
Mick T
55

Intel GPU istnieje się intel-gpu-toolsz http://intellinuxgraphics.org/ projekt, który przynosi polecenia intel_gpu_top(między innymi). Jest podobny topi htop, ale specjalnie dla procesora graficznego Intel.

   render busy:  18%: ███▋                                   render space: 39/131072
bitstream busy:   0%:                                     bitstream space: 0/131072
  blitter busy:  28%: █████▋                                blitter space: 28/131072

          task  percent busy
           GAM:  33%: ██████▋                 vert fetch: 0 (0/sec)
          GAFS:   3%: ▋                       prim fetch: 0 (0/sec)
            VS:   0%:                      VS invocations: 559188 (150/sec)
            SF:   0%:                      GS invocations: 0 (0/sec)
            VF:   0%:                           GS prims: 0 (0/sec)
            DS:   0%:                      CL invocations: 186396 (50/sec)
            CL:   0%:                           CL prims: 186396 (50/sec)
           SOL:   0%:                      PS invocations: 8191776208 (38576436/sec)
            GS:   0%:                      PS depth pass: 8158502721 (38487525/sec)
            HS:   0%:                      
            TE:   0%:                      
          GAFM:   0%:                      
           SVG:   0%:                      
jippie
źródło
35

nvidia-sminie działa na niektórych komputerach z linuksem (zwraca N / A dla wielu właściwości). Możesz użyć nvidia-settingszamiast tego (tego też używał mat kelcey w swoim skrypcie python).

nvidia-settings -q GPUUtilization -q useddedicatedgpumemory

Możesz także użyć:

watch -n0.1 "nvidia-settings -q GPUUtilization -q useddedicatedgpumemory"

do ciągłego monitorowania.

Jonathan
źródło
4
Cieszę się, że to nie był komentarz. Właśnie tego szukałem, kiedy natknąłem się na to pytanie.
Score_Under
Dzięki, to działało dla mnie, ponieważ mam kartę GeForce, która nie jest obsługiwana przez nvidia-smi.
alexg
4
Możesz zrobić, nvidia-settings -q allaby zobaczyć, jakie inne parametry możesz monitorować. Monitoruję GPUCurrentProcessorClockFreqsi GPUCurrentClockFreqs.
alexg
1
Dzięki człowieku, dobrym pomysłem jest zapytanie wszystkich, ponieważ każda karta może mieć inne ciągi do monitorowania!
ruoho ruotsi
Jeśli chcesz tylko numer i nic więcej (np. Conky) użyj tego:nvidia-settings -q [gpu:0]/UsedDedicatedGPUMemory -t
hLk
16

W systemie Linux używam tego narzędzia HTOP, które sam napisałem. Monitoruje i podaje przegląd temperatury procesora graficznego, a także wykorzystania rdzenia / VRAM / PCI-E i magistrali pamięci. Nie monitoruje jednak działania GPU.

gmonitor

wprowadź opis zdjęcia tutaj

Mountassir El Hafi
źródło
1
nvidia-settingswymaga działającego X11, co nie zawsze tak jest.
Victor Sergienko
działa dla mnie bezproblemowo!
Hennadii Madan
15

Dla kompletności AMD ma dwie opcje:

  1. fglrx (sterowniki zamkniętego źródła).

    $ aticonfig --odgc --odgt
    
  2. mesa (sterowniki open source), możesz użyć RadeonTop .

    Wyświetl wykorzystanie GPU, zarówno dla całkowitego procentu aktywności, jak i poszczególnych bloków.

kevinf
źródło
13

Mam kartę graficzną GeForce 1060 GTX i stwierdziłem, że następujące polecenie dostarcza mi informacji o wykorzystaniu karty, temperaturze, prędkości wentylatora i zużyciu energii:

$ nvidia-smi --format=csv --query-gpu=power.draw,utilization.gpu,fan.speed,temperature.gpu

Możesz zobaczyć listę wszystkich opcji zapytań za pomocą:

$ nvidia-smi --help-query-gpu
lyubomir
źródło
1
Warto też dodać memory.usedlub ( memory.free).
Zoltan
3

Dla OS X

W tym Mountain Lion

Menu iStat

Z wyłączeniem lwa górskiego

atMonitor

Ostatnia wersja atMonitor obsługująca funkcje związane z GPU to atMonitor 2.7.1.

- a link do 2.7.1 dostarcza 2.7b.

W przypadku nowszej wersji aplikacji atMonitor - FAQ wyjaśnia:

Aby atMonitor był zgodny z MacOS 10.8, usunęliśmy wszystkie funkcje związane z GPU.

Eksperymentowałem z 2.7b aka 2.7.1 na Mountain Lion z MacBookPro5,2 z NVIDIA GeForce 9600M GT. Przed uruchomieniem aplikacja działała przez kilka sekund, pokazywała temperaturę, ale nie była używana:

                                                  zrzut ekranu atMonitor 2.7b na Mountain Lion

Graham Perrin
źródło
3

Miałem procesy zakończone (prawdopodobnie zabite lub zawieszone) i nadal używam zasobów, ale nie zostały wymienione w nvidia-smi. Zwykle procesy te zajmowały pamięć GPU.

Jeśli uważasz, że masz proces korzystający z zasobów na GPU i nie jest on pokazywany nvidia-smi, możesz spróbować uruchomić to polecenie, aby sprawdzić dwukrotnie. Pokaże Ci, które procesy wykorzystują Twoje procesory graficzne.

sudo fuser -v /dev/nvidia*

Działa to na EL7, Ubuntu lub innych dystrybucjach, a ich urządzenia nvidia mogą być wymienione pod inną nazwą / lokalizacją.

Rick Smith
źródło
2

dla nvidii na Linuksie używam następującego skryptu python, który wykorzystuje opcjonalne opóźnienie i powtarzam jak iostat i vmstat

https://gist.github.com/matpalm/9c0c7c6a6f3681a0d39d

$ gpu_stat.py 1 2
{"util":{"PCIe":"0", "memory":"10", "video":"0", "graphics":"11"}, "used_mem":"161", "time": 1424839016}
{"util":{"PCIe":"0", "memory":"10", "video":"0", "graphics":"9"}, "used_mem":"161", "time":1424839018}
mat kelcey
źródło
1

Następująca funkcja dołącza informacje, takie jak PID, nazwa użytkownika, użycie procesora, użycie pamięci, użycie pamięci GPU, argumenty programu i czas działania procesów uruchomionych na GPU, na wyjściu nvidia-smi:

function better-nvidia-smi () {
    nvidia-smi
    join -1 1 -2 3 \
        <(nvidia-smi --query-compute-apps=pid,used_memory \
                     --format=csv \
          | sed "s/ //g" | sed "s/,/ /g" \
          | awk 'NR<=1 {print toupper($0)} NR>1 {print $0}' \
          | sed "/\[NotSupported\]/d" \
          | awk 'NR<=1{print $0;next}{print $0| "sort -k1"}') \
        <(ps -a -o user,pgrp,pid,pcpu,pmem,time,command \
          | awk 'NR<=1{print $0;next}{print $0| "sort -k3"}') \
        | column -t
}

Przykładowe dane wyjściowe:

$ better-nvidia-smi
Fri Sep 29 16:52:58 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 378.13                 Driver Version: 378.13                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GT 730      Off  | 0000:01:00.0     N/A |                  N/A |
| 32%   49C    P8    N/A /  N/A |    872MiB /   976MiB |     N/A      Default |
+-------------------------------+----------------------+----------------------+
|   1  Graphics Device     Off  | 0000:06:00.0     Off |                  N/A |
| 23%   35C    P8    17W / 250W |    199MiB / 11172MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0                  Not Supported                                         |
|    1      5113    C   python                                         187MiB |
+-----------------------------------------------------------------------------+
PID   USED_GPU_MEMORY[MIB]  USER    PGRP  %CPU  %MEM   TIME      COMMAND
9178  187MiB                tmborn  9175  129   2.6    04:32:19  ../path/to/python script.py args 42
Lenar Hoyt
źródło
Ostrożnie, nie sądzę, że pmem podany przez ps bierze pod uwagę całkowitą pamięć GPU, ale procesora, ponieważ ps nie jest świadomy „GPU Nvidia”
SebMa
0

Ten skrypt jest bardziej czytelny i został zaprojektowany z myślą o łatwych modyfikacjach i rozszerzeniach.

Możesz zastąpić gnome-terminal swoim ulubionym programem okien terminala.


#! /bin/bash

if [ "$1" = "--guts" ]; then
    echo; echo "    ctrl-c to gracefully close"
    f "$a"
    f "$b"
    exit 0; fi

# easy to customize here using "nvidia-smi --help-query-gpu" as a guide
a='--query-gpu=pstate,memory.used,utilization.memory,utilization.gpu,encoder.stats.sessionCount'
b='--query-gpu=encoder.stats.averageFps,encoder.stats.averageLatency,temperature.gpu,power.draw'
p=0.5    # refresh period in seconds
s=110x9  # view port as width_in_chars x line_count

c="s/^/    /; s/, +/\t/g"
t="`echo '' |tr '\n' '\t'`"
function f() { echo; nvidia-smi --format=csv "$1" |sed -r "$c" |column -t "-s$t" "-o   "; }
export c t a b; export -f f
gnome-terminal --hide-menubar --geometry=$s -- watch -t -n$p "`readlink -f \"$0\"`" --guts

#

Licencja: GNU GPLv2, TranSeed Research

Douglas Daseeco
źródło
0

Możesz użyć

nvidia-smi pmon -i 0

do monitorowania każdego procesu w GPU 0., w tym trybu obliczeniowego / graficznego, użycia sm, zużycia pamięci, użycia enkodera, użycia dekodera.

changqi.xia
źródło
0

Nie widziałem go w dostępnych odpowiedzi (może z wyjątkiem w komentarzu), więc pomyślałem, że mogę dodać, że można uzyskać ładniejszy orzeźwiający nvidia-smiz watch. Spowoduje to odświeżenie ekranu przy każdej aktualizacji zamiast ciągłego przewijania.

watch -n 1 nvidia-smi

dla aktualizacji trwających jedną sekundę. Zamień na 1dowolne, w tym ułamkowe sekundy:

watch -n 5 nvidia-smi
watch -n 0.1 nvidia-smi
Engineero
źródło