Моніторинг використання GPU (CUDA)


223

Я встановив на своєму комп’ютері інструментарій CUDA і запустив проект BOINC в GPU. У BOINC я бачу, що він працює на графічному процесорі, але чи є інструмент, який може показати мені більше детальних відомостей про те, що працює на GPU - використання GPU та використання пам'яті?

Відповіді:


251

Для графічних процесорів Nvidia існує інструмент, nvidia-smiякий може відображати використання пам'яті, використання GPU та температуру GPU. Також є список обчислювальних процесів та ще кілька варіантів, але моя графічна карта (GeForce 9600 GT) не підтримується повністю.

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
Мій чіп ION також не показує використання. : /
Рафаель

123
watch -n 0.5 nvidia-smi, буде оновлювати вихід, не заповнюючи свій термінал виведенням.
Бар

31
@Bar Хороший підказок. watch -d -n 0.5 nvidia-smiбуде ще краще.
zeekvfu

3
@zeekvfu Я думаю, що було б краще пояснити, що робить -dпрапор
donlucacorleone

5
@donlucacorleone man watchповідомляє нам, що -dпрапор підкреслює відмінності між результатами, тому він може допомогти підкреслити, які показники змінюються з часом.
Давид Качинський

71

Для Linux, використання nvidia-smi -l 1постійно надаватиме вам інформацію про використання gpu, з інтервалом оновлення 1 секунда.


74
Я вважаю за краще використовувати watch -n 1 nvidia-smiбезперервні оновлення без заповнення терміналу виведенням
ali_m

1
Використання годинника означає, що ви починаєте новий процес щосекунди для опитування карт. Краще робити -l, а не кожну секунду, я б пропоную кожну хвилину чи кожні 5 хвилин.
Мік Т


55

Для Intel GPU, існує intel-gpu-toolsвід http://intellinuxgraphics.org/ проект, який приносить команду intel_gpu_top(крім усього іншого). Він схожий на topі htop, але спеціально для 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-smiне працює на деяких машинах Linux (повертає N / A для багатьох властивостей). Ви можете використовувати nvidia-settingsзамість цього (це також те, що килимок Келсі використовував у своєму сценарії python).

nvidia-settings -q GPUUtilization -q useddedicatedgpumemory

Ви також можете використовувати:

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

для постійного моніторингу.


4
Радий, що це не коментар. Це саме те, що я шукав, коли натрапив на це питання.
Score_Under

Дякую, саме це працювало для мене, оскільки у мене є карта GeForce, яка не підтримується nvidia-smi.
алекс

4
Ви можете зробити, nvidia-settings -q allщоб побачити, які ще параметри ви можете контролювати. Я стежу GPUCurrentProcessorClockFreqsі GPUCurrentClockFreqs.
alexg

1
Дякую людині, хороша ідея запитати всіх, оскільки кожна картка може мати різні рядки для моніторингу!
ruoho ruotsi

Якщо ви просто хочете номер та нічого іншого (наприклад, для conky), скористайтеся цим:nvidia-settings -q [gpu:0]/UsedDedicatedGPUMemory -t
hLk

16

Для Linux я використовую цей інструмент, схожий на HTOP, який я написав сам. Він контролює та дає огляд температури GPU, а також використання основної / VRAM / PCI-E та використання шини пам'яті. Він не контролює, що працює на графічному процесорі.

гмонітор

введіть тут опис зображення


1
nvidia-settingsвимагає запущеного X11, що не завжди так.
Віктор Сергієнко

працює для мене без клопоту!
Геннадій Мадан

15

Для повноти AMD має два варіанти:

  1. fglrx (драйвери із закритим джерелом).

    $ aticonfig --odgc --odgt
    
  2. mesa (драйвери з відкритим кодом), ви можете використовувати RadeonTop .

    Переглядайте використання GPU як на загальний відсоток активності, так і на окремі блоки.


13

У мене є відеокарта GeForce 1060 GTX, і я виявив, що наступна команда дає мені інформацію про використання карти, температуру, швидкість вентилятора та енергоспоживання:

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

Ви можете переглянути список усіх варіантів запитів за допомогою:

$ nvidia-smi --help-query-gpu

1
Варто також додати memory.usedабо ( memory.free).
Золтан

3

Для ОС X

У тому числі гірський лев

Меню iStat

За винятком гірського лева

atMonitor

Остання версія atMonitor для підтримки функцій, пов'язаних з графічним процесором, - atMonitor 2.7.1.

- і посилання на 2.7.1 забезпечує 2.7b.

Для новітньої версії програми, atMonitor - FAQ пояснює:

Щоб зробити AtMonitor сумісним з MacOS 10.8, ми видалили всі пов'язані з графічним процесором функції.

Я експериментував з 2.7b aka 2.7.1 на Mountain Lion з MacBookPro5,2 з ​​NVIDIA GeForce 9600M GT. Додаток працював кілька секунд перед тим, як вийти, він показав температуру, але не використовував:

                                                  скріншот atMonitor 2.7b на Mountain Lion


3

У мене були припинені процеси (ймовірно, вбиті чи розбиті) та продовжують використовувати ресурси, але не були зазначені в nvidia-smi. Зазвичай ці процеси просто займають пам'ять gpu.

Якщо ви думаєте, що у вас є процес, що використовує ресурси на графічному процесорі, і він не відображається nvidia-smi, ви можете спробувати виконати цю команду для подвійної перевірки. Він покаже вам, які процеси використовують ваші графічні процесори.

sudo fuser -v /dev/nvidia*

Це працює на EL7, Ubuntu або інших дистрибутивах, можливо, їх пристрої nvidia перераховані під іншим іменем / місцеположенням.



2

для nvidia на Linux я використовую наступний скрипт python, який використовує додаткову затримку та повтор, як iostat та 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

Наступна функція додає інформацію, таку як PID, ім'я користувача, використання процесора, використання пам'яті, використання пам'яті GPU, аргументи програми та час виконання процесів, які виконуються на GPU, до виводу 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
}

Приклад виводу:

$ 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

Дбайливо, я не думаю, що pmem, що надається ps, враховує загальну пам'ять GPU, але пам'ять процесора, оскільки ps не знає "Nvidia GPU"
SebMa,

0

Цей сценарій є більш читабельним і розроблений для легких мод та розширень.

Ви можете замінити gnome-термінал улюбленою віконною програмою терміналу.


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

#

Ліцензія: GNU GPLv2, TranSeed Research


0

Можна використовувати

nvidia-smi pmon -i 0

контролювати кожен процес в GPU 0. включаючи обчислювальний / графічний режим, використання sm, використання пам'яті, використання кодера, використання декодера.


0

Я не бачив його в доступних відповідей ( за винятком , може бути , в коментарі), так що я хотів би додати , що ви можете отримати більш приємний освіжаючий nvidia-smiз watch. Це оновлює екран з кожним оновленням, а не постійно прокручує.

watch -n 1 nvidia-smi

оновлення інтервалу на одну секунду. Замініть на 1все, що завгодно, включаючи дробові секунди:

watch -n 5 nvidia-smi
watch -n 0.1 nvidia-smi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.