2009-01-06 17 views
5

के निम्न स्तर की स्मृति पहुंच का विश्लेषण करने के लिए प्रोफाइलिंग मुझे कई कार्यक्रमों की स्मृति पहुंच का विश्लेषण करना है। जो मैं खोज रहा हूं वह एक प्रोफाइलर है जो मुझे देखने की इजाजत देता है कि मेरे कौन से प्रोग्राम गहन कंप्यूटिंग की गहन इंस्टीट्यूट हैं। मुझे एल 1 डेटा कैश, एल 2 और मुख्य मेमोरी तक पहुंच की संख्या में बहुत दिलचस्पी है।मेरे प्रोग्राम

यह लिनक्स के लिए होना चाहिए और यदि यह केवल कमांड उपयोग के साथ संभव है। प्रोग्रामिंग भाषा सी ++ है। अगर मेरे प्रश्न में कोई समस्या है, जैसे कि मुझे समझ में नहीं आता कि आपका क्या मतलब है या हमें अधिक डेटा चाहिए तो कृपया नीचे टिप्पणी करें।

धन्यवाद। समाधान

मैं के रूप में क्योंकि पसंदीदा Crashworks के जवाब का चयन किया है के साथ

अद्यतन केवल एक ही है कि मैं के लिए क्या देख रहा था के बारे में कुछ प्रदान की है। लेकिन सवाल अभी भी खुला है, अगर आप एक बेहतर समाधान जानते हैं तो कृपया उत्तर दें।

उत्तर

1

यदि आप इंटेल हार्डवेयर चला रहे हैं, तो लिनक्स के लिए वीट्यून शायद आपके लिए उपलब्ध सर्वोत्तम और सबसे पूर्ण-विशेषीकृत टूल है।

अन्यथा, आप perfctr लाइब्रेरी का उपयोग करके प्रदर्शन-काउंटर एमएसआर को सीधे पढ़ने के लिए बाध्य हो सकते हैं। मुझे लिनक्स पर इस बारे में कोई अनुभव नहीं है, लेकिन मुझे कुछ कागजात मिलते हैं जो आपकी मदद कर सकते हैं (मानते हैं कि आप x86 पर हैं - यदि आप पीपीसी चला रहे हैं, तो कृपया उत्तर दें और मैं अधिक विस्तृत उत्तर प्रदान कर सकता हूं): http://ieeexplore.ieee.org/Xplore/login.jsp?url=/iel5/11169/35961/01704008.pdf?temp=x http://www.cise.ufl.edu/~sb3/files/pmc.pdf

आम तौर पर ये टूल आपको बता नहीं सकते कि आपकी कैश की यादें किस लाइन पर होती हैं, क्योंकि वे काउंटर मतदान करके काम करते हैं। आपको क्या करना होगा, उस कार्य के अंदर कितनी यादें आती हैं, और निश्चित रूप से आप इतनी पदानुक्रमित कर सकते हैं, जिसमें प्रत्येक फंक्शन की शुरुआत और अंत में "एल 1 कैश मिस" काउंटर मतदान करना है। इसे जैसे द्वारा वर्गीकृत किया जा सकता है जो कक्षा का आविष्कार करता है जो स्कोप दर्ज करने पर प्रारंभ टाइमर रिकॉर्ड करता है और दायरे को छोड़ने पर डेल्टा की गणना करता है।

वीट्यून का वाद्ययंत्र मोड स्वचालित रूप से पूरे कार्यक्रम में आपके लिए यह करता है। समकक्ष एएमडी उपकरण CodeAnalyst है। Valgrind एक ओपन-सोर्स कैश प्रोफाइलर होने का दावा करता है, लेकिन मैंने कभी इसका इस्तेमाल नहीं किया है।

0

क्या आपको यूनिक्स कमांड top प्रदान करने से कुछ और चाहिए? यह प्रस्तुति प्रारूप को पढ़ने में आसान में लिनक्स प्रोग्राम के सीपीयू उपयोग और स्मृति उपयोग प्रदान करता है।

आप कुछ अधिक विशिष्ट की जरूरत है, एक प्रोफाइलर शायद सॉफ्टवेयर भाषा (जावा/C++/आदि।) मदद मिलेगी जो निर्धारित प्रोफाइलर अपनी स्थिति के लिए सबसे अच्छा है।

2

स्मृति में सभी पहुंच निर्धारित करना संभव नहीं है, क्योंकि इससे अधिक समझ नहीं आती है। याद करने के लिए पहुँच अगले निर्देश क्रियान्वित किया जा सकता है (कार्यक्रम स्मृति में रहता), या जब अपने कार्यक्रम पढ़ता है या एक चर लिखते हैं, तो अपने कार्यक्रम लगभग स्मृति हर समय पहुँच रहा है।

आपके प्रोग्राम के मेमोरी उपयोग (दोनों ढेर और ढेर) का पालन करने के लिए और अधिक दिलचस्प क्या हो सकता है। इस मामले में आप मानक शीर्ष कमांड का उपयोग कर सकते हैं।

आप सिस्टम कॉल की निगरानी भी कर सकते हैं (यानी डिस्क पर लिखने के लिए या एक साझा मेमोरी सेगमेंट संलग्न/आवंटित करने के लिए)। इस मामले में आपको स्ट्रेस कमांड का उपयोग करना चाहिए।

सबकुछ करने के लिए एक और पूर्ण नियंत्रण gdb डीबगर के माध्यम से आपके प्रोग्राम को डीबग कर देगा। यह आपको अपने प्रोग्राम को नियंत्रित करने देता है जैसे एक चर के लिए ब्रेकपॉइंट्स सेट करना ताकि जब भी इसे पढ़ा या लिखा हो, प्रोग्राम को इंटरप्रूट किया गया हो (हो सकता है कि यह वही है जिसे आप ढूंढ रहे थे)। दूसरी ओर GDB तो DDD है, जो एक जीटीके ग्राफिकल दृश्यपटल आप इसके साथ शुरू करने में मदद मिलेगी है जानने के लिए मुश्किल हो सकता है।

अद्यतन: जो आप खोज रहे हैं वह वास्तव में निम्न स्तर की स्मृति पहुंच है जो यह उपयोगकर्ता स्तर पर उपलब्ध नहीं है (यह ऑपरेटिंग सिस्टम के कर्नेल का कार्य है)। मुझे यकीन नहीं है कि एल 1 कैश प्रबंधन को सीपीयू द्वारा पारदर्शी रूप से संभाला जाता है और कर्नेल से छुपाया जाता है। स्पष्ट है कि आपको कर्नेल स्तर के रूप में नीचे जाने की आवश्यकता है, इसलिए केडीबी ने here ओ केडीबीजी समझाया, here समझाया।

अपडेट 2: ऐसा लगता है कि लिनक्स कर्नेल CPU कैश को संभालता है लेकिन केवल एल 1 कैश करता है। पुस्तक Understanding the Linux Virtual Memory Manager बताती है कि लिनक्स कर्नेल का मेमोरी प्रबंधन कैसे काम करता है। This chapter एल 1 कैश हैंडलिंग के हिम्मत से कुछ बताते हैं।

1

शायद cachegrind (वालग्रिंड सूट का हिस्सा) उपयुक्त हो सकता है।

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