Erlang 21 - 4. fprof - The File Trace Profiler

4 फिटर - फाइल ट्रेस प्रोफाइलर




erlang

4 फिटर - फाइल ट्रेस प्रोफाइलर

fprof एक प्रोफाइलिंग टूल है जिसका उपयोग विभिन्न प्रसंस्करण कार्यों की खपत और किन प्रक्रियाओं में एक तस्वीर प्राप्त करने के लिए किया जा सकता है।

प्रोफाइलिंग डेटा एकत्र करने के लिए टाइमस्टैम्प्स के साथ fprof का उपयोग करना है। इसके अलावा किसी भी मॉड्यूल के विशेष संकलन की कोई आवश्यकता नहीं है।

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

प्रोफाइलिंग अनिवार्य रूप से 3 चरणों में की जाती है:

1
ट्रेसिंग; फ़ाइल करने के लिए, जैसा कि पिछले पैराग्राफ में बताया गया है।
2
रूपरेखा; ट्रेस फ़ाइल पढ़ी जाती है और कच्चे प्रोफाइल डेटा को नोड पर एक आंतरिक रैम स्टोरेज में एकत्र किया जाता है। इस चरण के दौरान ट्रेस डेटा को फ़ाइल या कंसोल में पाठ प्रारूप में डंप किया जा सकता है।
3
विश्लेषण हो रहा है; कच्चे प्रोफ़ाइल डेटा को फ़ाइल स्वरूप या कंसोल में पाठ स्वरूप में सॉर्ट और डंप किया जाता है।

चूंकि fprof फ़ाइल में ट्रेस का उपयोग करता है, रनटाइम प्रदर्शन में गिरावट कम से कम है, लेकिन अभी भी नगण्य से बहुत दूर है, विशेष रूप से उन कार्यक्रमों के लिए नहीं जो अपने आप से फ़ाइल सिस्टम का भारी उपयोग करते हैं। जहाँ आप ट्रेस फ़ाइल रखते हैं वह भी महत्वपूर्ण है, जैसे कि Solaris /tmp पर आमतौर पर एक अच्छा विकल्प होता है, जबकि कोई भी NFS माउंटेड डिस्क एक घटिया विकल्प होता है।

Fprof फ़ाइल चरण को भी छोड़ सकता है और अपनी खुद की एक ट्रैसर प्रक्रिया को ट्रेस करता है जो रनटाइम में प्रोफाइलिंग करता है।

निम्नलिखित अनुभाग Fprof के साथ प्रोफ़ाइल करने के तरीके के कुछ उदाहरण दिखाते हैं। संदर्भ मैनुअल fprof(3) भी देखें।

4.1 स्रोत कोड से रूपरेखा

यदि आप स्रोत कोड को संपादित और पुन fprof:trace(start) कर सकते हैं, तो कोड को प्रोफाइल किए जाने से पहले और बाद में fprof:trace(stop) fprof:trace(start) और fprof:trace(stop) सम्मिलित करना सुविधाजनक है। सभी प्रायोजित प्रक्रियाओं का भी पता लगाया जाता है। यदि आप डिफॉल्ट की कोशिश के fprof:trace(start, "my_fprof.trace") कुछ अन्य फ़ाइलनाम चाहते हैं fprof:trace(start, "my_fprof.trace")

फिर ट्रेस फ़ाइल पढ़ें और ग़ैर-डिफ़ॉल्ट फ़ाइल नाम के लिए fprof:profile() , या शायद fprof:profile(file, "my_fprof.trace") साथ कच्चे प्रोफ़ाइल डेटा बनाएं।

अंत में fprof:analyse() साथ कंसोल पर डंप की गई एक सूचनात्मक तालिका fprof:analyse() , या fprof:analyse(dest, []) साथ फ़ाइल पर fprof:analyse(dest, []) , या शायद fprof:analyse([{dest, "my_fprof.analysis"}, {cols, 120}]) गैर-डिफ़ॉल्ट फ़ाइल नाम पर एक व्यापक लिस्टिंग के लिए।

फ़ंक्शन का trace , profile और analyse लिए अधिक विकल्पों और तर्कों के लिए fprof(3) मैनुअल पेज देखें।

४.२ एक समारोह का रूपरेखा तैयार करना

यदि आपके पास एक फ़ंक्शन है जो उस कार्य को करता है जिसे आप प्रोफाइल करना चाहते हैं, और फ़ंक्शन लौटता है जब प्रोफाइलिंग बंद होनी चाहिए, तो fprof:apply(Module, Function, Args) का उपयोग करना सुविधाजनक है fprof:apply(Module, Function, Args) और अनुरेखण चरण के लिए संबंधित।

यदि फ़ंक्शन के वापस आने के बाद ट्रेसिंग जारी रहना चाहिए, उदाहरण के लिए यदि यह एक आरंभिक फ़ंक्शन है जो प्रक्रियाओं को प्रोफाइल करता है, तो आप fprof:apply(M, F, Args, [continue | OtherOpts]) उपयोग कर सकते हैं fprof:apply(M, F, Args, [continue | OtherOpts]) । ट्रेसिंग का उपयोग fprof:trace(stop) का उपयोग करके बाद में एक उपयुक्त समय पर रोका जाना है।

4.3 तत्काल प्रोफाइलिंग

कच्ची प्रोफ़ाइल डेटा बनाने वाली प्रोफाइलिंग प्रक्रिया में तुरंत ट्रेस करना भी संभव है, जो कि शॉर्ट सर्किट ट्रेसिंग और प्रोफाइलिंग चरणों को शॉर्ट सर्किट करना है ताकि फाइल सिस्टम का उपयोग न हो।

कुछ इस तरह से करें:

{ok, Tracer} = fprof:profile(start),
fprof:trace([start, {tracer, Tracer}]),
%% Code to profile
fprof:trace(stop);

यह फाइलसिस्टम पर कम लोड डालता है, लेकिन एर्लांग रनटाइम सिस्टम पर बहुत अधिक है।