Pemantauan penggunaan GPU (CUDA)

223

Saya menginstal CUDA toolkit di komputer saya dan memulai proyek BOINC pada GPU. Dalam BOINC saya dapat melihat bahwa itu berjalan pada GPU, tetapi apakah ada alat yang dapat menunjukkan kepada saya lebih detail tentang apa yang berjalan pada GPU - penggunaan GPU dan penggunaan memori?

pbm
sumber

Jawaban:

251

Untuk Nvidia GPU ada alat nvidia-smiyang dapat menunjukkan penggunaan memori, pemanfaatan GPU dan suhu GPU. Ada juga daftar proses komputasi dan beberapa opsi lagi tetapi kartu grafis saya (GeForce 9600 GT) tidak sepenuhnya didukung.

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
sumber
1
Chip ION saya juga tidak menunjukkan penggunaan. : /
Raphael
123
watch -n 0.5 nvidia-smi, akan menjaga output diperbarui tanpa mengisi terminal Anda dengan output.
Bar
31
@Bar Tip yang bagus. watch -d -n 0.5 nvidia-smiakan lebih baik lagi.
zeekvfu
3
@zeekvfu Saya pikir akan lebih baik untuk menjelaskan apa yang dilakukan -dbendera
donlucacorleone
5
@donlucacorleone man watchmemberi tahu kami bahwa -dflag menyoroti perbedaan antara output, sehingga dapat membantu dalam menyoroti metrik mana yang berubah seiring waktu.
David Kaczynski
71

Untuk linux, gunakan nvidia-smi -l 1akan terus memberikan Anda informasi penggunaan GPU, dengan interval penyegaran 1 detik.

qed
sumber
74
Saya lebih suka menggunakan watch -n 1 nvidia-smiuntuk mendapatkan pembaruan terus menerus tanpa mengisi terminal dengan output
ali_m
1
Menggunakan jam tangan berarti Anda memulai proses baru setiap detik untuk mengumpulkan kartu. Lebih baik dilakukan -l, dan tidak setiap detik, saya sarankan setiap menit atau setiap 5 menit.
Mick T
55

Untuk Intel GPU terdapat proyek intel-gpu-toolsdari http://intellinuxgraphics.org/ , yang membawa perintah intel_gpu_top(antara lain). Ini mirip dengan topdan htop, tetapi khusus untuk 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%:                      
jippie
sumber
35

nvidia-smitidak bekerja pada beberapa mesin linux (mengembalikan N / A untuk banyak properti). Anda dapat menggunakan nvidia-settingssebagai gantinya (ini juga yang digunakan oleh mat kelcey dalam skrip python-nya).

nvidia-settings -q GPUUtilization -q useddedicatedgpumemory

Anda juga bisa menggunakan:

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

untuk pemantauan berkelanjutan.

Jonathan
sumber
4
Senang ini bukan komentar. Persis seperti yang saya cari ketika saya menemukan pertanyaan ini.
Score_Under
Terima kasih, ini yang bekerja untuk saya, karena saya punya kartu GeForce yang tidak didukung oleh nvidia-smi.
alexg
4
Anda dapat melakukan nvidia-settings -q alluntuk melihat parameter apa yang bisa Anda pantau. Saya sedang memantau GPUCurrentProcessorClockFreqsdan GPUCurrentClockFreqs.
alexg
1
Terima kasih sobat, ide yang bagus untuk menanyakan semua, karena setiap kartu mungkin memiliki string yang berbeda untuk dipantau!
ruoho ruotsi
Jika Anda hanya menginginkan nomor dan tidak ada yang lain (mis. Untuk conky) gunakan ini:nvidia-settings -q [gpu:0]/UsedDedicatedGPUMemory -t
hLk
16

Untuk Linux, saya menggunakan alat seperti HTOP ini yang saya tulis sendiri. Ini memantau dan memberikan gambaran umum tentang suhu GPU serta penggunaan bus inti / VRAM / PCI-E & memori. Itu tidak memonitor apa yang berjalan pada GPU.

gubernur

masukkan deskripsi gambar di sini

Mountassir El Hafi
sumber
1
nvidia-settingsmembutuhkan X11 yang berjalan, yang tidak selalu demikian.
Victor Sergienko
bekerja untuk saya tanpa kerumitan!
Hennadii Madan
15

