मेमोरी की खपत का विश्लेषण करना

किसी ऐप्लिकेशन की मेमोरी के इस्तेमाल से जुड़ी विशेषताएं, उसकी परफ़ॉर्मेंस का अहम हिस्सा होती हैं. उपलब्ध जीपीयू काउंटर की जानकारी देखकर, इन विशेषताओं का विश्लेषण करने के लिए, सिस्टम प्रोफ़ाइलर का इस्तेमाल किया जा सकता है.

Adreno डिवाइस

Adreno डिवाइसों पर, सबसे पहले जीपीयू के एक फ़्रेम के रेंडर होने में लगने वाले समय को हाइलाइट करें. इसके लिए, सीपीयू और जीपीयू के फ़्रेम को प्रोसेस करने में लगने वाले समय का अनुमान लगाना लेख में बताया गया तरीका अपनाएं. उस पेज पर बताए गए तरीके का इस्तेमाल करें. इसमें, आपके फ़्रेम टाइम की सीमाओं के लिए जीपीयू के इस्तेमाल का प्रतिशत या इसी तरह के काउंटर ट्रैक का इस्तेमाल करना शामिल है. ऐसा इसलिए, क्योंकि सभी काउंटर ट्रैक, एक ही टाइमिंग तकनीक का इस्तेमाल करते हैं. साथ ही, ये मेमोरी के इस्तेमाल का ज़्यादा सटीक अनुमान लगाने में मदद करेंगे. इसकी तुलना में, जीपीयू स्लाइस से ली गई फ़्रेम टाइम की सीमाओं का इस्तेमाल करने पर, काउंटर ट्रैक के डेटा से अलग डेटा इकट्ठा किया जाता है.

इस्तेमाल से जुड़ी जानकारी देने वाला ट्रैक, इसके नीचे मौजूद काउंटर के साथ लाइन अप हो रहा है
पहली इमेज. इस्तेमाल का ट्रैक, इसके नीचे मौजूद काम के काउंटर के साथ लाइन अप हो रहा है

पढ़ने/लिखने की कुल संख्या

प्रोफ़ाइलर में एक फ़्रेम को हाइलाइट करने के बाद, कुल पढ़ने की संख्या (बाइट/सेकंड) और कुल लिखने की संख्या (बाइट/सेकंड) काउंटर देखें. इन काउंटर से, यह पता चलता है कि एक फ़्रेम के दौरान, मेमोरी बस से कितना डेटा गुज़र रहा है. बस से भेजे जाने वाले डेटा की मात्रा को कम करने की कोशिश करें, क्योंकि मोबाइल डिवाइसों पर बैटरी खत्म होने की एक बड़ी वजह, मेमोरी बैंडविथ होती है.

कुल काउंटर को पढ़ने और लिखने की अनुमति
दूसरी इमेज. कुल पढ़ने और लिखने की संख्या के काउंटर

वर्टेक्स और टेक्सचर डेटा के लिए इस्तेमाल की गई बैंडविथ का पता लगाने के लिए, वर्टेक्स मेमोरी रीड (बाइट/सेकंड) और टेक्सचर मेमोरी रीड (बाइट/सेकंड) काउंटर की भी जांच की जा सकती है.

वर्टेक्स + टेक्सचर मेमोरी रीड काउंटर
तीसरी इमेज. वर्टेक्स और टेक्सचर मेमोरी रीड काउंटर

इन वैल्यू के लिए, “अच्छा” क्या है, यह इस बात पर निर्भर करता है कि आपके ऐप्लिकेशन में किस तरह के वर्कलोड दिखते हैं. उदाहरण के लिए, 2D ऐप्लिकेशन में, टेक्सचर मेमोरी रीड बैंडविथ का इस्तेमाल अपेक्षाकृत ज़्यादा (~2+GB/s) हो सकता है. हालांकि, वर्टेक्स मेमोरी बैंडविथ बहुत कम (~50MB/s) हो सकती है. ज़्यादा जानकारी के लिए, वर्टेक्स मेमोरी बैंडविथ का विश्लेषण करना और टेक्सचर मेमोरी बैंडविथ के इस्तेमाल का विश्लेषण करना लेख पढ़ें.

फ़ेच स्टॉल

वर्टेक्स फ़ेच स्टॉल का प्रतिशत, टेक्सचर फ़ेच स्टॉल का प्रतिशत, और सिस्टम मेमोरी पर स्टॉल का प्रतिशत काउंटर देखें. इनसे आपको हमारे ऐप्लिकेशन की मेमोरी की परफ़ॉर्मेंस के बारे में कुछ जानकारी मिलेगी. अगर वैल्यू करीब 5% से ज़्यादा हैं, तो इसका मतलब है कि आपका ऐप्लिकेशन, मेमोरी में डेटा को सही तरीके से नहीं रख रहा है या कैश मेमोरी का फ़ायदा लेने के लिए, अपने डेटा को सही तरीके से ऐक्सेस नहीं कर रहा है. इस तरह के एसेट के लिए मेमोरी के इस्तेमाल को बेहतर बनाने के बारे में जानने के लिए, वर्टेक्स मेमोरी बैंडविथ का विश्लेषण करना और टेक्सचर मेमोरी बैंडविथ के इस्तेमाल का विश्लेषण करना लेख पढ़ें.

