Monitoraggio dell'utilizzo della GPU (CUDA)


223

Ho installato il toolkit CUDA sul mio computer e ho avviato il progetto BOINC su GPU. In BOINC posso vedere che è in esecuzione su GPU, ma esiste uno strumento che può mostrarmi maggiori dettagli su ciò che è in esecuzione su GPU: utilizzo della GPU e della memoria?

Risposte:


251

Per le GPU Nvidia esiste uno strumento in nvidia-smigrado di mostrare l'utilizzo della memoria, l'utilizzo della GPU e la temperatura della GPU. C'è anche un elenco di processi di calcolo e poche altre opzioni, ma la mia scheda grafica (GeForce 9600 GT) non è completamente supportata.

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
Il mio chip ION non mostra neanche l'utilizzo. : /
Raffaello,

123
watch -n 0.5 nvidia-smi, manterrà aggiornato l'output senza riempire il tuo terminale di output.
Bar

31
@Bar Un buon consiglio. watch -d -n 0.5 nvidia-smisarà ancora meglio.
zeekvfu,

3
@zeekvfu Penso che sarebbe meglio spiegare cosa fa la -dbandiera
donlucacorleone

5
@donlucacorleone man watchci dice che la -dbandiera evidenzia le differenze tra le uscite, quindi può aiutare a evidenziare quali metriche cambiano nel tempo.
David Kaczynski,

71

Per Linux, use nvidia-smi -l 1ti fornirà continuamente le informazioni sull'utilizzo della gpu, con un intervallo di aggiornamento di 1 secondo.


74
Preferisco usare watch -n 1 nvidia-smiper ottenere aggiornamenti continui senza riempire il terminale di output
ali_m

1
L'uso di watch significa che si avvia un nuovo processo ogni secondo per eseguire il polling delle carte. Meglio fare -l, e non ogni secondo, suggerirei ogni minuto o ogni 5 minuti.
Mick T


55

Per Intel GPU esiste la intel-gpu-toolsda http://intellinuxgraphics.org/ progetto, che porta il comando intel_gpu_top(tra le altre cose). È simile tope htop, ma specificamente per la GPU 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-sminon funziona su alcune macchine linux (restituisce N / A per molte proprietà). Puoi nvidia-settingsinvece usare (questo è anche ciò che Mat Kelcey ha usato nel suo script Python).

nvidia-settings -q GPUUtilization -q useddedicatedgpumemory

Puoi anche usare:

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

per il monitoraggio continuo.


4
Sono contento che questo non sia stato un commento. È esattamente quello che stavo cercando quando mi sono imbattuto in questa domanda.
Score_Under

Grazie, questo è ciò che ha funzionato per me, dal momento che ho una scheda GeForce che non è supportata da nvidia-smi.
alexg

4
Puoi fare nvidia-settings -q allper vedere quali altri parametri puoi monitorare. Sto monitorando GPUCurrentProcessorClockFreqse GPUCurrentClockFreqs.
alexg

1
Grazie amico, buona idea interrogare tutto, dato che ogni carta può avere stringhe diverse da monitorare!
Ruoho Ruotsi,

Se vuoi solo il numero e nient'altro (es. Per conky) usa questo:nvidia-settings -q [gpu:0]/UsedDedicatedGPUMemory -t
hLk

16

Per Linux, utilizzo questo strumento simile a HTOP che ho scritto da solo. Monitora e offre una panoramica della temperatura della GPU, nonché del core / VRAM / PCI-E e dell'uso del bus di memoria. Tuttavia, non controlla ciò che è in esecuzione sulla GPU.

Gmonitor

inserisci qui la descrizione dell'immagine


1
nvidia-settingsrichiede un X11 in esecuzione, che non è sempre il caso.
Victor Sergienko,

funziona per me senza problemi!
Hennadii Madan,

15

Per completezza, AMD ha due opzioni:

  1. fglrx (driver a sorgente chiuso).

    $ aticonfig --odgc --odgt
    
  2. mesa (driver open source), è possibile utilizzare RadeonTop .

    Visualizza l'utilizzo della GPU, sia per la percentuale di attività totale sia per i singoli blocchi.


13

Ho una scheda video GeForce 1060 GTX e ho scoperto che il seguente comando mi dà informazioni su utilizzo della scheda, temperatura, velocità della ventola e consumo energetico:

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

Puoi vedere l'elenco di tutte le opzioni di query con:

$ nvidia-smi --help-query-gpu

1
Vale la pena aggiungere anche memory.used( memory.free).
Zoltan,

3

Per OS X

Compreso Mountain Lion

Menu iStat

Escluso Mountain Lion

atMonitor

L'ultima versione di atMonitor per supportare le funzionalità relative alla GPU è atMonitor 2.7.1.

- e il collegamento a 2.7.1 fornisce 2.7b.

Per la versione più recente dell'app, atMonitor - FAQ spiega:

Per rendere atMonitor compatibile con MacOS 10.8 abbiamo rimosso tutte le funzionalità relative alla GPU.

Ho sperimentato 2.7b aka 2.7.1 su Mountain Lion con un MacBookPro5,2 con NVIDIA GeForce 9600M GT. L'app ha funzionato per alcuni secondi prima di uscire, ha mostrato la temperatura ma non l'utilizzo:

                                                  screenshot di atMonitor 2.7b su Mountain Lion


3

Ho avuto processi terminati (probabilmente uccisi o arrestati in modo anomalo) e continuano a utilizzare le risorse, ma non sono stati elencati in nvidia-smi. Di solito questi processi stavano prendendo solo memoria gpu.

Se ritieni di avere un processo che utilizza risorse su una GPU e che non viene mostrato nvidia-smi, puoi provare a eseguire questo comando per ricontrollare. Ti mostrerà quali processi stanno usando le tue GPU.

sudo fuser -v /dev/nvidia*

Questo funziona su EL7, Ubuntu o altre distribuzioni potrebbero avere i loro dispositivi nvidia elencati con un altro nome / posizione.



2

per nvidia su linux uso il seguente script python che usa un ritardo opzionale e ripeto come iostat e 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

La seguente funzione aggiunge informazioni come PID, nome utente, utilizzo della CPU, utilizzo della memoria, utilizzo della memoria della GPU, argomenti del programma e tempo di esecuzione dei processi in esecuzione sulla GPU, all'output di 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
}

Esempio di output:

$ 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

Attento, non credo che il pmem dato da ps tenga conto della memoria totale della GPU ma di quella della CPU perché ps non è a conoscenza di "Nvidia GPU"
SebMa,

0

Questo script è più leggibile ed è progettato per semplici mod ed estensioni.

Puoi sostituire gnome-terminal con il tuo programma di finestra terminale preferito.


#! /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

#

Licenza: GNU GPLv2, TranSeed Research


0

Puoi usare

nvidia-smi pmon -i 0

per monitorare ogni processo nella GPU 0. inclusi modalità di calcolo / grafica, utilizzo di sm, utilizzo della memoria, utilizzo dell'encoder, utilizzo del decoder.


0

Non ho visto nelle risposte disponibili (tranne forse in un commento), così ho pensato di aggiungere che si può ottenere un rinfrescante più bello nvidia-smicon watch. Questo aggiorna lo schermo ad ogni aggiornamento anziché scorrere costantemente.

watch -n 1 nvidia-smi

per aggiornamenti a intervalli di un secondo. Sostituisci 1con quello che vuoi, compresi i secondi frazionari:

watch -n 5 nvidia-smi
watch -n 0.1 nvidia-smi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.