GPU 사용량 모니터링 (CUDA)


223

컴퓨터에 CUDA 툴킷을 설치하고 GPU에서 BOINC 프로젝트를 시작했습니다. BOINC에서 GPU에서 실행되고 있음을 알 수 있지만 GPU에서 실행중인 기능에 대한 자세한 내용을 보여주는 도구가 있습니까? GPU 사용량 및 메모리 사용량?

답변:


251

Nvidia GPU에는 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 칩에도 사용량이 표시되지 않습니다. : /
Raphael

123
watch -n 0.5 nvidia-smi터미널을 출력으로 채우지 않고 출력을 업데이트 된 상태로 유지합니다.
Bar

31
@ 바 좋은 팁. watch -d -n 0.5 nvidia-smi더 나아질 것입니다.
zeekvfu

3
@zeekvfu -d국기의 기능 을 설명하는 것이 더 좋을 것
같습니다

5
@donlucacorleone man watch-d플래그가 출력 간의 차이를 강조하므로 시간이 지남에 따라 변화하는 메트릭을 강조하는 데 도움이됩니다.
David Kaczynski

71

리눅스의 경우, nvidia-smi -l 11 초 간격으로 gpu 사용량 정보를 지속적으로 사용합니다.


74
watch -n 1 nvidia-smi터미널을 출력으로 채우지 않고 지속적인 업데이트를 얻는 것을 선호합니다
ali_m

1
watch를 사용한다는 것은 매 초마다 새로운 프로세스를 시작하여 카드를 폴링한다는 의미입니다. 매 초가 아닌 -l을 수행하는 것이 더 좋습니다. 매분 또는 5 분마다 제안합니다.
Mick T


55

인텔 GPU의를 위해 존재 intel-gpu-tools에서 http://intellinuxgraphics.org/ 명령을 제공합니다 프로젝트 intel_gpu_top(다른 것들 사이)를. 그것은과 유사 top하고 htop있지만, 특히 인텔 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%:                      

35

nvidia-smi일부 리눅스 컴퓨터에서는 작동하지 않습니다 (많은 속성에 대해서는 N / A를 반환합니다). nvidia-settings대신 사용할 수 있습니다 (이것은 매트 켈시가 파이썬 스크립트에서 사용한 것이기도합니다).

nvidia-settings -q GPUUtilization -q useddedicatedgpumemory

다음을 사용할 수도 있습니다.

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

지속적인 모니터링을 위해.


4
이 의견이 아니었다 니 다행입니다. 내가이 질문을 만났을 때 내가 찾던 것이 바로 그것입니다.
Score_Under

nvidia-smi가 지원하지 않는 GeForce 카드를 가지고 있기 때문에 이것이 나를 위해 일한 것입니다.
alexg

4
당신은 할 수있는 nvidia-settings -q all모니터링 할 수있는 어떤 다른 매개 변수를 볼 수 있습니다. 모니터링 GPUCurrentProcessorClockFreqs하고 GPUCurrentClockFreqs있습니다.
alexg

1
감사합니다. 모든 카드를 모니터링하는 것이 좋습니다. 각 카드마다 모니터링 할 다른 문자열이있을 수 있습니다!
ruoho ruotsi

당신이 숫자를 원하고 다른 것을 원치 않는다면 (예를 들어 nvidia-settings -q [gpu:0]/UsedDedicatedGPUMemory -t
conky를

16

Linux의 경우이 HTOP을 내가 작성한 도구처럼 사용합니다. 코어 / VRAM / PCI-E 및 메모리 버스 사용량뿐만 아니라 GPU 온도에 대한 개요를 모니터링하고 제공합니다. 그래도 GPU에서 실행중인 것을 모니터링하지 않습니다.

gmonitor

여기에 이미지 설명을 입력하십시오


1
nvidia-settings항상 실행되는 X11이 필요합니다.
Victor Sergienko

번거 로움없이 나를 위해 작동합니다!
Hennadii Madan

15

완전성을 위해 AMD에는 두 가지 옵션이 있습니다.

  1. fglrx (닫힌 소스 드라이버).

    $ aticonfig --odgc --odgt
    
  2. 메사 (오픈 소스 드라이버), 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)도 추가 할 가치가 있습니다.
Zoltan

3

OS X의 경우

마운틴 라이온 포함

iStat 메뉴

마운틴 라이온 제외

atMonitor

GPU 관련 기능을 지원하는 atMonitor의 마지막 버전은 atMonitor 2.7.1입니다.

– 2.7.1 링크는 2.7b를 제공합니다.

최신 버전의 앱의 경우 atMonitor-FAQ에 설명되어 있습니다.

atMonitor가 MacOS 10.8과 호환되도록하기 위해 모든 GPU 관련 기능을 제거했습니다.

NVIDIA GeForce 9600M GT가 장착 된 MacBookPro5,2로 Mountain Lion에서 2.7b 일명 2.7.1을 실험했습니다. 종료하기 전에 앱이 몇 초 동안 실행되었으며 온도는 표시되었지만 사용법은 표시되지 않았습니다.

                                                  Mountain Lion의 atMonitor 2.7b 스크린 샷


3

프로세스가 종료되었거나 (아마 죽었거나 중단 된) 리소스를 계속 사용했지만에 나열되지 않았습니다 nvidia-smi. 일반적으로 이러한 프로세스는 GPU 메모리를 사용했습니다.

GPU에서 리소스를 사용하는 프로세스가 있고에 표시되지 않는 것으로 생각되면 nvidia-smi이 명령을 실행하여 다시 확인할 수 있습니다. GPU를 사용중인 프로세스가 표시됩니다.

sudo fuser -v /dev/nvidia*

이것은 EL7, Ubuntu 또는 다른 배포판에서 작동하며 다른 이름 / 위치에 nvidia 장치가 나열되어있을 수 있습니다.



2

Linux의 NVIDIA의 경우 선택적 지연을 사용하고 iostat 및 vmstat와 같은 반복되는 다음 Python 스크립트를 사용합니다

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

다음 함수는 GPU에서 실행중인 PID, 사용자 이름, CPU 사용량, 메모리 사용량, 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

조심스럽게, ps에 의해 주어진 pmem은 GPU의 총 메모리를 고려하지 않는다고 생각합니다. ps는 "Nvidia GPU"를 인식하지 못하기 때문에 CPU의 메모리를 고려합니다
SebMa

0

이 스크립트는 더 읽기 쉽고 쉽게 개조하고 확장 할 수 있도록 설계되었습니다.

gnome-terminal을 자주 사용하는 터미널 창 프로그램으로 바꿀 수 있습니다.


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

컴퓨팅 / 그래픽 모드, sm 사용량, 메모리 사용량, 인코더 사용량, 디코더 사용량을 포함하여 GPU 0의 모든 프로세스를 모니터링합니다.


0

나는 가능한 대답 (아마도 주석 제외)에서 그것을 보지 못했기 때문에 nvidia-smi와 함께 더 상쾌하게 할 수 있다고 덧붙였다 watch. 이렇게하면 지속적으로 스크롤하는 대신 업데이트 할 때마다 화면이 새로 고쳐집니다.

watch -n 1 nvidia-smi

1 초 간격 업데이트 은 교체 1는 소수 초를 포함하여, 원하는대로로 :

watch -n 5 nvidia-smi
watch -n 0.1 nvidia-smi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.