क्या कोई उपकरण है जो स्मृति उपयोग के लॉगिंग की अनुमति देता है?


18

मैं एक प्रक्रिया के मेमोरी उपयोग की निगरानी करना चाहता हूं, और मैं चाहता हूं कि यह डेटा लॉग इन हो। क्या ऐसा कोई उपकरण मौजूद है?


1
मुझे लगता है कि प्रोग्राम की निगरानी के बारे में यह लिंक एक मेमोरी मेमोरी का उपयोग आपकी आवश्यकता को हल करने के लिए उपयोगी होगा।
सेन

जवाबों:


8

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


1
सिरप जाहिरा तौर पर github.com/jeetsukumaran/Syrupy
Framester

12

कभी-कभी जरूरत पड़ने पर मैं सिर्फ यही करता हूं:

$ top -d 1 -b |grep <process> >>somefile

यह एक सुरुचिपूर्ण समाधान नहीं है, लेकिन यदि आप अपनी परिकल्पना को सत्यापित करने के लिए त्वरित कच्चे मूल्य चाहते हैं, तो यह काम पूरा हो जाता है।


मुझे लगता है यह है यह सादगी में सुरुचिपूर्ण। आप grep --line-buffered <process> >>somefileबफ़रिंग के बिना प्रत्येक पंक्ति को आउटपुट करने के लिए grep को मजबूर करने के लिए करना चाह सकते हैं
ओट टोमेट

7

sar( सिस्टम गतिविधि रिपोर्टर ) sysstat पैकेज से इस तरह के मामले में आपका दोस्त है।

एक अन्य तरीका ऐतिहासिक डेटा, जैसे मुनिन, pnp4nagios, rrdtools, के साथ संयुक्त निगरानी होगा ...


1
लेकिन sarसिर्फ एक प्रक्रिया पर ध्यान केंद्रित किया जा सकता है? ज्यादातर यह पूरी तरह से सिस्टम की निगरानी करने के लिए लगता है
xenoterracide

3
pidstatSysstat पैकेज से आदेश भी एक प्रक्रिया पर आंकड़ों की रिपोर्ट के लिए एक काफी अच्छा इंटरफेस प्रदान करता है।
स्टीवन डी

@xenoterracide स्टीवन डी का जवाब था। मुझे पहले इस आदेश की जानकारी नहीं थी।
ईसाई

4

ऊपर उल्लिखित खोज एवं बचाव इसके अलावा, मैं सलाह देते हैं ऊपर । यह एक द्विआधारी लॉग बचाता है जिसे आप बाद में उपयोग कर सकते हैं, और इसके अलावा मेमोरी बहुत सी अन्य जानकारी बचाता है।


3

आप Valgrind की कोशिश कर सकते हैं ।

Valgrind गतिशील विश्लेषण उपकरणों के निर्माण के लिए एक इंस्ट्रूमेंटेशन ढांचा है। Valgrind टूल हैं जो स्वचालित रूप से कई मेमोरी प्रबंधन और थ्रेडिंग बग्स का पता लगा सकते हैं, और अपने कार्यक्रमों को विस्तार से प्रोफाइल कर सकते हैं। नए टूल बनाने के लिए आप Valgrind का भी उपयोग कर सकते हैं।

वैलग्राइंड वितरण में वर्तमान में छह उत्पादन-गुणवत्ता के उपकरण शामिल हैं: एक मेमोरी त्रुटि डिटेक्टर , दो थ्रेड एरर डिटेक्टर, एक कैश और शाखा-भविष्यवाणी प्रोफाइलर, एक कॉल-ग्राफ जनरेटिंग कैश और शाखा-भविष्यवाणी प्रोफाइलर, और एक ढेर प्रोफाइलर


जब भी यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, तो उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर होगा
साजी 89

यह दस्तावेज़ बड़े पैमाने पर विस्तार से समझाता है।
शॉन झी

0

मुझे श्रीधर का सरल जवाब पसंद है लेकिन मैंने अपना प्रयास करने से पहले अपना रोल निभाया:

import json, psutil, datetime, time

with open('log.txt', 'w') as f:
  while True:
    json.dump((datetime.datetime.now().isoformat(),
               psutil.Process(7274).memory_info()._asdict()), f)
    f.write('\n')
    f.flush()
    time.sleep(1)

यदि आप संरचित आउटपुट चाहते हैं तो यह मूल रूप से केवल उपयोगी है। 7274 को उपयुक्त के रूप में बदलें। साथ ही पायथन 3.5.समर्थन टूट गया _asdict(), इसलिए पायथन 2 का उपयोग करें।

आउटपुट फ़ाइल इस तरह दिखती है:

["2019-03-19T11:21:53.784670", {"rss": 220389376, "vms": 538984448, "shared": 15724544, "text": 303104, "lib": 0, "data": 221364224, "dirty": 0}]
["2019-03-19T11:21:54.786136", {"rss": 220438528, "vms": 539119616, "shared": 15724544, "text": 303104, "lib": 0, "data": 221499392, "dirty": 0}]
["2019-03-19T11:21:55.787555", {"rss": 220495872, "vms": 539119616, "shared": 15724544, "text": 303104, "lib": 0, "data": 221499392, "dirty": 0}]
["2019-03-19T11:21:56.788754", {"rss": 220528640, "vms": 539119616, "shared": 15724544, "text": 303104, "lib": 0, "data": 221499392, "dirty": 0}]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.