2013-01-08 14 views
5

एक नोडजेस प्रोग्राम प्रोफाइल करते समय, मुझे लगता है कि 61% टिक 'अज्ञात' (नीचे देखें) के कारण होती हैं। यह क्या हो सकता है मुझे क्या खोजना चाहिए?नोडज प्रोफाइलिंग; 'अज्ञात' क्या हो सकता है

जीआर,

कोएन

Statistical profiling result from node, (14907 ticks, 9132 unaccounted, 0 excluded). 

[Unknown]: 
    ticks total nonlib name 
    9132 61.3% 

[Shared libraries]: 
    ticks total nonlib name 
    1067 7.2% 0.0% C:\Windows\SYSTEM32\ntdll.dll 
    55 0.4% 0.0% C:\Windows\system32\kernel32.dll 

[JavaScript]: 
    ticks total nonlib name 
    1381 9.3% 10.0% LazyCompile: *RowDataPacket.parse D:\MI\packet.js:9 
...... 

उत्तर

2

आप अपने v8.log को संसाधित करने के लिए अपने आवेदन को चलाने के लिए नोड.जेएस के 64 बिट संस्करण और डी 8 खोल के 32 बिट बिल्ड का उपयोग कर रहे हैं। डी 8 खोल के लिए निर्माण लक्ष्य के रूप में ia32 के साथ नोड.जेएस के 32 बिट संस्करण या नोड के 64 बिट संस्करण के रूप में या तो x64 के साथ डी 8 खोल निर्माण लक्ष्य को आपकी समस्या का समाधान करना चाहिए।

2

आपको लगता है कि निर्भरता का निर्माण किया है किसी भी मॉड्यूल लोड हो रहा है कर रहे हैं?

मूल रूप से "अज्ञात" द्वारा इसका अर्थ है "के लिए अनगिनत" (अधिक स्पष्टीकरण के लिए tickprocessor.js देखें)। उदाहरण के लिए, जीसी "scavenge, start, ..." जैसे संदेशों को प्रिंट करेगा लेकिन यह logreader.js द्वारा अपरिचित है।

यह है कि आपके v8.log फ़ाइल को पार्स करने का उपयोग कर पुस्तकालय की रूपरेखा पता करने के लिए मदद मिलेगी।

अद्यतन

node-tick पैकेज एक वर्ष से अधिक अद्यतन नहीं किया गया है और शायद हाल prof आदेशों का एक बहुत याद आ रही है। इसके बजाय node-profiler का उपयोग करने का प्रयास करें। यह नोड के रखरखाव में से एक द्वारा बनाया गया है। और यदि आप पूर्ण सर्वोत्तम परिणाम चाहते हैं तो आपको node-gyp का उपयोग करके इसे बनाना होगा।

अद्यतन

मैं node-profiler (master, नहीं नवीनतम टैग के बारे में नवीनतम) से नवीनतम का उपयोग कर v8.log उत्पादन पार्स और http://pastebin.com/pdHDPjzE

पर परिणाम तैनात मुझे एक का कहना है की अनुमति दें गए कुछ प्रमुख प्रविष्टियों के बारे में जो आधे रास्ते नीचे दिखाई देते हैं:

[GC]: 
    ticks total nonlib name 
    2063 26.2% 

[Bottom up (heavy) profile] 
6578 83.4% c:\node\node.exe 
1812 27.5% LazyCompile: ~parse native json.js:55 
1811 99.9%  Function: ~<anonymous> C:\workspace\repositories\asyncnode_MySQL\lib\MySQL_DB.js:41 
736 11.2% Function: ~Buffer.toString buffer.js:392 

तो सभी स्क्रिप्ट प्रकार के 26.2% कचरा col में खर्च किया गया था रूपांतर। जो यह होना चाहिए उससे कहीं अधिक है। हालांकि यह Buffer.toString पर कितना समय व्यतीत होता है, इस पर अच्छी तरह से संबंधित है। यह है कि कई बफ़र तो बनाए जा रहे हैं, तो तार में बदल जाती है, दोनों gc'd है जब वे गुंजाइश छोड़ आवश्यकता होगी।

मैं भी उत्सुक हूं कि LazyCompile में json.js के लिए इतना समय क्यों खर्च किया जाता है। या तो, json.js क्यों नोड आवेदन में आवश्यक हो सकता है?

आप प्रदर्शन धुन आपके आवेदन मैं क्या कर और देखने के लिए पर कि देना अच्छा नीचे दिए गए निर्देशों कुछ लिंक शामिल कर रहा हूँ मदद करने के लिए।

मूल बातें के साथ अच्छा स्लाइड डेक:
https://mkw.st/p/gdd11-berlin-v8-performance-tuning-tricks/#1

अधिक अनुकूलन तकनीकों का उन्नत उदाहरण:
http://floitsch.blogspot.com/2012/03/optimizing-for-v8-introduction.html

बंद का बेहतर उपयोग:
http://mrale.ph/blog/2012/09/23/grokking-v8-closures-for-fun.html

अब जहाँ तक तुम क्यों एक ही आउटपुट प्राप्त नहीं कर सका।यदि आपने node-profiler बनाया और उपयोग किया है और nprofmaster से प्रदान किया गया है और यह अभी भी काम नहीं करता है तो मुझे लगता है कि विंडोज़ पर होने के साथ इसका कुछ संबंध है। गिटहब पर एक बग दर्ज करने के बारे में सोचें और देखें कि क्या वह आपकी मदद करेगा।

+0

मैं एनपीएम 'टिक' पैकेज का उपयोग कर रहा हूं – coen

+0

मैंने https://github.com/bnoordhuis/node-profiler का उपयोग करने का प्रयास किया है, लेकिन परिणाम वही बना हुआ है। – coen

+0

@coen क्या आप पेस्टबिन या अपनी v8.log फ़ाइल को कुछ कर सकते हैं। यह आपकी मदद करने के लिए यह सबसे आसान तरीका होगा। –

0

पर समर्थन की रूपरेखा के साथ v8 का निर्माण करने का प्रयास करें:

scons prof=on d8 

सुनिश्चित करें कि आप फिर tools/linux-tick-processor path/to/v8.log आप पूर्ण प्रोफ़ाइल जानकारी दिखाना चाहिए संस्करण v8

के संस्करण के लिए इसी के साथ चलाने के node --prof करें।

+1

अब gyp के पक्ष में scons को हटा दिया गया है। –

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