2013-06-13 6 views
12

का कारण मैं एंड्रॉइड 4.2.2 पर एक गैर-रूट वाले नेक्सस 4 पर सिस्ट्रेस के साथ अपने ऐप के प्रदर्शन को माप रहा हूं। मैं उन रिपोर्टों में कुछ चीजें देख रहा हूं जो मुझे समझ में नहीं आती हैं और मैं सोच रहा हूं कि क्या वे सिस्ट्रेस बग हो सकते हैं या यदि इन लक्षणों के लिए किसी को भी संभावित रूट कारणों के बारे में पता हो। एक रन प्रदर्शन ट्रॉवर्सल रिकर्सन, लंबे ईगल बफर स्वैप समय

Link to Report के अंत में performTraversals तहत

1- बड़े प्रत्यावर्तन - कृपया रन (~ 18s) के अंत में बड़ा वक्र देखते हैं। मेरी समझ यह थी कि प्रदर्शन ट्रैवर्सल फ्रेमवर्क स्तर पर है, जहां यह उपयोगकर्ता इंटरफ़ेस का एक फ्रेम बनाता है। तो मुझे यह समझ में नहीं आया कि इसके नीचे रिकर्सिव कॉल हो सकते हैं। इसके अलावा, क्योंकि मुझे दौड़ के अंत में इस तरह के घातीय स्टैकिंग मिलती है, मैंने माना कि यह वास्तव में रन के अंत में डेटा के लिए सिस्ट्रेस में सिर्फ एक दोष था। क्या इस प्रकार का रिकर्सन संभव है? इसका क्या मतलब है? दिलचस्प व्यवहार 12 सेकंड की सीमा के आसपास शुरू कर -

2- लंबे बफर स्वैप बार

Link to Report साथ एक रन के बीच में performTraversals प्रत्यावर्तन। जब मैंने दौड़ के बीच में कुछ ऐसा देखा, तो मुझे ऐसा लगा कि शायद मुझे यह लिखना नहीं चाहिए। साथ ही, मैंने इस बात का पता लगाने की कोशिश की कि कितने लंबे समय तक इस तरह के लंबे eglSwapBuffers/queueBuffer (मेरा ऐप ओपनजीएल का उपयोग नहीं करता है और सीधे ढांचे का उपयोग करता है) का कोई फायदा नहीं हुआ, जब एक सहयोगी ने मुझे इसे अनदेखा करने के लिए कहा क्योंकि स्वैपिंग बफर हमेशा तात्कालिक होंगे। क्या इसके लिए और कुछ हो सकता है? क्या यहां जांच करने के लिए कुछ है?

उत्तर

4

रिपोर्ट # 1 में, सीपीयू 0 के लिए ट्रेस बफर लगभग 5 सेकंड में भर गया ("सीपीयू 0" लाइन में डेटा की अनुपस्थिति पर ध्यान दें)। आप उन चीजों को देखना शुरू कर देंगे जो शुरू होते हैं और कभी खत्म नहीं होते हैं, क्योंकि अंतिम रिकॉर्ड रिकॉर्ड नहीं किया गया था। यही कारण है कि आप बड़े "प्रदर्शन ट्रैवर्सल (समाप्त नहीं हुआ)" ब्लब्स प्राप्त करते हैं।

रिपोर्ट # 2 में एक ही कहानी - में लगभग 10 सेकंड बाहर भाग

आप "बी" झंडा, उदा बफर आकार बढ़ा सकते हैं। -b 8192 आपको 8 एमबी बफर देगा। डिफ़ॉल्ट आकार 2 एमबी है।

+0

आकर्षक, धन्यवाद! मैंने पहले यह माना था कि सिस्ट्रेस एंड्रॉइड के साथ आंतरिक रूप से एक बफर भर रहा था और फिर इसे अतुल्यकालिक रूप से फ़्लश कर रहा था क्योंकि यह पूर्ण होने के करीब आता है। लेकिन मैं आपके उत्तर से इकट्ठा करता हूं कि यह गलत है, और बफर बस भर जाते हैं और जब ऐसा होता है तो यह प्रभावी ढंग से ट्रेसिंग बंद कर देता है। मैं यह भी इकट्ठा करता हूं कि यह एक प्रति-सीपीयू आधार पर है, इसलिए सीपीयू 1 पर गतिविधि सीपीयू 0 भरने के बाद पता चल सकती है अगर सीपीयू 1 में ट्रेस की शुरुआत के बाद से कम गतिविधि होती है। क्या यह सही है? –

+0

हां। प्रत्येक सीपीयू कोर में एक अलग बफर होता है ताकि लॉगिंग कोड ताले या परमाणु ओप का उपयोग किए बिना इसे लिख सके। – fadden

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