Surveillance de l'utilisation du processeur graphique (CUDA)

223

J'ai installé la boîte à outils CUDA sur mon ordinateur et lancé le projet BOINC sur GPU. Dans BOINC, je vois qu’il fonctionne sur un processeur graphique, mais existe-t-il un outil qui puisse me montrer plus de détails sur ce qui s’exécute sur GPU - Utilisation du processeur graphique et de la mémoire?

pbm
la source

Réponses:

251

Pour les GPU Nvidia, il existe un outil nvidia-smiqui peut afficher l'utilisation de la mémoire, l'utilisation du GPU et la température du GPU. Il existe également une liste de processus de calcul et quelques options supplémentaires, mais ma carte graphique (GeForce 9600 GT) n'est pas entièrement prise en charge.

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
la source
1
Ma puce ION ne montre pas l'utilisation, non plus. : /
Raphael
123
watch -n 0.5 nvidia-smi, gardera la sortie à jour sans remplir votre terminal de sortie.
Bar
31
@Bar Bon pourboire. watch -d -n 0.5 nvidia-smisera encore mieux.
mardi
3
@zeekvfu Je pense qu'il vaudrait mieux expliquer ce que fait le -ddrapeau
donlucacorleone 10/10
5
@donlucacorleone man watchnous indique que le -ddrapeau met en évidence les différences entre les sorties, ce qui peut aider à mettre en évidence les métriques qui changent avec le temps.
David Kaczynski
71

Pour linux, use nvidia-smi -l 1vous donnera continuellement les informations d'utilisation de gpu, avec un intervalle d'actualisation de 1 seconde.

qed
la source
74
Je préfère utiliser watch -n 1 nvidia-smipour obtenir des mises à jour continues sans remplir le terminal de sortie
ali_m
1
Utiliser watch signifie que vous démarrez un nouveau processus toutes les secondes pour scruter les cartes. Mieux vaut faire -l, et pas toutes les secondes, je recommanderais toutes les minutes ou toutes les 5 minutes.
Mick T
55

Pour les processeurs graphiques Intel, il existe le projet intel-gpu-toolsfrom http://intellinuxgraphics.org/ , qui apporte la commande intel_gpu_top(entre autres). Il est similaire à topet htop, mais spécifiquement pour le processeur graphique 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
la source
35

nvidia-smine fonctionne pas sur certaines machines Linux (retourne N / A pour de nombreuses propriétés). Vous pouvez utiliser à la nvidia-settingsplace (c’est aussi ce que mat kelcey a utilisé dans son script python).

nvidia-settings -q GPUUtilization -q useddedicatedgpumemory

Vous pouvez aussi utiliser:

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

pour la surveillance continue.

Jonathan
la source
4
Content que ce ne soit pas un commentaire. C'est exactement ce que je cherchais quand je suis tombé sur cette question.
Score_Under
Merci, c’est ce qui a fonctionné pour moi, car j’ai une carte GeForce qui n’est pas supportée par nvidia-smi.
alexg
4
Vous pouvez faire nvidia-settings -q allpour voir quels autres paramètres vous pouvez surveiller. Je surveille GPUCurrentProcessorClockFreqset GPUCurrentClockFreqs.
alexg
1
Merci mec, bonne idée de tout interroger, car chaque carte peut avoir différentes chaînes à surveiller!
Ruoho ruotsi
Si vous voulez juste le numéro et rien d’autre (par exemple, pour conky), utilisez ceci:nvidia-settings -q [gpu:0]/UsedDedicatedGPUMemory -t
hLk
16

Pour Linux, j'utilise cet outil comme HTOP que j'ai écrit moi-même. Il surveille et donne une vue d'ensemble de la température du GPU ainsi que de l'utilisation du bus central / VRAM / PCI-E et de la mémoire. Cependant, il ne surveille pas ce qui tourne sur le GPU.

Gmonitor

entrez la description de l'image ici

Mountassir El Hafi
la source
1
nvidia-settingsnécessite un X11 en cours d'exécution, ce qui n'est pas toujours le cas.
Victor Sergienko
travaille pour moi sans tracas!
Hennadii Madan
15

