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?

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                                                 |
+-----------------------------------------------------------------------------+

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ę.


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%:                      

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.


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


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.


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

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


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ą.



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}


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

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


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.