दिलचस्प पोस्ट
CSS बनाम तत्व विशेषताओं के माध्यम से HTML5 कैनवास का आकार आप किसी ऑरेकल प्रक्रिया से परिणाम स्वरूप कैसे प्राप्त कर सकते हैं जो संदर्भ कर्सर देता है? जांचें कि क्या पेज को फिर से लोड किया गया है या फिर जावास्क्रिप्ट में रीफ्रेश किया गया है एंड्रॉइड फोन में कष्टप्रद संवाद के बिना मैं वाक् पहचान कैसे उपयोग कर सकता हूं अजगर में फ़ाइल की अंतिम x लाइनों को खोजने का सबसे कारगर तरीका स्ट्रिंग में प्रत्येक 2 तत्व डालने का पायथनिक तरीका कैसे पता लगाने के लिए कि .NET रनटाइम का उपयोग किया जा रहा है (एमएस बनाम मोनो)? पीएसपी और लिनक्स के माध्यम से पीडीओ का उपयोग करके mssql से कनेक्ट करना jQuery स्क्रोलपॉप क्रोम में काम नहीं कर रहा है लेकिन फ़ायरफ़ॉक्स में काम कर रहा है सशर्त-और और सशर्त-या ऑपरेटरों के जावा आवधिक असाइन संस्करण क्यों नहीं हैं? (&& =, || =) "अपरिवर्तित फ़ंक्शन mysql_connect () पर कॉल करें" अपग्रेड करने के बाद php-7 IE 11 के लिए एक सीएसएस हैक कैसे लिखूँ? पोस्ट मापदंडों के साथ एंड्रॉइड में एचटीटीपी क्लाइंट और एचटीटीपी पोस्ट का उपयोग करना PHP वैरिएबल के रूप में जावा स्क्रिप्ट व्हेरिएबल का उपयोग कैसे कर सकता हूं? एचटीएमएल टैग की पूर्ण सूची जिसमें यूआरएल वैल्यू है?

लिनक्स / यूनिक्स प्रोसेस की पीक मेमोरी उपयोग

क्या कोई ऐसा उपकरण है जो कमांड लाइन चलाएगा और रिपोर्ट करेगा कि राम कितना उपयोग किया गया था?

मैं / usr / bin / समय के अनुरूप कुछ सोच रहा हूं

वेब के समाधान से एकत्रित समाधान "लिनक्स / यूनिक्स प्रोसेस की पीक मेमोरी उपयोग"

