2011-11-22 17 views
37

का उपयोग कर जीपीयू के लिए शीर्ष कमांड मैं कूडा और एमपीआई का उपयोग करने वाली प्रक्रिया की निगरानी करने की कोशिश कर रहा हूं, क्या मैं ऐसा कर सकता हूं, "शीर्ष" कमांड की तरह कुछ लेकिन जीपीयू पर भी नजर रखता है?सीपीयू

उत्तर

57

मैं कुछ भी है कि इस जानकारी को जोड़ती है के बारे में पता नहीं कर रहा हूँ, लेकिन आप, कच्चे डेटा प्राप्त करने के लिए इतना (धन्यवाद -l पर टिप के लिए @jmsu करने के लिए) की तरह nvidia-smi उपकरण का उपयोग कर सकते हैं:

$ nvidia-smi -q -g 0 -d UTILIZATION -l 

==============NVSMI LOG============== 

Timestamp      : Tue Nov 22 11:50:05 2011 

Driver Version     : 275.19 

Attached GPUs     : 2 

GPU 0:1:0 
    Utilization 
     Gpu      : 0 % 
     Memory     : 0 % 
+3

मुझे लगता है कि यदि आप ए-एल जोड़ते हैं तो आप इसे GPU और स्मृति उपयोग की निरंतर प्रभावी ढंग से निगरानी करने के लिए अपडेट करते हैं। – jmsu

+6

क्या होगा यदि मैं इसे चलाता हूं तो GPU उपयोगिता केवल एन/ए कहती है ?? – natorro

+3

@natorro कुछ कार्डों के लिए एनवीडिया गिराए गए समर्थन की तरह दिखता है। इस लिंक http://forums.nvidia.com/index.php?showtopic=205165 – jmsu

15

here से नवीनतम स्थिर CUDA ड्राइवर (4.2) को डाउनलोड और इंस्टॉल करें। लिनक्स पर, एनवीडिया-एसएमआई 2 9 5.41 आपको वही देता है जो आप चाहते हैं। nvidia-smi का उपयोग करें:

[[email protected] release]# nvidia-smi 
Wed Sep 26 23:16:16 2012  
+------------------------------------------------------+      
| NVIDIA-SMI 3.295.41 Driver Version: 295.41   |      
|-------------------------------+----------------------+----------------------+ 
| Nb. Name      | Bus Id  Disp. | Volatile ECC SB/DB | 
| Fan Temp Power Usage /Cap | Memory Usage   | GPU Util. Compute M. | 
|===============================+======================+======================| 
| 0. Tesla C2050    | 0000:05:00.0 On  |   0   0 | 
| 30% 62 C P0 N/A/N/A | 3% 70MB/2687MB | 44%  Default | 
|-------------------------------+----------------------+----------------------| 
| Compute processes:            GPU Memory | 
| GPU PID  Process name          Usage  | 
|=============================================================================| 
| 0. 7336  ./align             61MB | 
+-----------------------------------------------------------------------------+ 

संपादित करें: नवीनतम NVIDIA ड्राइवरों में, यह समर्थन टेस्ला कार्ड तक सीमित है।

2

इस सुरुचिपूर्ण नहीं हो सकता है, लेकिन आप

while true; do sleep 2; nvidia-smi; done 

मैं भी @Edric है, जो काम करता है के द्वारा विधि की कोशिश की कोशिश कर सकते हैं, लेकिन मैं nvidia-smi के मूल लेआउट पसंद करते हैं।

+5

या के साथ अपने टर्मिनल भरने से बचा जाता है घड़ी है की जाँच करें तुम सिर्फ 'NVIDIA-SMI -l कर सकते हैं 2'। या फिर बार-बार सांत्वना उत्पादन को रोकने के लिए,' घड़ी -n 2 'NVIDIA-smi'' – grisaitis

+0

कूल सामग्री @grisaitis! – skyuuka

37

इस्तेमाल किया संसाधनों पर वास्तविक समय जानकारी प्राप्त करने के लिए, कार्य करें:

nvidia-smi -l 1

हो जाएगा ताकि पाश और हर दूसरे पर दृश्य कहते हैं।

आप कंसोल इतिहास में looped कॉल के पिछले निशान रखने के लिए नहीं करना चाहते हैं, तो आप भी कर सकते हैं:

watch -n0.1 nvidia-smi