Pour être complet, AMD propose deux options:

  1. fglrx (pilotes de source fermés).

    $ aticonfig --odgc --odgt
    
  2. mesa (pilotes open source), vous pouvez utiliser RadeonTop .

    Affichez votre utilisation du processeur graphique, à la fois pour le pourcentage d'activité totale et pour les blocs individuels.

kevinf
la source
13

J'ai une carte vidéo GeForce 1060 GTX et j'ai constaté que la commande suivante me donnait des informations sur l'utilisation de la carte, la température, la vitesse du ventilateur et la consommation électrique:

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

Vous pouvez voir la liste de toutes les options de requête avec:

$ nvidia-smi --help-query-gpu
lyubomir
la source
1
Il serait utile d’ajouter memory.usedou ( memory.free) également.
Zoltan
3

Pour OS X

Y compris le lion de montagne

Menus iStat

Lion de montagne exclu

au moniteur

AtMonitor 2.7.1 est la dernière version d’atMonitor à prendre en charge les fonctionnalités liées au GPU.

- et le lien vers 2.7.1 délivre 2.7b.

Pour la version plus récente de l'application, atMonitor - FAQ explique:

Pour rendre atMonitor compatible avec MacOS 10.8, nous avons supprimé toutes les fonctionnalités liées au GPU.

J'ai expérimenté avec 2.7b aka 2.7.1 sur Mountain Lion avec un MacBookPro5,2 avec NVIDIA GeForce 9600M GT. L'application a fonctionné pendant quelques secondes avant de quitter, elle a montré la température mais pas l'utilisation:

                                                  capture d'écran de atMonitor 2.7b sur Mountain Lion

Graham Perrin
la source
3

J'ai eu des processus se terminer (probablement tué ou s'est écrasé) et continuer à utiliser des ressources, mais ne sont pas répertoriés dans nvidia-smi. Habituellement, ces processus ne prenaient que de la mémoire gpu.

Si vous pensez qu'un processus utilisant des ressources sur un processeur graphique ne s'affiche pas nvidia-smi, vous pouvez essayer d'exécuter cette commande pour vérifier. Il vous montrera quels processus utilisent vos GPU.

sudo fuser -v /dev/nvidia*

Cela fonctionne sur les distributions EL7, Ubuntu ou autres. Leurs périphériques nvidia peuvent être répertoriés sous un autre nom / emplacement.

Rick Smith
la source
2

pour nvidia sur linux, j’utilise le script python suivant, qui utilise un délai facultatif et se répète comme iostat et 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
la source
1

La fonction suivante ajoute des informations telles que le PID, le nom d'utilisateur, l'utilisation du processeur, la mémoire, l'utilisation de la mémoire du GPU, les arguments du programme et le temps d'exécution des processus en cours d'exécution sur le GPU, à la sortie de 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
}

Exemple de sortie:

$ 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
la source
Attention, je ne pense pas que le pmem donné par ps prenne en compte la mémoire totale du GPU mais celle du processeur car ps ne connaît pas le "GPU Nvidia"
SebMa
0

Ce script est plus lisible et est conçu pour des mods et des extensions faciles.

Vous pouvez remplacer gnome-terminal par votre programme de fenêtre de terminal préféré.


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

#

Licence: GNU GPLv2, TranSeed Research

Douglas Daseeco
la source
0

Vous pouvez utiliser

nvidia-smi pmon -i 0

pour surveiller chaque processus dans le GPU 0. y compris le mode informatique / graphique, l'utilisation de sm, l'utilisation de la mémoire, l'utilisation du codeur, l'utilisation du décodeur.

changqi.xia
la source
0

Je ne l'ai pas vu dans les réponses disponibles (sauf peut-être dans un commentaire), alors j'ai pensé ajouter que vous pouvez obtenir un rafraîchissement plus agréable nvidia-smiavec watch. Cela actualise l'écran avec chaque mise à jour plutôt que de faire défiler constamment.

watch -n 1 nvidia-smi

pendant une seconde d'intervalle mises à jour. Remplacez le 1par ce que vous voulez, y compris les fractions de secondes:

watch -n 5 nvidia-smi
watch -n 0.1 nvidia-smi
Engineero
la source