(यह पहले से ही उत्तर दिया गया है, पुराना प्रश्न है .. लेकिन सिर्फ रिकार्ड के लिए 🙂

मैं यांग की स्क्रिप्ट से प्रेरित था, और इस छोटे उपकरण के नाम पर मेमोस नाम आया था । मैंने बहुत कम जीवित प्रक्रियाओं को संभालने के लिए नमूनाकरण दर को 0.1 में बढ़ा दिया। एक एकल प्रक्रिया की निगरानी के बजाय, मैंने इसे प्रक्रिया समूह के आरएसएस योग का आकलन किया। (हाँ, मैं एक साथ काम करने वाले बहुत सारे अलग-अलग प्रोग्राम लिखता हूं) यह वर्तमान में मैक ओएस एक्स और लिनक्स पर काम करता है। उपयोग उस time समान होना था:

 memusg ls -alR /> / dev / null

यह केवल क्षण के लिए शिखर को दिखाता है, लेकिन मुझे अन्य (मोटे) आंकड़ों को रिकॉर्ड करने के लिए कुछ हिस्सों में दिलचस्पी है।

इससे पहले कि हम किसी गंभीर प्रोफ़ाइल को शुरू करने से पहले ही एक नज़र लेने के लिए इस तरह के सरल उपकरण के लिए अच्छा है

[ संपादित करें : Ubuntu 14.04 पर काम करता है: /usr/bin/time -v command पूर्ण पथ का उपयोग सुनिश्चित करें।]

ऐसा लगता है कि /usr/bin/time आपको जानकारी देता है, यदि आप पास -v (यह Ubuntu 8.10 पर है)। देखें, उदाहरण के लिए, नीचे Maximum resident set size :

 $ / usr / bin / समय-वी एलएस /
 ....
         कमांड का समय समाप्त हो रहा है: "ls /"
         उपयोगकर्ता का समय (सेकंड): 0.00
         सिस्टम समय (सेकंड): 0.01
         सीपीयू का प्रतिशत यह काम मिला: 250%
         समाप्त हो गया (दीवार घड़ी) समय (h: mm: ss या m: ss): 0: 00.00
         औसत साझा पाठ आकार (kbytes): 0
         औसत अप्रयुक्त डेटा आकार (kbytes): 0
         औसत स्टैक आकार (kbytes): 0
         औसत कुल आकार (किलोबाइट): 0
         अधिकतम निवासी सेट आकार (किलोबाइट): 0
         औसत निवासी सेट आकार (kbytes): 0
         मेजर (I / O की आवश्यकता है) पृष्ठ दोष: 0
         छोटा (एक फ्रेम को पुनः प्राप्त करना) पृष्ठ दोष: 315
         स्वैच्छिक संदर्भ स्विचेस: 2
         अनौपचारिक संदर्भ स्विचेस: 0
         स्वैप: 0
         फ़ाइल सिस्टम इनपुट: 0
         फ़ाइल सिस्टम आउटपुट: 0
         सॉकेट संदेश भेजे गए: 0
         सॉकेट संदेश प्राप्त हुए: 0
         सिग्नल वितरित: 0
         पेज आकार (बाइट्स): 40 9 6
         स्थिति से बाहर निकलें: 0

वाल्ग्रिंड एक-लाइनर:

valgrind --tool=massif --pages-as-heap=yes --massif-out-file=massif.out ./test.sh; grep mem_heap_B massif.out | sed -e 's/mem_heap_B=\(.*\)/\1/' | sort -g | tail -n 1

किसी प्रक्रिया में सभी स्मृति को मापने के लिए – पृष्ठ-ए-हीप के नोट का उपयोग करें यहां अधिक जानकारी: http://valgrind.org/docs/manual/ms-manual.html

शायद (ग्नु) समय (1) पहले से ही आप क्या चाहते हैं उदाहरण के लिए:

 $ /usr/bin/time -f "%P %M" command 43% 821248 

लेकिन आप जो खोज रहे हैं उसके आधार पर अन्य प्रोफाइलिंग उपकरण अधिक सटीक परिणाम दे सकते हैं।

/ usr / bin / time शायद आप क्या चाहते हैं, वास्तव में कुछ इस तरह।

  / usr / bin / time --format = '(% Xtext +% Ddata% Mmax)'

विवरण के लिए समय (1) देखें …

यदि प्रक्रिया कम से कम एक सेकंड सेकंड के लिए चलाती है, तो आप निम्न बाश स्क्रिप्ट का उपयोग कर सकते हैं, जो दी गई कमांड लाइन को चलाएगा, तो चरम आरएसएस (आरएसएस के विकल्प को कोई अन्य विशेषता जो आप में रुचि रखते हैं) के लिए मुद्रित करें। यह थोड़ा हद तक हल्का है, और यह मेरे लिए उबंटू 9.04 (जो मैं time लिए नहीं कह time ) में शामिल ps साथ काम करता है।

 #!/usr/bin/env bash "$@" & # Run the given command line in the background. pid=$! peak=0 while true; do sleep 1 sample="$(ps -o rss= $pid 2> /dev/null)" || break let peak='sample > peak ? sample : peak' done echo "Peak: $peak" 1>&2 

मैकओएस सिएरा उपयोग पर:

 /usr/bin/time -l commandToMeasure 

आप जो भी चाहें उसे लेने के लिए grep का उपयोग कर सकते हैं

ठीक है, अगर आप वास्तव में मेमोरी शिखर को दिखाना चाहते हैं और कुछ अधिक गहराई वाले आँकड़े मुझे एक प्रोफाइलर जैसे वालग्रिंड का उपयोग करने की सलाह देते हैं। एक अच्छा वाल्ग्रिंड फ्रंट एंड एललीओप है ।

आप ऐसा करने के लिए वालग्रींड जैसे उपकरण का उपयोग कर सकते हैं।

यहां (अन्य उत्तरों के आधार पर) एक बहुत ही सरल स्क्रिप्ट है जो पहले से चलने वाली प्रक्रिया देखता है आप इसे उस प्रक्रिया के पीड के साथ चलाते हैं जिसे आप तर्क के रूप में देखना चाहते हैं:

 #!/usr/bin/env bash pid=$1 while ps $pid >/dev/null do ps -o vsz= ${pid} sleep 1 done | sort -n | tail -n1 

उदाहरण उपयोग:

 max_mem_usage.sh 23423 

मैसिफ़ का प्रयोग करें: http://valgrind.org/docs/manual/ms-manual.html

'एचओपी' सबसे महत्वपूर्ण कमान है देखने के लिए कि किस प्रक्रिया का उपयोग कितना है RAM …..

अधिक विस्तार के लिए http://manpages.ubuntu.com/manpages/precise/man1/htop.1.html

हेप्ट्रैक केडीई उपकरण है जिसमें GUI और पाठ इंटरफ़ेस है। मुझे वाल्ग्रिंड की तुलना में एक प्रक्रिया के मेमोरी उपयोग को समझने के लिए अधिक उपयुक्त लगता है क्योंकि यह अधिक विवरण और फ़्लेमग्राफ प्रदान करता है। यह भी तेज़ है क्योंकि यह वाल्ग्रिंड की कम जांच करता है और यह आपको चोटी मेमोरी उपयोग देता है

वैसे भी, ट्रैकिंग आरएसएस और वीएसएस भ्रामक है क्योंकि पृष्ठों को साझा किया जा सकता है, यही कारण है कि memusg आप वास्तव में क्या करना चाहिए /proc/[pid]/smaps का योग ट्रैक करें या pmap उपयोग करें ऐसा करने के लिए इस्तेमाल किया जाने वाला गनोम सिस्टम मॉनिटर लेकिन यह बहुत महंगा था

हाथ की ओर से बनाई गई बोली स्क्रिप्ट के साथ, पहिया की फिर से खोजना। त्वरित और साफ

मेरा उपयोग केस: मैं एक लिनक्स मशीन की निगरानी करना चाहता था जिसमें कम रैम है और जब वह भारी उपयोग के तहत चलाता है तो प्रति कंटेनर उपयोग का एक स्नैपशॉट लेना चाहता था।

 #!/usr/bin/env bash threshold=$1 echo "$(date '+%Y-%m-%d %H:%M:%S'): Running free memory monitor with threshold $threshold%.." while(true) freePercent=`free -m | grep Mem: | awk '{print ($7/$2)*100}'` do if (( $(awk 'BEGIN {print ("'$freePercent'" < "'$threshold'")}') )) then echo "$(date '+%Y-%m-%d %H:%M:%S'): Free memory $freePercent% is less than $threshold%" free -m docker stats --no-stream sleep 60 echo "" else echo "$(date '+%Y-%m-%d %H:%M:%S'): Sufficient free memory available: $freePercent%" fi sleep 30 done 

नमूना आउटपुट:

2017-10-12 13:29:33: थ्रेशोल्ड 30% के साथ मुफ्त मेमोरी मॉनिटर चल रहा है ..

2017-10-12 13:29:33: पर्याप्त मुफ्त मेमोरी उपलब्ध है: 69.4567%

2017-10-12 13:30:03: पर्याप्त मुफ्त मेमोरी उपलब्ध: 69.4567%

2017-10-12 16:47:02: नि: शुल्क स्मृति 18.9387% 30% से कम है

आपका कस्टम कमांड आउटपुट

लिनक्स पर:

/usr/bin/time -v <program> <args> और " अधिकतम निवासी सेट आकार " देखें

(बाश time अंतर्निहित कमांड के साथ भ्रमित नहीं होना! तो पूर्ण पथ , /usr/bin/time )

उदाहरण के लिए:

 > /usr/bin/time -v ./myapp User time (seconds): 0.00 . . . Maximum resident set size (kbytes): 2792 . . . 

बीएसडी, मैकओएस पर:

" अधिकतम निवासी सेट आकार " की तलाश में /usr/bin/time -l <program> <args> उपयोग करें:

 >/usr/bin/time -l ./myapp 0.01 real 0.00 user 0.00 sys 1440 maximum resident set size . . .