GPU उपयोग निगरानी (CUDA)


223

मैंने अपने कंप्यूटर पर CUDA टूलकिट स्थापित किया और GPU पर BOINC परियोजना शुरू की। BOINC में मैं देख सकता हूं कि यह GPU पर चल रहा है, लेकिन क्या ऐसा कोई टूल है जो मुझे इस बारे में अधिक जानकारी दिखा सकता है कि GPU - GPU उपयोग और मेमोरी उपयोग पर क्या चल रहा है?

जवाबों:


250

एनवीडिया जीपीयू के लिए एक उपकरण है 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
मेरी आयन चिप का उपयोग नहीं दिखा, या तो। : /
राफेल

123
watch -n 0.5 nvidia-smi, अपने टर्मिनल को आउटपुट से भरे बिना आउटपुट को अपडेट रखेगा।
बार

31
@ बर टिप। watch -d -n 0.5 nvidia-smiऔर भी अच्छा होगा।
zeekvfu

3
@ ज़ीकवफू मुझे लगता है कि यह स्पष्ट करना बेहतर होगा कि -dझंडा क्या करता है
donlucacorleone

5
@donlucacorleone man watchहमें -dआउटपुट के बीच फ़्लैग हाइलाइट के अंतर बताता है , इसलिए यह हाइलाइट करने में सहायता कर सकता है कि समय के साथ कौन से मैट्रिक्स बदल रहे हैं।
डेविड काकज़ेंस्की

71

लिनक्स के लिए, उपयोग nvidia-smi -l 1आपको लगातार 1 सेकंड के अंतराल के साथ, gpu उपयोग की जानकारी देगा।


74
मैं watch -n 1 nvidia-smiटर्मिनल के साथ आउटपुट को भरने के बिना निरंतर अपडेट प्राप्त करने के लिए उपयोग करना पसंद करता हूं
23_

1
वॉच का उपयोग करने का अर्थ है कि कार्डों को प्रदूषित करने के लिए हर सेकंड आपकी नई प्रक्रिया शुरू करना। करने के लिए बेहतर एल, और हर दूसरे नहीं, मैं हर मिनट या हर 5 मिनट का सुझाव देंगे।
मिक टी


55

इंटेल GPU के लिए http://intellinuxgraphics.org/ प्रोजेक्ट intel-gpu-toolsसे मौजूद है , जो कमांड (अन्य चीजों के बीच) लाता है । यह करने के लिए इसी तरह की है और है, लेकिन विशेष रूप से इंटेल GPU के लिए।intel_gpu_toptophtop

   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कुछ लिनक्स मशीनों पर काम नहीं करता है (कई गुणों के लिए एन / ए देता है)। आप nvidia-settingsइसके बजाय उपयोग कर सकते हैं (यह भी है कि उसकी अजगर लिपि में मैट केल्सी का क्या उपयोग किया गया है)।

nvidia-settings -q GPUUtilization -q useddedicatedgpumemory

आप भी उपयोग कर सकते हैं:

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

सतत निगरानी के लिए।


4
खुशी है कि यह एक टिप्पणी नहीं थी। यह वही है जो मैं खोज रहा था जब मैं इस सवाल पर आया था।
स्कोर_उंडर

धन्यवाद, यह मेरे लिए काम किया है, क्योंकि मेरे पास एक GeForce कार्ड है जो एनवीडिया-एसआई द्वारा समर्थित नहीं है।
एलेक्स

4
आप यह nvidia-settings -q allदेखने के लिए कर सकते हैं कि आप किन अन्य मापदंडों की निगरानी कर सकते हैं। मैं निगरानी कर रहा हूँ GPUCurrentProcessorClockFreqsऔर GPUCurrentClockFreqs
एलेक्स

1
धन्यवाद आदमी, सभी को क्वेरी करने के लिए अच्छा विचार है, क्योंकि प्रत्येक कार्ड की निगरानी के लिए अलग-अलग तार हो सकते हैं!
रूहोह रूस्तोसी 19

