2013-03-25 6 views
5

क्या कोई जानता है कि मेमोरी एक्सेस कैसे प्राप्त करें (पॉइंटर्स) जो पेज दोषों का कारण बनता है? मुझे मुख्य पृष्ठ दोषों में अधिक दिलचस्पी है।लॉग मेमोरी उस कारण का उपयोग करती है जो प्रमुख पृष्ठ दोषों का कारण बनती है

जो कुछ मैं प्राप्त करने की कोशिश कर रहा हूं उसके बारे में कुछ पृष्ठभूमि। मेरे पास एक बड़ी मेमोरी पदचिह्न (एक डेटाबेस) के साथ एक अनुप्रयोग है और मैं बड़े डेटा संरचनाओं (जैसे टेबल, इंडेक्स जो एमएमएपी() का उपयोग करके आवंटित किए गए हैं) तक पहुंच के साथ पेजिंग को सहसंबंधित करना चाहता हूं। प्रक्रिया के मैपिंग/proc // नक्शे से पुनर्प्राप्त करना आसान है। अब, अगर मेरे पास स्मृति दोषों का कारण बनता है तो मैं ट्रैक कर सकता हूं कि प्रत्येक डेटा संरचना तक पहुंचने पर मैं कितने पेज दोष उत्पन्न कर सकता हूं।

मुझे लगता है कि perf या systemtap नौकरी कर सकता है। कोई विचार?

उत्तर

6

देखें क्या जांच बिंदु पर उपलब्ध है:

% stap -L vm.pagefault 
vm.pagefault name:string write_access:long address:long $mm:struct mm_struct* \ 
    $vma:struct vm_area_struct* $address:long unsigned int $flags:unsigned int 

प्रवेश करें, प्रतीक नाम

# stap -e 'probe vm.pagefault { if (execname()=="foo") { printf("%p (%s)\n", address, usymdata(address)) } }' -d /bin/foo --ldd 

भी देखने के लिए पते कैसे मैप करने का प्रयास: http://sourceware.org/systemtap/examples/#memory/pfaults.stp

6

आपका अनुमान सही है। आप अपने आवेदन के कारण होने वाले पृष्ठ दोषों की संख्या को ट्रैक करने के लिए perf टूल का उपयोग कर सकते हैं।

मैं आपको टूल का उपयोग करना सीखने के लिए this tutorial पढ़ने की सलाह देता हूं।

सिर्फ स्थापित करने के लिए उपयोग करें:

आप घटना पेज-दोष के लिए देख रहे हैं। आप (ubuntu या अन्य उपयुक्त वितरण में) द्वारा स्थापित कर सकते हैं: uname -r

उदाहरण के लिए, इस आदेश "ls पर पर्फ़ उपकरण चलाता है:

sudo apt-get install linux-tools-common linux-base 
sudo apt-get install linux-tools-YOUR-KERNEL number 

आप के साथ अपने कर्नेल संख्या प्राप्त कर सकते "कमांड:

perf record -e page-faults:u -F 250 ls 

और उसके बाद आप परिणाम देख सकते हैं (की बाइनरी":

साथ ls "कोई डिबग जानकारी है, तो एक बहुत उत्पादन की उम्मीद नहीं है)
संबंधित मुद्दे