सीपीयू और जीपीयू के फ़्रेम को प्रोसेस करने में लगने वाले समय (फ़्रेम टाइम) का अनुमान लगाना ज़रूरी है. इससे आपके ऐप्लिकेशन की परफ़ॉर्मेंस को समझा जा सकता है और बॉटलनेक का पता लगाया जा सकता है. AGI की मदद से किसी ऐप्लिकेशन की प्रोफ़ाइलिंग करने पर, System Profiler, ट्रेस डेटा उपलब्ध कराता है. इसका इस्तेमाल करके, फ़्रेम टाइम का अनुमान लगाया जा सकता है.
सीपीयू के काम करने का समय
सीपीयू के काम करने का कुल समय
सीपीयू के काम करने का कुल समय मेज़र करने के लिए,
वह समयावधि चुनें
जिसमें एक के बाद एक फ़्रेम सबमिट करने वाले इवेंट के बीच का समय शामिल हो. फ़्रेम सबमिट करने वाले इवेंट, eglSwapBuffers (OpenGL के लिए) और vkQueuePresentKHR (Vulkan के लिए) हैं.
eglSwapBuffer के दो इवेंट के बीच का समय.
vkQueuePresentKHR के दो इवेंट के बीच का समय.यह मेज़रमेंट, सीपीयू के काम करने के कुल समय का अनुमान है. हालांकि, यह ज़रूरी नहीं है कि यह सीपीयू के काम करने के समय को दिखाए. उदाहरण के लिए, GPU-बाउंड ऐप्लिकेशन में, सीपीयू, नया फ़्रेम सबमिट करने से पहले, GPU के काम पूरा होने का इंतज़ार कर सकता है. ऐसा अक्सर तब होता है, जब dequeueBuffer, eglSwapBuffer (OpenGL के लिए) या vkQueuePresent (Vulkan के लिए) इवेंट, सीपीयू के काम करने के समय का ज़्यादातर हिस्सा ले लेता है.
इंतज़ार में लगने वाला समय, सीपीयू के काम करने के कुल समय में शामिल होता है, लेकिन सीपीयू के काम करने के समय में नहीं.
eglSwapBuffer इवेंट के दौरान, सीपीयू के काम न करने का समय ज़्यादा होना.dequeueBuffer
सीपीयू के काम करने का समय
सीपीयू के काम करने के समय से यह पता चलता है कि सीपीयू, ऐप्लिकेशन का कोड कब चला रहा है और कब वह काम नहीं कर रहा है.
सीपीयू के काम करने का समय मेज़र करने के लिए, सीपीयू इवेंट के ठीक ऊपर मौजूद चालू स्लाइस देखें. चालू स्थिति में मौजूद, फ़्रेम सबमिट करने वाले दो इवेंट के बीच के ट्रेस के सभी हिस्सों को गिनें. पक्का करें कि आपने काम करने वाले थ्रेड शामिल किए हों.
सीपीयू के काम करने का समय मेज़र करने का एक और तरीका है. इसके लिए, सीपीयू ट्रैक में ऐप्लिकेशन स्लाइस देखें. इन स्लाइस से पता चलता है कि सीपीयू कब काम कर रहा है. ये चालू स्लाइस से मेल खाती हैं.
ऐप्लिकेशन स्लाइस की पहचान करने के लिए, अपने ऐप्लिकेशन में ATrace मार्कर जोड़े जा सकते हैं. इससे, System Profiler के सीपीयू ट्रैक में मार्कर दिखेंगे.
जीपीयू के फ़्रेम को प्रोसेस करने में लगने वाले समय का अनुमान लगाना
जीपीयू के फ़्रेम को प्रोसेस करने में लगने वाले समय का अनुमान लगाने के लिए, System Profiler में जीपीयू स्लाइस या जीपीयू काउंटर का इस्तेमाल किया जा सकता है. जीपीयू स्लाइस का इस्तेमाल करने पर, अनुमान ज़्यादा सटीक होता है.
जीपीयू स्लाइस
अगर System Profiler में जीपीयू स्लाइस की जानकारी उपलब्ध है, तो जीपीयू के फ़्रेम को प्रोसेस करने में लगने वाले समय की सटीक जानकारी पाई जा सकती है. इसके लिए, यह मेज़र करें कि आपका ऐप्लिकेशन, किसी एक फ़्रेम से जुड़े टास्क पर काम करने में कुल कितना समय लेता है.
Mali डिवाइस
Mali डिवाइसों पर, जीपीयू स्लाइस में फ़्रैगमेंट, नॉन-फ़्रैगमेंट, और कभी-कभी सप्लीमेंट्री नॉन-फ़्रैगमेंट ट्रैक होते हैं. कम जटिल फ़्रेम के लिए, फ़्रैगमेंट और नॉन-फ़्रैगमेंट का काम क्रम से होता है. इसलिए, जीपीयू के काम करने के समय के बीच के गैप देखकर, एक फ़्रेम के काम को दूसरे फ़्रेम के काम से अलग किया जा सकता है.
इसके अलावा, अगर आपको जीपीयू को सबमिट किए जा रहे काम के बारे में पता है, तो सबमिट किए गए रेंडर पास के पैटर्न की पहचान करके, यह जानकारी पाई जा सकती है कि कोई फ़्रेम कब शुरू और खत्म होता है.
ऐसे ऐप्लिकेशन जिनके जीपीयू वर्कफ़्लो को ज़्यादा पैरललाइज़ किया गया है उनके लिए, जीपीयू के फ़्रेम को प्रोसेस करने में लगने वाले समय की जानकारी पाने के लिए, हर स्लाइस के Selection पैनल में, एक ही submissionID वाले सभी फ़्रेम देखें.
Vulkan पर आधारित ऐप्लिकेशन के लिए, एक फ़्रेम कंपोज़ करने के लिए, एक से ज़्यादा सबमिशन का इस्तेमाल किया जा सकता है. Vulkan Events ट्रैक का इस्तेमाल करके, सबमिशन आईडी ट्रैक करें. इसमें हर सबमिशन के लिए एक स्लाइस होती है. सबमिशन स्लाइस चुनने पर, सबमिशन से जुड़ी जीपीयू की सभी गतिविधि वाली स्लाइस हाइलाइट हो जाएंगी.
Adreno डिवाइस
Adreno डिवाइसों पर, जीपीयू स्लाइस GPU Queue 0 ट्रैक में दिखती हैं. इन्हें हमेशा क्रम से दिखाया जाता है. इसलिए, किसी फ़्रेम के रेंडर पास को दिखाने वाली सभी स्लाइस देखी जा सकती हैं. साथ ही, इनका इस्तेमाल करके, जीपीयू के फ़्रेम को प्रोसेस करने में लगने वाले समय को मेज़र किया जा सकता है.
Mali डिवाइसों के लिए बताए गए तरीके की तरह ही, अगर ऐप्लिकेशन Vulkan का इस्तेमाल कर रहा है, तो Vulkan Events ट्रैक में, फ़्रेम को एक्ज़ीक्यूट करने के लिए सबमिट किए जा रहे काम की जानकारी मिलती है. रेंडर पास को हाइलाइट करने के लिए, फ़्रेम से जुड़ी Vulkan Events स्लाइस पर क्लिक करें.
कुछ मामलों में, जीपीयू के फ़्रेम की सीमाओं को अलग-अलग करना मुश्किल होता है. ऐसा इसलिए, क्योंकि ऐप्लिकेशन, जीपीयू पर ज़्यादा निर्भर होता है. इन मामलों में, अगर आपको जीपीयू को सबमिट किए जा रहे काम के बारे में पता है, तो रेंडर पास के पैटर्न की पहचान की जा सकती है. साथ ही, इस जानकारी से फ़्रेम की सीमाओं का पता लगाया जा सकता है.
जीपीयू काउंटर
अगर किसी ट्रेस में, जीपीयू स्लाइस की जानकारी उपलब्ध नहीं है, तो GPU counter ट्रैक का इस्तेमाल करके, जीपीयू के फ़्रेम को प्रोसेस करने में लगने वाले समय का अनुमान लगाया जा सकता है.
Mali डिवाइस
Mali डिवाइसों पर, GPU utilization ट्रैक का इस्तेमाल करके, ऐसे ऐप्लिकेशन के लिए जीपीयू के फ़्रेम को प्रोसेस करने में लगने वाले समय का अनुमान लगाया जा सकता है जो जीपीयू पर ज़्यादा निर्भर नहीं है. जब ऐप्लिकेशन, जीपीयू पर कम निर्भर होते हैं, तो उनमें लगातार ज़्यादा गतिविधि के बजाय, जीपीयू की गतिविधि के ज़्यादा और कम होने की नियमित अवधियां होती हैं. GPU utilization ट्रैक का इस्तेमाल करके, जीपीयू के फ़्रेम को प्रोसेस करने में लगने वाले समय का अनुमान लगाने के लिए, ट्रैक में ज़्यादा गतिविधि वाली अवधियों की अवधि मेज़र करें.
अगर ऐप्लिकेशन, जीपीयू पर ज़्यादा निर्भर है, तो जीपीयू यूटिलाइज़ेशन लगातार बहुत ज़्यादा हो सकता है. इस मामले में, जीपीयू की गतिविधि की निगरानी करने और जीपीयू के फ़्रेम को प्रोसेस करने में लगने वाले समय का अनुमान लगाने के लिए, fragment queue utilization और non-fragment queue utilization ट्रैक का इस्तेमाल किया जा सकता है. फ़्रैगमेंट और नॉन-फ़्रैगमेंट ट्रैक में पैटर्न देखकर, इस बात का अनुमान लगाया जा सकता है कि किसी फ़्रेम की सीमाएं कहां हैं. साथ ही, इसका इस्तेमाल करके, जीपीयू के फ़्रेम को प्रोसेस करने में लगने वाले समय को मेज़र किया जा सकता है.
Adreno डिवाइस
Adreno डिवाइसों पर, अगर ऐप्लिकेशन, जीपीयू पर ज़्यादा निर्भर नहीं है, तो जीपीयू के फ़्रेम को प्रोसेस करने में लगने वाले समय का अनुमान उसी तरीके से लगाया जा सकता है जैसा कि Mali डिवाइसों के लिए पिछले सेक्शन में बताया गया है.
अगर ऐप्लिकेशन, जीपीयू पर ज़्यादा निर्भर है और ऐप्लिकेशन में जीपीयू यूटिलाइज़ेशन प्रतिशत लगातार ज़्यादा है, तो Vertex Instructions / Second और Fragment Instructions / Second ट्रैक का इस्तेमाल करके, जीपीयू के फ़्रेम को प्रोसेस करने में लगने वाले समय का अनुमान लगाया जा सकता है. इन ट्रैक के गतिविधि लेवल में पैटर्न देखकर, इस बात का अनुमान लगाया जा सकता है कि किसी फ़्रेम की सीमाएं कहां हैं. साथ ही, इसका इस्तेमाल करके, जीपीयू के फ़्रेम को प्रोसेस करने में लगने वाले समय को मेज़र किया जा सकता है.
ये अन्य ट्रैक भी इसी तरह की जानकारी दे सकते हैं:
- Vertices Shaded / Second
- Fragments Shaded / Second
- % Time Shading Vertices
- % Time Shading Fragments