यदि आप केवल संख्या चाहते हैं और कुछ और नहीं (उदाहरण के लिए nvidia-settings -q [gpu:0]/UsedDedicatedGPUMemory -t
शंकु

16

लिनक्स के लिए, मैं इस HTOP का उपयोग उस टूल की तरह करता हूं जो मैंने खुद लिखा था। यह मॉनिटर करता है और GPU के तापमान के साथ-साथ कोर / VRAM / PCI-E & मेमोरी बस के उपयोग का अवलोकन देता है। यह मॉनिटर नहीं करता है कि GPU पर क्या चल रहा है।

gmonitor

यहां छवि विवरण दर्ज करें


1
nvidia-settingsएक रनिंग एक्स 11 की आवश्यकता होती है, जो हमेशा ऐसा नहीं होता है।
विक्टर सर्जियनको

मेरे लिए कोई परेशानी नहीं है!
हेनाडी मदन

15

पूर्णता के लिए, एएमडी के दो विकल्प हैं:

  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

ओएस एक्स के लिए

जिसमें माउंटेन लायन भी शामिल हैं

iStat मेनू

पर्वत सिंह को छोड़कर

atMonitor

GPU संबंधित सुविधाओं का समर्थन करने के लिए atMonitor का अंतिम संस्करण atMonitor 2.7.1 है।

- और 2.7.1 के लिए लिंक 2.7b बचाता है।

एप्लिकेशन के अधिक हाल के संस्करण के लिए, AtMonitor - FAQ बताते हैं:

मैकमोटर को मैकओएस 10.8 के साथ संगत बनाने के लिए हमने सभी जीपीयू से संबंधित सुविधाओं को हटा दिया है।

मैंने माउंटेन लायन पर 2.7b उर्फ ​​2.7.1 का प्रयोग मैकबुकप्रो 5,2 के साथ NVIDIA GeForce 9600M GT के साथ किया। छोड़ने से पहले कुछ सेकंड के लिए ऐप चला, इसमें तापमान दिखा लेकिन उपयोग नहीं:

                                                  माउंटेन लायन पर atMonitor 2.7b का स्क्रीनशॉट


3

मेरे पास प्रक्रियाएं समाप्त हो गई हैं (शायद मारे गए या दुर्घटनाग्रस्त हो गए) और संसाधनों का उपयोग करना जारी है, लेकिन इसमें सूचीबद्ध नहीं थे nvidia-smi। आमतौर पर ये प्रक्रियाएं केवल जीपीयू मेमोरी ले रही थीं।

अगर आपको लगता है कि आपके पास एक GPU पर संसाधनों का उपयोग करने की प्रक्रिया है और इसे नहीं दिखाया जा रहा है nvidia-smi, तो आप इस कमांड को दोबारा जांचने के लिए चला सकते हैं। यह आपको दिखाएगा कि कौन सी प्रक्रियाएं आपके GPU का उपयोग कर रही हैं।

sudo fuser -v /dev/nvidia*

यह ईएल 7, उबंटू या अन्य वितरणों पर काम करता है हो सकता है कि उनके एनवीडिया डिवाइस किसी अन्य नाम / स्थान के तहत सूचीबद्ध हों।



2

लिनक्स पर एनवीडिया के लिए मैं निम्नलिखित पायथन स्क्रिप्ट का उपयोग करता हूं जो एक वैकल्पिक देरी का उपयोग करता है और iostat और vmatat की तरह दोहराता है

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

निम्नलिखित फ़ंक्शन पीआईडी, उपयोगकर्ता नाम, सीपीयू उपयोग, मेमोरी उपयोग, जीपीयू मेमोरी उपयोग, कार्यक्रम तर्क और जीपीयू पर चलने वाली प्रक्रियाओं का समय चलाने के लिए आउटपुट के रूप में जानकारी प्रदान करता है 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

Carefull, मुझे नहीं लगता कि पीएस द्वारा दी गई पीएमएम जीपीयू की कुल मेमोरी को ध्यान में रखती है लेकिन सीपीयू की क्योंकि पीएस "एनवीडिया जीपीयू" से अवगत नहीं है
सीबीएमए

0

यह स्क्रिप्ट अधिक पठनीय है और इसे आसान मोड और एक्सटेंशन के लिए डिज़ाइन किया गया है।

आप अपने पसंदीदा टर्मिनल विंडो प्रोग्राम के साथ सूक्ति-टर्मिनल को बदल सकते हैं।


#! /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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.