Risposte:
Per le GPU Nvidia esiste uno strumento in nvidia-smi
grado 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 |
+-----------------------------------------------------------------------------+
watch -n 0.5 nvidia-smi
, manterrà aggiornato l'output senza riempire il tuo terminale di output.
watch -d -n 0.5 nvidia-smi
sarà ancora meglio.
-d
bandiera
man watch
ci dice che la -d
bandiera evidenzia le differenze tra le uscite, quindi può aiutare a evidenziare quali metriche cambiano nel tempo.
Per Linux, use nvidia-smi -l 1
ti fornirà continuamente le informazioni sull'utilizzo della gpu, con un intervallo di aggiornamento di 1 secondo.
watch -n 1 nvidia-smi
per ottenere aggiornamenti continui senza riempire il terminale di output
Recentemente ho scritto una semplice utility da riga di comando chiamata gpustat
(che è un wrapper di nvidia-smi
): dai un'occhiata a https://github.com/wookayin/gpustat .
Per Intel GPU esiste la intel-gpu-tools
da http://intellinuxgraphics.org/ progetto, che porta il comando intel_gpu_top
(tra le altre cose). È simile top
e 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%:
nvidia-smi
non funziona su alcune macchine linux (restituisce N / A per molte proprietà). Puoi nvidia-settings
invece 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.
nvidia-settings -q all
per vedere quali altri parametri puoi monitorare. Sto monitorando GPUCurrentProcessorClockFreqs
e GPUCurrentClockFreqs
.
nvidia-settings -q [gpu:0]/UsedDedicatedGPUMemory -t
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.
nvidia-settings
richiede un X11 in esecuzione, che non è sempre il caso.
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
memory.used
( memory.free
).
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:
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.
Glances ha un plugin che mostra l'utilizzo della GPU e l'uso della memoria.
http://glances.readthedocs.io/en/stable/aoa/gpu.html
Utilizza la libreria nvidia-ml-py3: https://pypi.python.org/pypi/nvidia-ml-py3
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}
È possibile utilizzare nvtop
, è simile a htop
ma per le GPU NVIDIA. Link: https://github.com/Syllo/nvtop
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
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
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.
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-smi
con watch
. Questo aggiorna lo schermo ad ogni aggiornamento anziché scorrere costantemente.
watch -n 1 nvidia-smi
per aggiornamenti a intervalli di un secondo. Sostituisci 1
con quello che vuoi, compresi i secondi frazionari:
watch -n 5 nvidia-smi
watch -n 0.1 nvidia-smi