2011-05-08 9 views
6

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

प्रतिक्रिया समय खराब होने पर हॉट स्पॉट का पता लगाना मुश्किल है। मेरे मामले में हालांकि प्रतिक्रिया समय कोई समस्या नहीं है। यह सिर्फ इतना है कि सीपीयू लोड वास्तव में उच्च है (आश्चर्यजनक रूप से उच्च) कम समय के दौरान इस विशेष अनुरोध को संसाधित किया जाता है।

मैं पिन-पॉइंट कैसे कर सकता हूं कि कौन सी कक्षा (एस)/विधि इस कारण हैं? मुझे लगता है कि मैं जो खोज रहा हूं वह कुछ प्रकार की सूची है जो मुझे बताती है कि कितने सीपीयू चक्र एक विधि की प्रसंस्करण की आवश्यकता है - या तो।

+1

विधि हॉटस्पॉट जहां मैं देखता हूं। क्या कोई कारण है कि आप इस नतीजे पर विश्वास नहीं करते? जब कोई अनुरोध किया जा रहा है, तो क्या आप उम्मीद नहीं करेंगे कि सीपीयू 100% (या कम से कम एक पूर्ण कोर) हो? –

+0

हां, ज़ाहिर है कि आप सही हैं। सीपीयू चक्रों की मापने और निष्पादन समय को मापने के लिए सीधे [निष्पादन समय = (चक्रों की संख्या * चक्र प्रति समय) + I/O प्रतीक्षा करें और इसी तरह से संबंधित हैं। –

उत्तर

5

सीपीयू लोड अनिवार्य रूप से सीपीयू चक्रों की संख्या इंगित करता है जहां सीपीयू के पास केवल वर्चुअल अंगूठे के बजाय कुछ करने के लिए कुछ करना था।

तो यदि आपका अनुरोध वास्तव में वास्तविक काम करता है (डिस्क I/O की प्रतीक्षा करने के बजाए) तो यह उम्मीद की जा सकती है कि सीपीयू के काम के दौरान काम पूरा होने पर लोड अधिक हो जाता है।

जिस चीज को आप देखना चाहते हैं वह सीपीयू चक्र से बाहर चल रहा है, जब प्रतिक्रिया समय चढ़ना शुरू होता है।

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

+1

"केवल वर्चुअल अंगूठे twiddling के बजाय" :) +1 – Eugene

1

हालांकि यह प्रसंस्करण है, यह 100% पर है। जबकि यह इंतजार कर रहा है (जैसे I/O के लिए) यह 0% पर है। कोई भी बीच में नहीं है। जब कोई प्रक्रिया 100% से कम लेती है, तो यह अंतिम एन मिलीसेकंड पर रोलिंग औसत है।

यदि इसे और अधिक कुशल बनाने का कोई तरीका है, तो इससे कम प्रतिशत (आवश्यक) कम समय लगेगा।

यदि आप इसे कम समय लेना चाहते हैं, तो इसे पर्याप्त वर्कलोड और try this दें।

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