আপনার অ্যাপের পারফরম্যান্স বোঝা এবং বাধাগুলো চিহ্নিত করার জন্য সিপিইউ ও জিপিইউ-এর ফ্রেম প্রসেসিং টাইম (ফ্রেম টাইম) অনুমান করা অপরিহার্য। যখন আপনি এজিআই (AGI) ব্যবহার করে কোনো অ্যাপ প্রোফাইল করেন, তখন সিস্টেম প্রোফাইলার ট্রেস ডেটা সরবরাহ করে যা আপনি ফ্রেম টাইম অনুমান করতে ব্যবহার করতে পারেন।
সিপিইউ সময়
AGI-তে, আপনি একটি সিস্টেম প্রোফাইলের CPU ট্র্যাকে মোট এবং সক্রিয় CPU ফ্রেম টাইম দেখতে পারেন।
মোট সিপিইউ সময়
মোট ব্যয়িত সিপিইউ সময় পরিমাপ করতে, পরপর ফ্রেম সাবমিশন ইভেন্টগুলোর মধ্যবর্তী সময়সহ সময়সীমাটি নির্বাচন করুন । ফ্রেম সাবমিশন ইভেন্টগুলো হলো eglSwapBuffers (OpenGL-এর জন্য) এবং vkQueuePresentKHR (Vulkan-এর জন্য)।

eglSwapBuffer ইভেন্টের মধ্যবর্তী সময়। 
vkQueuePresentKHR ইভেন্টের মধ্যবর্তী সময়। এই পরিমাপটি মোট সিপিইউ সময়ের একটি আনুমানিক হিসাব, কিন্তু এটি সক্রিয় সিপিইউ সময়কে আবশ্যকভাবে প্রতিনিধিত্ব করে না। উদাহরণস্বরূপ, জিপিইউ-নির্ভর অ্যাপগুলিতে, একটি নতুন ফ্রেম জমা দেওয়ার আগে সিপিইউ জিপিইউ-এর কাজ শেষ হওয়ার জন্য অপেক্ষা করতে পারে। এটি প্রায়শই ঘটে যখন একটি dequeueBuffer , eglSwapBuffer (OpenGL-এর জন্য), বা vkQueuePresent (Vulkan-এর জন্য) ইভেন্ট সিপিইউ সময়ের একটি বড় অংশ দখল করে নেয়। অপেক্ষার সময়টি মোট সিপিইউ সময়ের মধ্যে অন্তর্ভুক্ত থাকে, কিন্তু সক্রিয় সিপিইউ সময়ের মধ্যে নয়।

dequeueBuffer এবং eglSwapBuffer ইভেন্ট চলাকালীন সিপিইউ-এর বিপুল পরিমাণ নিষ্ক্রিয়তা।সক্রিয় সিপিইউ সময়
অ্যাক্টিভ সিপিইউ টাইম নির্ধারণ করে যে, সিপিইউ কখন নিষ্ক্রিয় অবস্থা ছাড়া অ্যাপের কোড চালাচ্ছে।
সক্রিয় সিপিইউ সময় পরিমাপ করতে, সিপিইউ ইভেন্টগুলোর ঠিক উপরে থাকা ' Running ' স্লাইসগুলো দেখুন। দুটি ফ্রেম সাবমিশন ইভেন্টের মধ্যবর্তী ট্রেসের সমস্ত অংশ যা 'Running' অবস্থায় আছে, তা গণনা করুন। নিশ্চিত করুন যে আপনি ওয়ার্কিং থ্রেডগুলোও অন্তর্ভুক্ত করেছেন।


সক্রিয় সিপিইউ সময় পরিমাপ করার আরেকটি উপায় হলো সিপিইউ ট্র্যাকগুলিতে থাকা অ্যাপ স্লাইসগুলি দেখা। এই স্লাইসগুলি নির্দেশ করে কখন সিপিইউ চলছে এবং এগুলি রানিং স্লাইসগুলির সাথে সঙ্গতিপূর্ণ।

অ্যাপ স্লাইস শনাক্ত করতে সাহায্য করার জন্য, আপনি আপনার অ্যাপে ATrace মার্কার যোগ করতে পারেন। এটি সিস্টেম প্রোফাইলারের সিপিইউ ট্র্যাকে মার্কারগুলো প্রদর্শন করবে।