कहाँ 0.1 समय अंतराल है, सेकंड में।

enter image description here

6

एक अन्य उपयोगी निगरानी दृष्टिकोण ps प्रक्रियाओं है कि आपके GPUs उपभोग पर फ़िल्टर का उपयोग करें। मैं इस एक एक बहुत का उपयोग करें:

ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `lsof -n -w -t /dev/nvidia*` 

बस इतना ही NVIDIA GPU-उपयोग प्रक्रियाओं और उनके बारे में कुछ आंकड़े दिखाएंगे,। lsof ... वर्तमान उपयोगकर्ता के स्वामित्व वाले एनवीडिया जीपीयू का उपयोग करके सभी प्रक्रियाओं की एक सूची पुनर्प्राप्त करता है, और ps -p ... उन प्रक्रियाओं के लिए ps परिणाम दिखाता है। ps f बच्चे/अभिभावक प्रक्रिया संबंधों/पदानुक्रमों के लिए अच्छा स्वरूपण दिखाता है, और -o एक कस्टम स्वरूपण निर्दिष्ट करता है। वह सिर्फ ps u करने के समान है लेकिन प्रक्रिया समूह आईडी जोड़ता है और कुछ अन्य फ़ील्ड को हटा देता है।

nvidia-smi से अधिक का एक लाभ यह है कि यह प्रक्रिया कांटे के साथ-साथ जीपीयू का उपयोग करने वाली मुख्य प्रक्रियाओं को भी दिखाएगा।

एक नुकसान, हालांकि, यह उस उपयोगकर्ता द्वारा स्वामित्व वाली प्रक्रियाओं तक ही सीमित है जो आदेश निष्पादित करता है। किसी भी उपयोगकर्ता के स्वामित्व वाली सभी प्रक्रियाओं को खोलने के लिए, मैं lsof से पहले sudo जोड़ता हूं।

आखिरकार, मैं इसे निरंतर अद्यतन प्राप्त करने के लिए watch के साथ जोड़ता हूं।तो, अंत में, ऐसा लगता है:

watch -n 0.1 'ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `sudo lsof -n -w -t /dev/nvidia*`' 

कौन सा तरह आउटपुट है:

Every 0.1s: ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `sudo lsof -n -w -t /dev/nvi... Mon Jun 6 14:03:20 2016 
USER  PGRP PID %CPU %MEM STARTED  TIME COMMAND 
grisait+ 27294 50934 0.0 0.1 Jun 02 00:01:40 /opt/google/chrome/chrome --type=gpu-process --channel=50877.0.2015482623 
grisait+ 27294 50941 0.0 0.0 Jun 02 00:00:00 \_ /opt/google/chrome/chrome --type=gpu-broker 
grisait+ 53596 53596 36.6 1.1 13:47:06 00:05:57 python -u process_examples.py 
grisait+ 53596 33428 6.9 0.5 14:02:09 00:00:04 \_ python -u process_examples.py 
grisait+ 53596 33773 7.5 0.5 14:02:19 00:00:04 \_ python -u process_examples.py 
grisait+ 53596 34174 5.0 0.5 14:02:30 00:00:02 \_ python -u process_examples.py 
grisait+ 28205 28205 905 1.5 13:30:39 04:56:09 python -u train.py 
grisait+ 28205 28387 5.8 0.4 13:30:49 00:01:53 \_ python -u train.py 
grisait+ 28205 28388 5.3 0.4 13:30:49 00:01:45 \_ python -u train.py 
grisait+ 28205 28389 4.5 0.4 13:30:49 00:01:29 \_ python -u train.py 
grisait+ 28205 28390 4.5 0.4 13:30:49 00:01:28 \_ python -u train.py 
grisait+ 28205 28391 4.8 0.4 13:30:49 00:01:34 \_ python -u train.py 
+1

तुम भी गणना प्रोग्राम हैं जो कब्जा की PIDs प्राप्त कर सकते हैं 'बिना सभी उपयोगकर्ताओं के GPU इस तरह sudo':' NVIDIA-SMI --query-गणना-क्षुधा = पीआईडी ​​--format = csv, noheader' –

7

उपयोग तर्क "--query-गणना-क्षुधा ="

nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv 

आगे सहायता के लिए, कृपया का पालन

nvidia-smi --help-query-compute-app 
संबंधित मुद्दे