Мониторинг использования графического процессора (CUDA)

223

Я установил инструментарий CUDA на свой компьютер и запустил проект BOINC на GPU. В BOINC я вижу, что он работает на GPU, но есть ли инструмент, который может показать мне больше подробностей о том, что работает на GPU - использование GPU и памяти?

постоянный репер
источник

Ответы:

251

Для графических процессоров Nvidia есть инструмент, nvidia-smiкоторый может отображать использование памяти, использование графического процессора и температуру графического процессора. Также есть список вычислительных процессов и еще несколько опций, но моя графическая карта (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
@ Бар Хороший совет. 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 секунды.

QED
источник
74
Я предпочитаю использовать watch -n 1 nvidia-smiдля получения постоянных обновлений без заполнения терминала выводом
ali_m
1
Использование часов означает, что вы начинаете новый процесс каждую секунду для опроса карт. Лучше делать -1, а не каждую секунду, я бы советовал каждую минуту или каждые 5 минут.
Мик Т
63

Недавно я написал простую утилиту командной строки под названием gpustat(которая является оберткой nvidia-smi): пожалуйста, взгляните на https://github.com/wookayin/gpustat .

Чонвук Чой
источник
55

Для графических процессоров Intel существует проект intel-gpu-toolsfrom http://intellinuxgraphics.org/ , в котором приводится команда intel_gpu_top(помимо прочего). Это похоже на topи htop, но специально для Intel GPU.

   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
источник
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.
alexg
4
Вы можете сделать, nvidia-settings -q allчтобы увидеть, какие другие параметры вы можете контролировать. Я отслеживаю GPUCurrentProcessorClockFreqsи GPUCurrentClockFreqs.
alexg
1
Спасибо человек, хорошая идея, чтобы запросить все, так как каждая карта может иметь различные строки для мониторинга!
ruoho ruotsi
Если вы просто хотите число и ничего больше (например, для conky), используйте это:nvidia-settings -q [gpu:0]/UsedDedicatedGPUMemory -t
hLk
16

Для Linux я использую этот HTOP-подобный инструмент, который я написал сам. Он отслеживает и дает представление о температуре графического процессора, а также об использовании ядра / VRAM / PCI-E и шины памяти. Это не контролирует то, что работает на GPU, хотя.

gmonitor

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

Mountassir El Hafi
источник
1
nvidia-settingsтребуется работающий X11, что не всегда так.
Виктор Сергиенко
работает для меня без хлопот!
Геннадий Мадан
15

Для полноты у AMD есть два варианта:

  1. fglrx (драйверы с закрытым исходным кодом).

    $ aticonfig --odgc --odgt
    
  2. mesa (драйверы с открытым исходным кодом), вы можете использовать RadeonTop .

    Просматривайте использование своего графического процессора, как для общего процента активности, так и для отдельных блоков.

kevinf
источник
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

Для OS X

В том числе горный лев

iStat Menus

Исключая горного льва

atMonitor

Последняя версия atMonitor для поддержки функций, связанных с GPU, - atMonitor 2.7.1.

- а ссылка на 2.7.1 доставляет 2.7b.

Для более новой версии приложения atMonitor - FAQ объясняет:

Чтобы сделать AtMonitor совместимым с MacOS 10.8, мы удалили все функции, связанные с GPU.

Я экспериментировал с 2.7b или 2.7.1 на Mountain Lion с MacBookPro5,2 с NVIDIA GeForce 9600M GT. Приложение работало за несколько секунд до выхода, показывало температуру, но не использовалось:

                                                  снимок экрана с монитором 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, имя пользователя, использование процессора, использование памяти, использование памяти графическим процессором, программные аргументы и время выполнения процессов, которые выполняются на графическом процессоре, к выводу 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, использование памяти, использование кодера, использование декодера.

changqi.xia
источник
0

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

watch -n 1 nvidia-smi

в течение одной секунды обновления. Замените на 1то, что вы хотите, включая доли секунды:

watch -n 5 nvidia-smi
watch -n 0.1 nvidia-smi
Engineero
источник