জিপিইউ ফ্রেম টাইম অনুমান করুন
জিপিইউ ফ্রেম টাইম অনুমান করার জন্য, আপনি সিস্টেম প্রোফাইলার-এ জিপিইউ স্লাইস অথবা জিপিইউ কাউন্টার ব্যবহার করতে পারেন। জিপিইউ স্লাইস ব্যবহার করলে অনুমানটি আরও নির্ভুল হয়।
জিপিইউ স্লাইস
সিস্টেম প্রোফাইলারে যদি জিপিইউ স্লাইস তথ্য উপলব্ধ থাকে, তাহলে আপনার অ্যাপ একটি একক ফ্রেমের সাথে সম্পর্কিত কাজগুলিতে মোট কত সময় ব্যয় করে তা পরিমাপ করে আপনি খুব নির্ভুল জিপিইউ ফ্রেম টাইম তথ্য পেতে পারেন।
মালি ডিভাইস
মালি ডিভাইসগুলিতে, জিপিইউ স্লাইসগুলিতে ফ্র্যাগমেন্ট , নন-ফ্র্যাগমেন্ট এবং মাঝে মাঝে সম্পূরক নন-ফ্র্যাগমেন্ট ট্র্যাক থাকে। কম জটিল ফ্রেমের ক্ষেত্রে, ফ্র্যাগমেন্ট এবং নন-ফ্র্যাগমেন্টের কাজ ক্রমানুসারে হয়, তাই সক্রিয় জিপিইউ কাজের মধ্যবর্তী ফাঁক খুঁজে একটি ফ্রেমের কাজকে অন্যটি থেকে আলাদা করা যায়।
বিকল্প হিসেবে, জিপিইউ-তে জমা দেওয়া কাজটি সম্পর্কে আপনার ধারণা থাকলে, জমা দেওয়া রেন্ডার পাসগুলোর প্যাটার্ন শনাক্ত করার মাধ্যমে একটি ফ্রেম কখন শুরু ও শেষ হয় সে সম্পর্কে তথ্য পাওয়া যায়।


যেসব অ্যাপে আরও বেশি প্যারালাইজড GPU ওয়ার্কফ্লো রয়েছে, সেগুলোর ক্ষেত্রে প্রতিটি স্লাইসের সিলেকশন প্যানে একই সাবমিশনআইডি (submissionID) আছে এমন সমস্ত ফ্রেম খুঁজে GPU ফ্রেম টাইম পাওয়া যায়।
ভলকান-ভিত্তিক অ্যাপের ক্ষেত্রে, একটি ফ্রেম তৈরি করতে একাধিক সাবমিশন ব্যবহার করা যেতে পারে। ভলকান ইভেন্টস ট্র্যাক ব্যবহার করে সাবমিশন আইডিগুলোর হিসাব রাখুন, যেখানে প্রতিটি সাবমিশনের জন্য একটি করে স্লাইস থাকে। একটি সাবমিশন স্লাইস নির্বাচন করলে সেই সাবমিশনের সাথে সম্পর্কিত সমস্ত জিপিইউ অ্যাক্টিভিটি স্লাইস হাইলাইট হবে।


অ্যাড্রেনো ডিভাইস
Adreno ডিভাইসগুলিতে, GPU স্লাইসগুলি GPU Queue 0 ট্র্যাকে প্রদর্শিত হয় এবং সর্বদা ক্রমানুসারে সাজানো থাকে, তাই আপনি একটি ফ্রেমের রেন্ডার পাসগুলিকে প্রতিনিধিত্বকারী সমস্ত স্লাইস দেখতে পারেন এবং সেগুলি ব্যবহার করে GPU ফ্রেম টাইম পরিমাপ করতে পারেন।


পূর্বে বর্ণিত মালি সিনারিওর মতোই: যদি অ্যাপটি ভলকান ব্যবহার করে, তাহলে ভলকান ইভেন্টস ট্র্যাকটি ফ্রেমটি এক্সিকিউট করার জন্য জমা দেওয়া কাজের তথ্য প্রদান করে। রেন্ডার পাসগুলো হাইলাইট করতে, ফ্রেমটির সাথে যুক্ত ভলকান ইভেন্টস স্লাইসগুলোতে ক্লিক করুন।

