2009-12-15 12 views
6

मुझे यह पता लगाने की ज़रूरत है कि मैं जो लिनक्स प्रोग्राम चला रहा हूं, वह कितना हिस्सा ले रहा है, कितना प्रतिशत (या तो प्रतिशत, या पूर्ण) स्मृति ले रहा है। मुझे ऐसे कई कार्यक्रमों का प्रोफ़ाइल बनाना होगा, ताकि मैं अपने कोड में स्मृति के कुछ बड़े उपभोक्ताओं की पहचान कर सकूं, और देख सकूं कि मैं उन्हें कम उपयोग करने के लिए अनुकूलित कर सकता हूं या नहीं। मुझे इसे एमआईपीएस मंच पर चाहिए, और दुर्भाग्यवश, वालग्रींड एमआईपीएस पर काम नहीं करता है।सी प्रोग्राम के मेमोरी उपयोग को कैसे प्रोफाइल करें

किसी भी मदद/पॉइंटर्स की सराहना की जाएगी।

+1

Valgrind अब एमआईपीएस के लिए समर्थित है। Https://bugs.kde.org/show_bug.cgi?id=270777 – MannyNS

उत्तर

6

आप अपने सभी कॉल free और malloc पर अपने स्वयं के फ़ंक्शंस के साथ लपेट सकते हैं जिसमें आप उदाहरण के लिए भी फाइल करते हैं और प्रत्येक आवंटन किस लाइन नंबर पर किया जाता है। इस जानकारी से यह देखना आसान है कि जहां स्मृति का उपयोग किया जा रहा है।

+2

उन्हें एलडी_PRELOAD के साथ रनटाइम ओवरराइड करें ... –

+0

@Stefano, यदि आप अतिरिक्त चाहते हैं तो यह काम नहीं करेगा आपके 'मॉलोक' कॉल के लिए तर्क, क्या यह होगा? (मैं एक पूर्ण लिनक्स एन 00 बी हूं) –

+2

यह काम करना चाहिए। यहां देखें: http://www-2.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15213-s03/src/interposition/mymalloc.c –

1

मेमोरी खपत को अंतर्निहित प्रोसेसर आर्किटेक्चर द्वारा बड़े पैमाने पर प्रभावित नहीं किया जाना चाहिए ताकि आप x86 लिनक्स पर मेमोरी प्रोफाइलिंग कर सकें। हां, स्मृति की पूर्ण मात्रा शायद प्रभावित होती है लेकिन जैसा कि आप पूर्ण संख्या से सापेक्ष के लिए अधिक देख रहे हैं, यह काम करना चाहिए।

यह कहा गया है कि यह समाधान एक विकल्प होने की संभावना नहीं है यदि एक लिनक्स x86 बिल्ड एक recompile दूर से अधिक है।

+2

देखें ... मानते हैं कि एमआईपीएस से x86 तक पोर्टिंग उस प्रोग्राम का छोटा है। –

+0

मान्य है, यह मलम में उड़ जाएगा। –

+0

हां। प्रोग्राम जो मैं प्रोफाइल करना चाहता हूं, अगर मुझे उस प्रोग्राम और सभी संबंधित पुस्तकालयों को x86 पर पोर्ट करना है, तो यह महीनों में चला सकता है :-)। तो यह मेरे लिए काम नहीं करता – Harty

8

वालग्रींड के अलावा, कई अन्य मेमोरी डीबगर/प्रोफाइलर मौजूद हैं। सभी निम्नलिखित MIPS समर्थन करने के लिए लगता है (लेकिन मैं उन्हें कि वास्तुकला पर की कोशिश की नहीं है):

jemalloc, CCMALLOC, mpatrol, NJAMD, Dmalloc, और यहां तक ​​कि Google की अपनी google-perftools

संबंधित मुद्दे