लघु संस्करण:लिनक्स समय नमूना आधारित प्रोफाइलर
वहाँ लिनक्स के लिए एक अच्छा समय आधारित नमूना प्रोफाइलर है?
लंबे संस्करण:
मैं आम तौर पर OProfile का उपयोग अपने आवेदन पत्र का अनुकूलन करने के। मुझे हाल ही में एक कमी मिली जो मुझे आश्चर्यचकित कर रही है।
समस्या एक कसौटी लूप थी, सी ++ नाम को ध्वस्त करने के लिए C++ filt spawning था। एक और बाधा का पीछा करते हुए मैं केवल दुर्घटना से कोड पर ठोकर खाई। OProfile ने कोड के बारे में कुछ भी असामान्य नहीं दिखाया, इसलिए मैंने इसे लगभग अनदेखा कर दिया लेकिन मेरे कोड की भावना ने मुझे कॉल को अनुकूलित करने और क्या हुआ यह देखने के लिए कहा। मैंने popen
सी ++ फिल्ट के abi::__cxa_demangle
में बदल दिया। रनटाइम एक मिनट से थोड़ा अधिक समय तक थोड़ा सा हो गया। एक x60 गति के बारे में।
क्या कोई तरीका है जिसे मैं popen
कॉल को ध्वजांकित करने के लिए OProfile कॉन्फ़िगर कर सकता था? चूंकि प्रोफाइल डेटा अब बैठता है ओप्रोफाइल सोचता है कि बोतल की गर्दन ढेर थी और std::string
कॉल (जिसे बीटीडब्ल्यू ने एक बार ऑप्टिमाइज़ किया था, रनटाइम को एक सेकंड से भी कम, x2 गति से अधिक) को छोड़ दिया था।
$ sudo opcontrol --status
Daemon not running
Event 0: CPU_CLK_UNHALTED:90000:0:1:1
Separate options: library
vmlinux file: none
Image filter: /path/to/executable
Call-graph depth: 7
Buffer size: 65536
वहाँ कि टोंटी मिल सकता था लिनक्स के लिए एक और प्रोफाइलर है:
यहाँ मेरी OProfile विन्यास है?
मुझे संदेह है कि समस्या यह है कि OProfile केवल वर्तमान में चल रहे प्रक्रिया में इसके नमूने लॉग करता है। मैं चाहता हूं कि मैं हमेशा प्रक्रिया के लिए अपने नमूने लॉग इन करूं। इसलिए यदि प्रक्रिया वर्तमान में स्विच हो गई है (आईओ या popen
कॉल पर अवरुद्ध) OProfile केवल अपने नमूना को अवरुद्ध कॉल पर रखेगा।
यदि मैं इसे ठीक नहीं कर सकता, तो OProfile केवल तब उपयोगी होगा जब निष्पादन योग्य 100% CPU के करीब धक्का दे रहा हो। यह उन निष्पादन योग्यताओं में सहायता नहीं कर सकता है जिनमें अक्षम अक्षम कॉल हैं।
माइक अपनी बात, बहुत मान्य है, मैं 100% के साथ तकनीक से सहमत हूं। OProfile के माध्यम से समय आधारित नमूनाकरण या डीबगर में तोड़ने की तुलना में अधिक स्वचालित दृष्टिकोण में किसी भी विचार को कैसे सक्षम किया जाए? –
@ कैस्पिन: मैं विंडोज़ पर हूं, और मैं ओप्रोफाइल का उपयोगकर्ता नहीं हूं, लेकिन यह लिंक (http://oprofile.sourceforge.net/doc/opreport.html) स्टैक नमूना डेटा के उपयोग और प्रस्तुति के बारे में बात करता है । इसके अलावा यह लिंक (http://oprofile.sourceforge.net/doc/detailed-parameters.html#timer) टाइमर इंटरप्ट्स के बारे में बात करता है। मैं यह नहीं बता सकता कि यह आई/ओ या अन्य अवरुद्ध कॉल के दौरान नमूने लेगा या नहीं। –
... ध्यान दें कि नमूनाकरण की आवृत्ति को तेज़ होने की आवश्यकता नहीं है, लेकिन जब तक आप उन लोगों के लिए अंधेरा नहीं होना चाहते हैं, तब तक कॉल अवरुद्ध करने के दौरान नमूना करने में सक्षम होना आवश्यक है। –