কিছু ক্ষেত্রে, অ্যাপটি ব্যাপকভাবে GPU-বাউন্ড হওয়ার কারণে GPU ফ্রেমের সীমানাগুলো আলাদা করা আরও কঠিন হয়ে পড়ে। এই পরিস্থিতিতে, GPU-তে জমা দেওয়া কাজটি সম্পর্কে আপনার ধারণা থাকলে, রেন্ডার পাসগুলো যে প্যাটার্নে সম্পাদিত হচ্ছে তা শনাক্ত করতে এবং সেই তথ্য থেকে ফ্রেমের সীমানা নির্ধারণ করতে পারবেন।

জিপিইউ কাউন্টার
যদি কোনো ট্রেসে GPU স্লাইসের তথ্য পাওয়া না যায়, তাহলে আপনি GPU কাউন্টার ট্র্যাকগুলো ব্যবহার করে GPU ফ্রেম টাইম অনুমান করতে পারেন।
মালি ডিভাইস
মালি ডিভাইসগুলিতে, আপনি কম জিপিইউ-ইনটেনসিভ অ্যাপের জিপিইউ ফ্রেম টাইম অনুমান করার জন্য জিপিইউ ইউটিলাইজেশন ট্র্যাক ব্যবহার করতে পারেন। যখন অ্যাপগুলি কম জিপিইউ-ইনটেনসিভ হয়, তখন সেগুলিতে একটানা উচ্চ অ্যাক্টিভিটির পরিবর্তে, জিপিইউ অ্যাক্টিভিটির নিয়মিত উচ্চ এবং নিম্ন পর্যায় থাকে। জিপিইউ ইউটিলাইজেশন ট্র্যাক ব্যবহার করে জিপিইউ ফ্রেম টাইম অনুমান করতে, ট্র্যাকটিতে উচ্চ অ্যাক্টিভিটির পর্যায়গুলির সময়কাল পরিমাপ করুন।

অ্যাপটি যদি বেশি GPU-নির্ভর হয়, তাহলে GPU ইউটিলাইজেশন ধারাবাহিকভাবে খুব বেশি থাকতে পারে। এক্ষেত্রে, আপনি GPU অ্যাক্টিভিটি নিরীক্ষণ করতে এবং GPU ফ্রেম টাইম অনুমান করতে ফ্র্যাগমেন্ট কিউ ইউটিলাইজেশন এবং নন-ফ্র্যাগমেন্ট কিউ ইউটিলাইজেশন ট্র্যাকগুলো ব্যবহার করতে পারেন। ফ্র্যাগমেন্ট এবং নন-ফ্র্যাগমেন্ট ট্র্যাকগুলোতে প্যাটার্ন খুঁজে আপনি একটি ফ্রেমের সীমানা কোথায় সে সম্পর্কে একটি মোটামুটি ধারণা পেতে পারেন এবং তা ব্যবহার করে GPU ফ্রেম টাইম পরিমাপ করতে পারেন।

অ্যাড্রেনো ডিভাইস
Adreno ডিভাইসগুলিতে, যদি অ্যাপটি GPU-নির্ভর না হয়, তাহলে আপনি আগের বিভাগে Mali ডিভাইসগুলির মতোই GPU ফ্রেম টাইম অনুমান করতে পারেন।

যদি অ্যাপটি বেশি GPU-নির্ভর হয় এবং অ্যাপ্লিকেশনটির GPU ব্যবহারের হার ধারাবাহিকভাবে বেশি থাকে, তাহলে আপনি GPU ফ্রেম টাইম অনুমান করার জন্য Vertex Instructions / Second এবং Fragment Instructions / Second ট্র্যাকগুলো ব্যবহার করতে পারেন। এই ট্র্যাকগুলোর কার্যকলাপের মাত্রার মধ্যে প্যাটার্ন খুঁজে বের করার মাধ্যমে, আপনি একটি ফ্রেমের সীমানা কোথায় সে সম্পর্কে একটি মোটামুটি ধারণা পেতে পারেন এবং তা ব্যবহার করে GPU ফ্রেম টাইম পরিমাপ করতে পারেন।

এই অন্যান্য ট্র্যাকগুলি অনুরূপ তথ্য প্রদান করতে পারে:
- শীর্ষবিন্দু ছায়াযুক্ত / দ্বিতীয়
- ছায়াযুক্ত খণ্ডাংশ / দ্বিতীয়
- % সময় শেডিং ভার্টেক্স
- % সময় শেডিং খণ্ড