Untuk kelengkapan, AMD memiliki dua opsi:

  1. fglrx (driver sumber tertutup).

    $ aticonfig --odgc --odgt
    
  2. mesa (driver open source), Anda dapat menggunakan RadeonTop .

    Lihat pemanfaatan GPU Anda, baik untuk persentase aktivitas total dan blok individual.

kevinf
sumber
13

Saya memiliki kartu video GeForce 1060 GTX dan saya menemukan bahwa perintah berikut memberi saya info tentang pemanfaatan kartu, suhu, kecepatan kipas, dan konsumsi daya:

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

Anda dapat melihat daftar semua opsi permintaan dengan:

$ nvidia-smi --help-query-gpu
lyubomir
sumber
1
Akan layak ditambahkan memory.usedatau ( memory.free) juga.
Zoltan
3

Untuk OS X

Termasuk Singa Gunung

Menu iStat

Tidak Termasuk Singa Gunung

atMonitor

Versi terakhir atMonitor untuk mendukung fitur terkait GPU adalah atMonitor 2.7.1.

- dan tautan ke 2.7.1 menghasilkan 2.7b.

Untuk versi aplikasi yang lebih baru, atMonitor - FAQ menjelaskan:

Untuk membuat atMonitor kompatibel dengan MacOS 10.8 kami telah menghapus semua fitur terkait GPU.

Saya bereksperimen dengan 2.7b alias 2.7.1 di Mountain Lion dengan MacBookPro5,2 dengan NVIDIA GeForce 9600M GT. Aplikasi berjalan selama beberapa detik sebelum berhenti, itu menunjukkan suhu tetapi tidak digunakan:

                                                  tangkapan layar atMonitor 2.7b di Mountain Lion

Graham Perrin
sumber
3

Saya sudah menghentikan proses (mungkin terbunuh atau macet) dan terus menggunakan sumber daya, tetapi tidak terdaftar di nvidia-smi. Biasanya proses ini hanya mengambil memori GPU.

Jika Anda berpikir Anda memiliki proses menggunakan sumber daya pada GPU dan itu tidak ditampilkan nvidia-smi, Anda dapat mencoba menjalankan perintah ini untuk memeriksa ulang. Ini akan menunjukkan kepada Anda proses mana yang menggunakan GPU Anda.

sudo fuser -v /dev/nvidia*

Ini berfungsi pada EL7, Ubuntu atau distribusi lain yang mungkin memiliki perangkat nvidia mereka terdaftar di bawah nama / lokasi lain.

Rick Smith
sumber
2

untuk nvidia di linux saya menggunakan skrip python berikut yang menggunakan penundaan opsional dan ulangi seperti iostat dan 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
sumber
1

Fungsi berikut menambahkan informasi seperti PID, nama pengguna, penggunaan CPU, penggunaan memori, penggunaan memori GPU, argumen program dan waktu proses yang dijalankan pada GPU, ke output dari 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
}

Contoh 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
Lenar Hoyt
sumber
Hati-hati, saya tidak berpikir pmem yang diberikan oleh ps memperhitungkan total memori GPU tetapi dari CPU karena ps tidak sadar "Nvidia GPU"
SebMa
0

Skrip ini lebih mudah dibaca dan dirancang untuk mod dan ekstensi yang mudah.

Anda dapat mengganti terminal gnome dengan program jendela terminal favorit Anda.


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

#

Lisensi: GNU GPLv2, TranSeed Research

Douglas Daseeco
sumber
0

Anda dapat gunakan

nvidia-smi pmon -i 0

untuk memantau setiap proses dalam GPU 0. termasuk mode komputasi / grafik, penggunaan sm, penggunaan memori, penggunaan encoder, penggunaan decoder.

changqi.xia
sumber
0

Aku tidak melihatnya dalam jawaban yang tersedia (kecuali mungkin dalam komentar), jadi saya pikir saya akan menambahkan bahwa Anda bisa mendapatkan menyegarkan lebih bagus nvidia-smidengan watch. Ini menyegarkan layar dengan setiap pembaruan daripada bergulir terus-menerus.

watch -n 1 nvidia-smi

untuk pembaruan interval satu detik. Ganti 1dengan apa pun yang Anda inginkan, termasuk pecahan detik:

watch -n 5 nvidia-smi
watch -n 0.1 nvidia-smi
Engineero
sumber