मेमोरी स्टॉल काउंटर
चौथी इमेज. मेमोरी स्टॉल काउंटर

Mali डिवाइस

Mali डिवाइसों पर, सबसे पहले जीपीयू के एक फ़्रेम के रेंडर होने में लगने वाले समय को हाइलाइट करें. इसके लिए, सीपीयू और जीपीयू के फ़्रेम को प्रोसेस करने में लगने वाले समय का अनुमान लगाना लेख में बताया गया तरीका अपनाएं. उस पेज पर बताए गए तरीके का इस्तेमाल करें. इसमें, आपके फ़्रेम टाइम की सीमाओं के लिए जीपीयू के इस्तेमाल का प्रतिशत या इसी तरह के काउंटर ट्रैक का इस्तेमाल करना शामिल है. ऐसा इसलिए, क्योंकि सभी काउंटर ट्रैक, एक ही टाइमिंग तकनीक का इस्तेमाल करते हैं. साथ ही, ये मेमोरी के इस्तेमाल का ज़्यादा सटीक अनुमान लगाने में मदद करेंगे. इसकी तुलना में, जीपीयू स्लाइस से ली गई फ़्रेम टाइम की सीमाओं का इस्तेमाल करने पर, काउंटर ट्रैक के डेटा से अलग डेटा इकट्ठा किया जाता है.

इस्तेमाल की जानकारी देने वाला ट्रैक, नीचे दिए गए काउंटर के साथ लाइन अप हो रहा है
पांचवी इमेज. इस्तेमाल का ट्रैक, इसके नीचे मौजूद उन काउंटर के साथ लाइन अप हो रहा है जिनमें आपकी दिलचस्पी है

कुल बाहरी आउटपुट

सिस्टम प्रोफ़ाइलर में एक फ़्रेम को हाइलाइट करने के बाद, आउटपुट एक्सटर्नल रीड बाइट आउटपुट एक्सटर्नल राइट बाइट काउंटर देखें. इन काउंटर से, यह पता चलता है कि एक फ़्रेम के दौरान, मेमोरी बस से कितना डेटा गुज़र रहा है. बस से भेजे जाने वाले डेटा की मात्रा को कम करने की कोशिश करें, क्योंकि मोबाइल डिवाइसों पर बैटरी खत्म होने की एक बड़ी वजह, मेमोरी बैंडविथ होती है.

आउटपुट बाहरी काउंटर ट्रैक करता है
छठी इमेज. आउटपुट एक्सटर्नल काउंटर ट्रैक

कुल इंटरनल इनपुट

ऐसे काउंटर भी हैं जिनसे आपको कैश मेमोरी के बारे में जानकारी मिलती है. आपकी दिलचस्पी वाले काउंटर, “इनपुट इंटरनल [रीड|राइट] स्टॉल साइकल” हैं. इनकी वैल्यू ज़्यादा होने का मतलब है कि आपको कैश मेमोरी का फ़ायदा मिल रहा है. हालांकि, रीड के बहुत ज़्यादा अनुरोध किए जा रहे हैं. इस वजह से, शेडर कोड, मेमोरी को ऐक्सेस करने के लिए इंतज़ार कर रहा है.

इनपुट इंटरनल काउंटर ट्रैक
सातवीं इमेज. इनपुट इंटरनल काउंटर ट्रैक

फ़ेच स्टॉल

काउंटर का अगला सेट, वर्टेक्स प्रीफ़ेचर स्टॉल साइकल और टेक्सचर फ़ेच स्टॉल काउंटर हैं. इनसे आपको हमारे ऐप्लिकेशन की मेमोरी की परफ़ॉर्मेंस के बारे में कुछ जानकारी मिलेगी. अगर आपको ~5% से ज़्यादा वैल्यू दिख रही हैं, तो इसका मतलब है कि आपका ऐप्लिकेशन, मेमोरी में डेटा को सही तरीके से नहीं रख रहा है या कैश मेमोरी का फ़ायदा लेने के लिए, अपने डेटा को सही तरीके से ऐक्सेस नहीं कर रहा है. इस तरह के एसेट के लिए मेमोरी के इस्तेमाल को बेहतर बनाने के बारे में जानने के लिए, [वर्टेक्स|टेक्सचर] मेमोरी बैंडविथ का विश्लेषण करना लेख पढ़ें

स्टॉल के काउंटर ट्रैक फ़ेच करना
आठवीं इमेज. फ़ेच स्टॉल काउंटर ट्रैक