CPU এবং GPU ফ্রেম প্রক্রিয়াকরণের সময় অনুমান করুন, CPU এবং GPU ফ্রেম প্রক্রিয়াকরণের সময় অনুমান করুন, CPU এবং GPU ফ্রেম প্রক্রিয়াকরণের সময় অনুমান করুন, CPU এবং GPU ফ্রেম প্রক্রিয়াকরণের সময় অনুমান করুন

সিপিইউ এবং জিপিইউ ফ্রেম প্রসেসিং টাইম (ফ্রেম টাইম) অনুমান করা আপনার অ্যাপের পারফরম্যান্স বোঝার জন্য এবং বাধাগুলি সনাক্ত করার জন্য অপরিহার্য। আপনি যখন AGI দিয়ে একটি অ্যাপ প্রোফাইল করেন, তখন সিস্টেম প্রোফাইলার ট্রেস ডেটা প্রদান করে যা আপনি ফ্রেমের সময় অনুমান করতে ব্যবহার করতে পারেন।

CPU বার

AGI-তে, আপনি একটি সিস্টেম প্রোফাইলের CPU ট্র্যাকের মোট এবং সক্রিয় CPU ফ্রেম সময় দেখতে পারেন।

মোট CPU সময়

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

বেশ কয়েকটি eglSwapBuffer ইভেন্টের একটি স্ক্রিনশট।
চিত্র 1. বেশ কিছু eglSwapBuffer ইভেন্ট।


একটি vkQueuePresentKHR ইভেন্টের একটি স্ক্রিনশট৷
চিত্র 2. একটি vkQueuePresentKHR ইভেন্ট।

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

একটি স্ক্রিনশট যা dequeueBuffer এবং eglSwapBuffer ইভেন্টের সময় প্রচুর পরিমাণে অলসতা প্রদর্শন করে।
চিত্র 3. dequeueBuffer এবং eglSwapBuffer ইভেন্টের সময় প্রচুর পরিমাণে অলসতা।

সক্রিয় CPU সময়

সক্রিয় সিপিইউ সময় নির্ধারণ করে কখন সিপিইউ একটি নিষ্ক্রিয় অবস্থায় না থেকে অ্যাপ কোড চালাচ্ছে।

সক্রিয় CPU সময় পরিমাপ করতে, CPU ইভেন্টের ঠিক উপরে চলমান স্লাইসগুলি দেখুন। চলমান অবস্থায় থাকা দুটি ফ্রেম জমা দেওয়ার ইভেন্টের মধ্যে ট্রেসের সমস্ত অংশ গণনা করুন। আপনি কাজ থ্রেড অন্তর্ভুক্ত নিশ্চিত করুন.

CPU সময়ের দুটি সময়ের একটি স্ক্রিনশট যা সক্রিয় CPU সময় পরিমাপ করতে ব্যবহার করা যেতে পারে।
চিত্র 5. CPU সময়ের দুটি সময়কাল যা সক্রিয় CPU সময় পরিমাপ করতে ব্যবহার করা যেতে পারে।


একটি মাল্টিথ্রেডেড অ্যাপের একটি স্ক্রিনশট যার মূল থ্রেডটি নিষ্ক্রিয় থাকা অবস্থায় একটি কার্যকরী থ্রেড রয়েছে৷
চিত্র 6. একটি মাল্টিথ্রেডেড অ্যাপ যার একটি কার্যকরী থ্রেড রয়েছে যখন মূল থ্রেডটি নিষ্ক্রিয় থাকে।

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

একটি স্ক্রিনশট যা একটি পিন করা থ্রেডের চলমান অবস্থা প্রদর্শন করে যা CPU ট্র্যাকের সাথে মেলে।
চিত্র x. পিন করা থ্রেডের চলমান অবস্থা CPU ট্র্যাকের সাথে মেলে।

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

একটি CPU ট্র্যাকে একটি ATrace মার্কারের একটি স্ক্রিনশট৷
চিত্র 8. একটি CPU ট্র্যাকে একটি ATrace মার্কার।

GPU ফ্রেমের সময় অনুমান করুন

GPU ফ্রেম সময় অনুমান করতে, আপনি সিস্টেম প্রোফাইলারে GPU স্লাইস বা GPU কাউন্টার ব্যবহার করতে পারেন। GPU স্লাইস ব্যবহার করার সময় অনুমান আরও সঠিক।

GPU স্লাইস

সিস্টেম প্রোফাইলারে যদি GPU স্লাইস তথ্য উপলব্ধ থাকে, তাহলে আপনি একটি একক ফ্রেমের সাথে যুক্ত কাজগুলিতে আপনার অ্যাপ ব্যয় করার মোট সময় পরিমাপ করে খুব সঠিক GPU ফ্রেম সময় তথ্য পেতে পারেন।

মালি ডিভাইস

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

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

একাধিক ফ্রেমের একটি স্ক্রিনশট ক্রমানুসারে কার্যকর করা হচ্ছে।
চিত্র 9. একাধিক ফ্রেম ক্রমানুসারে কার্যকর করা হচ্ছে।
একটি স্ক্রিনশট যেখানে AGI একটি পৃথক ফ্রেমের কাজের উপর জুম করা হয়েছে।
চিত্র 10. একটি পৃথক ফ্রেমের কাজ জুম করা হয়েছে৷

যে অ্যাপগুলির জন্য আরও ভারী-সমান্তরাল GPU ওয়ার্কফ্লো আছে, আপনি প্রতিটি স্লাইসের জন্য নির্বাচন ফলকে একই সাবমিশনআইডি আছে এমন সমস্ত ফ্রেমের সন্ধান করে GPU ফ্রেমের সময় পেতে পারেন৷

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

একটি সমান্তরাল GPU ওয়ার্কলোডের একটি স্ক্রিনশট, যেখানে একটি ফ্রেমের কাজ অন্য ফ্রেমের সাথে ওভারল্যাপ করতে পারে।
চিত্র 11. একটি সমান্তরাল GPU কাজের চাপ, যেখানে একটি ফ্রেমের কাজ অন্য ফ্রেমের সাথে ওভারল্যাপ করতে পারে।


একটি নির্বাচিত ফ্রেমের জন্য বেশ কয়েকটি ভলকান ইভেন্টের একটি স্ক্রিনশট৷
চিত্র 12. একটি নির্বাচিত ফ্রেমের জন্য বেশ কিছু ভলকান ইভেন্ট।

অ্যাড্রেনো ডিভাইস

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

একাধিক ফ্রেমের একটি স্ক্রিনশট ক্রমানুসারে কার্যকর করা হচ্ছে।
চিত্র 13. একাধিক ফ্রেম ক্রমানুসারে কার্যকর করা হচ্ছে।
একটি স্ক্রিনশট যেখানে একাধিক রেন্ডার পাস সহ একটি ফ্রেমে AGI জুম করা হয়েছে৷
চিত্র 14. একাধিক রেন্ডার পাস সহ একটি ফ্রেমে জুম ইন করুন৷

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

একটি নির্বাচিত ফ্রেমের জন্য ভলকান ইভেন্ট সহ একটি ভলকান-ভিত্তিক অ্যাপের একটি স্ক্রিনশট৷
চিত্র 15. একটি নির্বাচিত ফ্রেমের জন্য ভলকান ইভেন্ট সহ একটি ভলকান-ভিত্তিক অ্যাপ।

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

একটি রেন্ডার পাস প্যাটার্ন সহ একটি ভারী GPU আবদ্ধ অ্যাপের একটি স্ক্রিনশট যা ফ্রেমের সীমানা শনাক্ত করতে সাহায্য করে৷
চিত্র 16. একটি রেন্ডার পাস প্যাটার্ন সহ একটি ভারী GPU আবদ্ধ অ্যাপ যা ফ্রেমের সীমানা চিহ্নিত করতে সাহায্য করে৷

GPU কাউন্টার

যদি একটি ট্রেসে GPU স্লাইস তথ্য উপলব্ধ না হয়, আপনি GPU কাউন্টার ট্র্যাক ব্যবহার করে GPU ফ্রেম সময় অনুমান করতে পারেন।

মালি ডিভাইস

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

একটি মালি ডিভাইসে GPU ব্যবহার এবং GPU সারি ট্র্যাকের একটি স্ক্রিনশট৷
চিত্র 17. একটি মালি ডিভাইসে GPU ব্যবহার এবং GPU সারি ট্র্যাক।

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

খণ্ড এবং নন-ফ্র্যাগমেন্ট ট্র্যাকগুলির একটি স্ক্রিনশট৷
চিত্র 18. খণ্ড এবং নন-ফ্র্যাগমেন্ট ট্র্যাক।

অ্যাড্রেনো ডিভাইস

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

একটি Adreno ডিভাইসে GPU ব্যবহার এবং GPU সারি ট্র্যাকের একটি স্ক্রিনশট।
চিত্র 19. একটি Adreno ডিভাইসে GPU ব্যবহার এবং GPU সারি ট্র্যাক।

অ্যাপটি যদি আরও GPU-ঘন হয়, তাহলে আপনি GPU ফ্রেমের সময় অনুমান করতে Vertex Instructions / Second and Fragment Instructions / সেকেন্ড ট্র্যাকগুলি ব্যবহার করতে পারেন৷ এই ট্র্যাকগুলির কার্যকলাপের স্তরগুলিতে নিদর্শনগুলি সন্ধান করে, আপনি একটি ফ্রেমের সীমানা কোথায় রয়েছে তার একটি মোটামুটি অনুমান পেতে পারেন এবং GPU ফ্রেমের সময় পরিমাপ করতে এটি ব্যবহার করতে পারেন৷

ভার্টেক্স নির্দেশাবলী / দ্বিতীয় ট্র্যাকের একটি স্ক্রিনশট।
চিত্র 20. ভার্টেক্স নির্দেশাবলী / দ্বিতীয় ট্র্যাক।

এই অন্যান্য ট্র্যাক অনুরূপ তথ্য প্রদান করতে পারে:

  • শীর্ষবিন্দু ছায়াযুক্ত/সেকেন্ড
  • টুকরা ছায়াযুক্ত / সেকেন্ড
  • % সময় শেডিং শীর্ষবিন্দু
  • % সময় টুকরা
,

সিপিইউ এবং জিপিইউ ফ্রেম প্রসেসিং টাইম (ফ্রেম টাইম) অনুমান করা আপনার অ্যাপের পারফরম্যান্স বোঝার জন্য এবং বাধাগুলি সনাক্ত করার জন্য অপরিহার্য। আপনি যখন AGI দিয়ে একটি অ্যাপ প্রোফাইল করেন, তখন সিস্টেম প্রোফাইলার ট্রেস ডেটা প্রদান করে যা আপনি ফ্রেমের সময় অনুমান করতে ব্যবহার করতে পারেন।

CPU বার

AGI-তে, আপনি একটি সিস্টেম প্রোফাইলের CPU ট্র্যাকের মোট এবং সক্রিয় CPU ফ্রেম সময় দেখতে পারেন।

মোট CPU সময়

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

বেশ কয়েকটি eglSwapBuffer ইভেন্টের একটি স্ক্রিনশট।
চিত্র 1. বেশ কিছু eglSwapBuffer ইভেন্ট।


একটি vkQueuePresentKHR ইভেন্টের একটি স্ক্রিনশট৷
চিত্র 2. একটি vkQueuePresentKHR ইভেন্ট।

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

একটি স্ক্রিনশট যা dequeueBuffer এবং eglSwapBuffer ইভেন্টের সময় প্রচুর পরিমাণে অলসতা প্রদর্শন করে।
চিত্র 3. dequeueBuffer এবং eglSwapBuffer ইভেন্টের সময় প্রচুর পরিমাণে অলসতা।

সক্রিয় CPU সময়

সক্রিয় সিপিইউ সময় নির্ধারণ করে কখন সিপিইউ একটি নিষ্ক্রিয় অবস্থায় না থেকে অ্যাপ কোড চালাচ্ছে।

সক্রিয় CPU সময় পরিমাপ করতে, CPU ইভেন্টের ঠিক উপরে চলমান স্লাইসগুলি দেখুন। চলমান অবস্থায় থাকা দুটি ফ্রেম জমা দেওয়ার ইভেন্টের মধ্যে ট্রেসের সমস্ত অংশ গণনা করুন। আপনি কাজ থ্রেড অন্তর্ভুক্ত নিশ্চিত করুন.

CPU সময়ের দুটি সময়ের একটি স্ক্রিনশট যা সক্রিয় CPU সময় পরিমাপ করতে ব্যবহার করা যেতে পারে।
চিত্র 5. CPU সময়ের দুটি সময়কাল যা সক্রিয় CPU সময় পরিমাপ করতে ব্যবহার করা যেতে পারে।


একটি মাল্টিথ্রেডেড অ্যাপের একটি স্ক্রিনশট যার মূল থ্রেডটি নিষ্ক্রিয় থাকা অবস্থায় একটি কার্যকরী থ্রেড রয়েছে৷
চিত্র 6. একটি মাল্টিথ্রেডেড অ্যাপ যার একটি কার্যকরী থ্রেড রয়েছে যখন মূল থ্রেডটি নিষ্ক্রিয় থাকে।

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

একটি স্ক্রিনশট যা একটি পিন করা থ্রেডের চলমান অবস্থা প্রদর্শন করে যা CPU ট্র্যাকের সাথে মেলে।
চিত্র x. পিন করা থ্রেডের চলমান অবস্থা CPU ট্র্যাকের সাথে মেলে।

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

একটি CPU ট্র্যাকে একটি ATrace মার্কারের একটি স্ক্রিনশট৷
চিত্র 8. একটি CPU ট্র্যাকে একটি ATrace মার্কার।

GPU ফ্রেমের সময় অনুমান করুন

GPU ফ্রেম সময় অনুমান করতে, আপনি সিস্টেম প্রোফাইলারে GPU স্লাইস বা GPU কাউন্টার ব্যবহার করতে পারেন। GPU স্লাইস ব্যবহার করার সময় অনুমান আরও সঠিক।

GPU স্লাইস

সিস্টেম প্রোফাইলারে যদি GPU স্লাইস তথ্য উপলব্ধ থাকে, তাহলে আপনি একটি একক ফ্রেমের সাথে যুক্ত কাজগুলিতে আপনার অ্যাপ ব্যয় করার মোট সময় পরিমাপ করে খুব সঠিক GPU ফ্রেম সময় তথ্য পেতে পারেন।

মালি ডিভাইস

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

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

একাধিক ফ্রেমের একটি স্ক্রিনশট ক্রমানুসারে কার্যকর করা হচ্ছে।
চিত্র 9. একাধিক ফ্রেম ক্রমানুসারে কার্যকর করা হচ্ছে।
একটি স্ক্রিনশট যেখানে AGI একটি পৃথক ফ্রেমের কাজের উপর জুম করা হয়েছে।
চিত্র 10. একটি পৃথক ফ্রেমের কাজ জুম করা হয়েছে৷

যে অ্যাপগুলির জন্য আরও ভারী-সমান্তরাল GPU ওয়ার্কফ্লো আছে, আপনি প্রতিটি স্লাইসের জন্য নির্বাচন ফলকে একই সাবমিশনআইডি আছে এমন সমস্ত ফ্রেমের সন্ধান করে GPU ফ্রেমের সময় পেতে পারেন৷

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

একটি সমান্তরাল GPU ওয়ার্কলোডের একটি স্ক্রিনশট, যেখানে একটি ফ্রেমের কাজ অন্য ফ্রেমের সাথে ওভারল্যাপ করতে পারে।
চিত্র 11. একটি সমান্তরাল GPU কাজের চাপ, যেখানে একটি ফ্রেমের কাজ অন্য ফ্রেমের সাথে ওভারল্যাপ করতে পারে।


একটি নির্বাচিত ফ্রেমের জন্য বেশ কয়েকটি ভলকান ইভেন্টের একটি স্ক্রিনশট৷
চিত্র 12. একটি নির্বাচিত ফ্রেমের জন্য বেশ কিছু ভলকান ইভেন্ট।

অ্যাড্রেনো ডিভাইস

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

একাধিক ফ্রেমের একটি স্ক্রিনশট ক্রমানুসারে কার্যকর করা হচ্ছে।
চিত্র 13. একাধিক ফ্রেম ক্রমানুসারে কার্যকর করা হচ্ছে।
একটি স্ক্রিনশট যেখানে একাধিক রেন্ডার পাস সহ একটি ফ্রেমে AGI জুম করা হয়েছে৷
চিত্র 14. একাধিক রেন্ডার পাস সহ একটি ফ্রেমে জুম ইন করুন৷

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

একটি নির্বাচিত ফ্রেমের জন্য ভলকান ইভেন্ট সহ একটি ভলকান-ভিত্তিক অ্যাপের একটি স্ক্রিনশট৷
চিত্র 15. একটি নির্বাচিত ফ্রেমের জন্য ভলকান ইভেন্ট সহ একটি ভলকান-ভিত্তিক অ্যাপ।

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

একটি রেন্ডার পাস প্যাটার্ন সহ একটি ভারী GPU আবদ্ধ অ্যাপের একটি স্ক্রিনশট যা ফ্রেমের সীমানা শনাক্ত করতে সাহায্য করে৷
চিত্র 16. একটি রেন্ডার পাস প্যাটার্ন সহ একটি ভারী GPU আবদ্ধ অ্যাপ যা ফ্রেমের সীমানা চিহ্নিত করতে সাহায্য করে৷

GPU কাউন্টার

যদি একটি ট্রেসে GPU স্লাইস তথ্য উপলব্ধ না হয়, আপনি GPU কাউন্টার ট্র্যাক ব্যবহার করে GPU ফ্রেম সময় অনুমান করতে পারেন।

মালি ডিভাইস

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

একটি মালি ডিভাইসে GPU ব্যবহার এবং GPU সারি ট্র্যাকের একটি স্ক্রিনশট৷
চিত্র 17. একটি মালি ডিভাইসে GPU ব্যবহার এবং GPU সারি ট্র্যাক।

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

খণ্ড এবং নন-ফ্র্যাগমেন্ট ট্র্যাকগুলির একটি স্ক্রিনশট৷
চিত্র 18. খণ্ড এবং নন-ফ্র্যাগমেন্ট ট্র্যাক।

অ্যাড্রেনো ডিভাইস

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

একটি Adreno ডিভাইসে GPU ব্যবহার এবং GPU সারি ট্র্যাকের একটি স্ক্রিনশট।
চিত্র 19. একটি Adreno ডিভাইসে GPU ব্যবহার এবং GPU সারি ট্র্যাক।

অ্যাপটি যদি আরও GPU-ঘন হয়, তাহলে আপনি GPU ফ্রেমের সময় অনুমান করতে Vertex Instructions / Second and Fragment Instructions / সেকেন্ড ট্র্যাকগুলি ব্যবহার করতে পারেন৷ এই ট্র্যাকগুলির কার্যকলাপের স্তরগুলিতে নিদর্শনগুলি সন্ধান করে, আপনি একটি ফ্রেমের সীমানা কোথায় রয়েছে তার একটি মোটামুটি অনুমান পেতে পারেন এবং GPU ফ্রেমের সময় পরিমাপ করতে এটি ব্যবহার করতে পারেন৷

ভার্টেক্স নির্দেশাবলী / দ্বিতীয় ট্র্যাকের একটি স্ক্রিনশট।
চিত্র 20. ভার্টেক্স নির্দেশাবলী / দ্বিতীয় ট্র্যাক।

এই অন্যান্য ট্র্যাক অনুরূপ তথ্য প্রদান করতে পারে:

  • শীর্ষবিন্দু ছায়াযুক্ত/সেকেন্ড
  • টুকরা ছায়াযুক্ত / সেকেন্ড
  • % সময় শেডিং শীর্ষবিন্দু
  • % সময় টুকরা
,

সিপিইউ এবং জিপিইউ ফ্রেম প্রসেসিং টাইম (ফ্রেম টাইম) অনুমান করা আপনার অ্যাপের পারফরম্যান্স বোঝার জন্য এবং বাধাগুলি সনাক্ত করার জন্য অপরিহার্য। আপনি যখন AGI দিয়ে একটি অ্যাপ প্রোফাইল করেন, তখন সিস্টেম প্রোফাইলার ট্রেস ডেটা প্রদান করে যা আপনি ফ্রেমের সময় অনুমান করতে ব্যবহার করতে পারেন।

CPU বার

AGI-তে, আপনি একটি সিস্টেম প্রোফাইলের CPU ট্র্যাকের মোট এবং সক্রিয় CPU ফ্রেম সময় দেখতে পারেন।

মোট CPU সময়

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

বেশ কয়েকটি eglSwapBuffer ইভেন্টের একটি স্ক্রিনশট।
চিত্র 1. বেশ কিছু eglSwapBuffer ইভেন্ট।


একটি vkQueuePresentKHR ইভেন্টের একটি স্ক্রিনশট৷
চিত্র 2. একটি vkQueuePresentKHR ইভেন্ট।

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

একটি স্ক্রিনশট যা dequeueBuffer এবং eglSwapBuffer ইভেন্টের সময় প্রচুর পরিমাণে অলসতা প্রদর্শন করে।
চিত্র 3. dequeueBuffer এবং eglSwapBuffer ইভেন্টের সময় প্রচুর পরিমাণে অলসতা।

সক্রিয় CPU সময়

সক্রিয় সিপিইউ সময় নির্ধারণ করে কখন সিপিইউ একটি নিষ্ক্রিয় অবস্থায় না থেকে অ্যাপ কোড চালাচ্ছে।

সক্রিয় CPU সময় পরিমাপ করতে, CPU ইভেন্টের ঠিক উপরে চলমান স্লাইসগুলি দেখুন। চলমান অবস্থায় থাকা দুটি ফ্রেম জমা দেওয়ার ইভেন্টের মধ্যে ট্রেসের সমস্ত অংশ গণনা করুন। আপনি কাজ থ্রেড অন্তর্ভুক্ত নিশ্চিত করুন.

CPU সময়ের দুটি সময়ের একটি স্ক্রিনশট যা সক্রিয় CPU সময় পরিমাপ করতে ব্যবহার করা যেতে পারে।
চিত্র 5. CPU সময়ের দুটি সময়কাল যা সক্রিয় CPU সময় পরিমাপ করতে ব্যবহার করা যেতে পারে।


একটি মাল্টিথ্রেডেড অ্যাপের একটি স্ক্রিনশট যার মূল থ্রেডটি নিষ্ক্রিয় থাকা অবস্থায় একটি কার্যকরী থ্রেড রয়েছে৷
চিত্র 6. একটি মাল্টিথ্রেডেড অ্যাপ যার একটি কার্যকরী থ্রেড রয়েছে যখন মূল থ্রেডটি নিষ্ক্রিয় থাকে।

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

একটি স্ক্রিনশট যা একটি পিন করা থ্রেডের চলমান অবস্থা প্রদর্শন করে যা CPU ট্র্যাকের সাথে মেলে।
চিত্র x. পিন করা থ্রেডের চলমান অবস্থা CPU ট্র্যাকের সাথে মেলে।

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

একটি CPU ট্র্যাকে একটি ATrace মার্কারের একটি স্ক্রিনশট৷
চিত্র 8. একটি CPU ট্র্যাকে একটি ATrace মার্কার।

GPU ফ্রেমের সময় অনুমান করুন

GPU ফ্রেম সময় অনুমান করতে, আপনি সিস্টেম প্রোফাইলারে GPU স্লাইস বা GPU কাউন্টার ব্যবহার করতে পারেন। GPU স্লাইস ব্যবহার করার সময় অনুমান আরও সঠিক।

GPU স্লাইস

সিস্টেম প্রোফাইলারে যদি GPU স্লাইস তথ্য উপলব্ধ থাকে, তাহলে আপনি একটি একক ফ্রেমের সাথে যুক্ত কাজগুলিতে আপনার অ্যাপ ব্যয় করার মোট সময় পরিমাপ করে খুব সঠিক GPU ফ্রেম সময় তথ্য পেতে পারেন।

মালি ডিভাইস

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

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

একাধিক ফ্রেমের একটি স্ক্রিনশট ক্রমানুসারে কার্যকর করা হচ্ছে।
চিত্র 9. একাধিক ফ্রেম ক্রমানুসারে কার্যকর করা হচ্ছে।
একটি স্ক্রিনশট যেখানে AGI একটি পৃথক ফ্রেমের কাজের উপর জুম করা হয়েছে।
চিত্র 10. একটি পৃথক ফ্রেমের কাজ জুম করা হয়েছে৷

যে অ্যাপগুলির জন্য আরও ভারী-সমান্তরাল GPU ওয়ার্কফ্লো আছে, আপনি প্রতিটি স্লাইসের জন্য নির্বাচন ফলকে একই সাবমিশনআইডি আছে এমন সমস্ত ফ্রেমের সন্ধান করে GPU ফ্রেমের সময় পেতে পারেন৷

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

একটি সমান্তরাল GPU ওয়ার্কলোডের একটি স্ক্রিনশট, যেখানে একটি ফ্রেমের কাজ অন্য ফ্রেমের সাথে ওভারল্যাপ করতে পারে।
চিত্র 11. একটি সমান্তরাল GPU কাজের চাপ, যেখানে একটি ফ্রেমের কাজ অন্য ফ্রেমের সাথে ওভারল্যাপ করতে পারে।


একটি নির্বাচিত ফ্রেমের জন্য বেশ কয়েকটি ভলকান ইভেন্টের একটি স্ক্রিনশট৷
চিত্র 12. একটি নির্বাচিত ফ্রেমের জন্য বেশ কিছু ভলকান ইভেন্ট।

অ্যাড্রেনো ডিভাইস

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

একাধিক ফ্রেমের একটি স্ক্রিনশট ক্রমানুসারে কার্যকর করা হচ্ছে।
চিত্র 13. একাধিক ফ্রেম ক্রমানুসারে কার্যকর করা হচ্ছে।
একটি স্ক্রিনশট যেখানে একাধিক রেন্ডার পাস সহ একটি ফ্রেমে AGI জুম করা হয়েছে৷
চিত্র 14. একাধিক রেন্ডার পাস সহ একটি ফ্রেমে জুম ইন করুন৷

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

একটি নির্বাচিত ফ্রেমের জন্য ভলকান ইভেন্ট সহ একটি ভলকান-ভিত্তিক অ্যাপের একটি স্ক্রিনশট৷
চিত্র 15. একটি নির্বাচিত ফ্রেমের জন্য ভলকান ইভেন্ট সহ একটি ভলকান-ভিত্তিক অ্যাপ।

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

একটি রেন্ডার পাস প্যাটার্ন সহ একটি ভারী GPU আবদ্ধ অ্যাপের একটি স্ক্রিনশট যা ফ্রেমের সীমানা শনাক্ত করতে সাহায্য করে৷
চিত্র 16. একটি রেন্ডার পাস প্যাটার্ন সহ একটি ভারী GPU আবদ্ধ অ্যাপ যা ফ্রেমের সীমানা চিহ্নিত করতে সাহায্য করে৷

GPU কাউন্টার

যদি একটি ট্রেসে GPU স্লাইস তথ্য উপলব্ধ না হয়, আপনি GPU কাউন্টার ট্র্যাক ব্যবহার করে GPU ফ্রেম সময় অনুমান করতে পারেন।

মালি ডিভাইস

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

একটি মালি ডিভাইসে GPU ব্যবহার এবং GPU সারি ট্র্যাকের একটি স্ক্রিনশট৷
চিত্র 17. একটি মালি ডিভাইসে GPU ব্যবহার এবং GPU সারি ট্র্যাক।

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

খণ্ড এবং নন-ফ্র্যাগমেন্ট ট্র্যাকগুলির একটি স্ক্রিনশট৷
চিত্র 18. খণ্ড এবং নন-ফ্র্যাগমেন্ট ট্র্যাক।

অ্যাড্রেনো ডিভাইস

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

একটি Adreno ডিভাইসে GPU ব্যবহার এবং GPU সারি ট্র্যাকের একটি স্ক্রিনশট।
চিত্র 19. একটি Adreno ডিভাইসে GPU ব্যবহার এবং GPU সারি ট্র্যাক।

অ্যাপটি যদি আরও GPU-ঘন হয়, তাহলে আপনি GPU ফ্রেমের সময় অনুমান করতে Vertex Instructions / Second and Fragment Instructions / সেকেন্ড ট্র্যাকগুলি ব্যবহার করতে পারেন৷ এই ট্র্যাকগুলির কার্যকলাপের স্তরগুলিতে নিদর্শনগুলি সন্ধান করে, আপনি একটি ফ্রেমের সীমানা কোথায় রয়েছে তার একটি মোটামুটি অনুমান পেতে পারেন এবং GPU ফ্রেমের সময় পরিমাপ করতে এটি ব্যবহার করতে পারেন৷

ভার্টেক্স নির্দেশাবলী / দ্বিতীয় ট্র্যাকের একটি স্ক্রিনশট।
চিত্র 20. ভার্টেক্স নির্দেশাবলী / দ্বিতীয় ট্র্যাক।

এই অন্যান্য ট্র্যাক অনুরূপ তথ্য প্রদান করতে পারে:

  • শীর্ষবিন্দু ছায়াযুক্ত/সেকেন্ড
  • টুকরা ছায়াযুক্ত / সেকেন্ড
  • % সময় শেডিং শীর্ষবিন্দু
  • % সময় টুকরা
,

সিপিইউ এবং জিপিইউ ফ্রেম প্রসেসিং টাইম (ফ্রেম টাইম) অনুমান করা আপনার অ্যাপের পারফরম্যান্স বোঝার জন্য এবং বাধাগুলি সনাক্ত করার জন্য অপরিহার্য। আপনি যখন AGI দিয়ে একটি অ্যাপ প্রোফাইল করেন, তখন সিস্টেম প্রোফাইলার ট্রেস ডেটা প্রদান করে যা আপনি ফ্রেমের সময় অনুমান করতে ব্যবহার করতে পারেন।

CPU বার

AGI-তে, আপনি একটি সিস্টেম প্রোফাইলের CPU ট্র্যাকের মোট এবং সক্রিয় CPU ফ্রেম সময় দেখতে পারেন।

মোট CPU সময়

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

বেশ কয়েকটি eglSwapBuffer ইভেন্টের একটি স্ক্রিনশট।
চিত্র 1. বেশ কিছু eglSwapBuffer ইভেন্ট।


একটি vkQueuePresentKHR ইভেন্টের একটি স্ক্রিনশট৷
চিত্র 2. একটি vkQueuePresentKHR ইভেন্ট।

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

একটি স্ক্রিনশট যা dequeueBuffer এবং eglSwapBuffer ইভেন্টের সময় প্রচুর পরিমাণে অলসতা প্রদর্শন করে।
চিত্র 3. dequeueBuffer এবং eglSwapBuffer ইভেন্টের সময় প্রচুর পরিমাণে অলসতা।

সক্রিয় CPU সময়

সক্রিয় সিপিইউ সময় নির্ধারণ করে কখন সিপিইউ একটি নিষ্ক্রিয় অবস্থায় না থেকে অ্যাপ কোড চালাচ্ছে।

সক্রিয় CPU সময় পরিমাপ করতে, CPU ইভেন্টের ঠিক উপরে চলমান স্লাইসগুলি দেখুন। চলমান অবস্থায় থাকা দুটি ফ্রেম জমা দেওয়ার ইভেন্টের মধ্যে ট্রেসের সমস্ত অংশ গণনা করুন। আপনি কাজ থ্রেড অন্তর্ভুক্ত নিশ্চিত করুন.

CPU সময়ের দুটি সময়ের একটি স্ক্রিনশট যা সক্রিয় CPU সময় পরিমাপ করতে ব্যবহার করা যেতে পারে।
চিত্র 5. CPU সময়ের দুটি সময়কাল যা সক্রিয় CPU সময় পরিমাপ করতে ব্যবহার করা যেতে পারে।


একটি মাল্টিথ্রেডেড অ্যাপের একটি স্ক্রিনশট যার মূল থ্রেডটি নিষ্ক্রিয় থাকা অবস্থায় একটি কার্যকরী থ্রেড রয়েছে৷
চিত্র 6. একটি মাল্টিথ্রেডেড অ্যাপ যার একটি কার্যকরী থ্রেড রয়েছে যখন মূল থ্রেডটি নিষ্ক্রিয় থাকে।

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

একটি স্ক্রিনশট যা একটি পিন করা থ্রেডের চলমান অবস্থা প্রদর্শন করে যা CPU ট্র্যাকের সাথে মেলে।
চিত্র x. পিন করা থ্রেডের চলমান অবস্থা CPU ট্র্যাকের সাথে মেলে।

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

একটি CPU ট্র্যাকে একটি ATrace মার্কারের একটি স্ক্রিনশট৷
চিত্র 8. একটি CPU ট্র্যাকে একটি ATrace মার্কার।

GPU ফ্রেমের সময় অনুমান করুন

GPU ফ্রেম সময় অনুমান করতে, আপনি সিস্টেম প্রোফাইলারে GPU স্লাইস বা GPU কাউন্টার ব্যবহার করতে পারেন। GPU স্লাইস ব্যবহার করার সময় অনুমান আরও সঠিক।

GPU স্লাইস

সিস্টেম প্রোফাইলারে যদি GPU স্লাইস তথ্য উপলব্ধ থাকে, তাহলে আপনি একটি একক ফ্রেমের সাথে যুক্ত কাজগুলিতে আপনার অ্যাপ ব্যয় করার মোট সময় পরিমাপ করে খুব সঠিক GPU ফ্রেম সময় তথ্য পেতে পারেন।

মালি ডিভাইস

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

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

একাধিক ফ্রেমের একটি স্ক্রিনশট ক্রমানুসারে কার্যকর করা হচ্ছে।
চিত্র 9. একাধিক ফ্রেম ক্রমানুসারে কার্যকর করা হচ্ছে।
একটি স্ক্রিনশট যেখানে AGI একটি পৃথক ফ্রেমের কাজের উপর জুম করা হয়েছে।
চিত্র 10. একটি পৃথক ফ্রেমের কাজ জুম করা হয়েছে৷

যে অ্যাপগুলির জন্য আরও ভারী-সমান্তরাল GPU ওয়ার্কফ্লো আছে, আপনি প্রতিটি স্লাইসের জন্য নির্বাচন ফলকে একই সাবমিশনআইডি আছে এমন সমস্ত ফ্রেমের সন্ধান করে GPU ফ্রেমের সময় পেতে পারেন৷

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

একটি সমান্তরাল GPU ওয়ার্কলোডের একটি স্ক্রিনশট, যেখানে একটি ফ্রেমের কাজ অন্য ফ্রেমের সাথে ওভারল্যাপ করতে পারে।
চিত্র 11. একটি সমান্তরাল GPU কাজের চাপ, যেখানে একটি ফ্রেমের কাজ অন্য ফ্রেমের সাথে ওভারল্যাপ করতে পারে।


একটি নির্বাচিত ফ্রেমের জন্য বেশ কয়েকটি ভলকান ইভেন্টের একটি স্ক্রিনশট৷
চিত্র 12. একটি নির্বাচিত ফ্রেমের জন্য বেশ কিছু ভলকান ইভেন্ট।

অ্যাড্রেনো ডিভাইস

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

একাধিক ফ্রেমের একটি স্ক্রিনশট ক্রমানুসারে কার্যকর করা হচ্ছে।
চিত্র 13. একাধিক ফ্রেম ক্রমানুসারে কার্যকর করা হচ্ছে।
একটি স্ক্রিনশট যেখানে একাধিক রেন্ডার পাস সহ একটি ফ্রেমে AGI জুম করা হয়েছে৷
চিত্র 14. একাধিক রেন্ডার পাস সহ একটি ফ্রেমে জুম ইন করুন৷

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

একটি নির্বাচিত ফ্রেমের জন্য ভলকান ইভেন্ট সহ একটি ভলকান-ভিত্তিক অ্যাপের একটি স্ক্রিনশট৷
চিত্র 15. একটি নির্বাচিত ফ্রেমের জন্য ভলকান ইভেন্ট সহ একটি ভলকান-ভিত্তিক অ্যাপ।

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

একটি রেন্ডার পাস প্যাটার্ন সহ একটি ভারী GPU আবদ্ধ অ্যাপের একটি স্ক্রিনশট যা ফ্রেমের সীমানা শনাক্ত করতে সাহায্য করে৷
চিত্র 16. একটি রেন্ডার পাস প্যাটার্ন সহ একটি ভারী GPU আবদ্ধ অ্যাপ যা ফ্রেমের সীমানা চিহ্নিত করতে সাহায্য করে৷

GPU কাউন্টার

যদি একটি ট্রেসে GPU স্লাইস তথ্য উপলব্ধ না হয়, আপনি GPU কাউন্টার ট্র্যাক ব্যবহার করে GPU ফ্রেম সময় অনুমান করতে পারেন।

মালি ডিভাইস

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

একটি মালি ডিভাইসে GPU ব্যবহার এবং GPU সারি ট্র্যাকের একটি স্ক্রিনশট৷
চিত্র 17. একটি মালি ডিভাইসে GPU ব্যবহার এবং GPU সারি ট্র্যাক।

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

খণ্ড এবং নন-ফ্র্যাগমেন্ট ট্র্যাকগুলির একটি স্ক্রিনশট৷
চিত্র 18. খণ্ড এবং নন-ফ্র্যাগমেন্ট ট্র্যাক।

অ্যাড্রেনো ডিভাইস

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

একটি Adreno ডিভাইসে GPU ব্যবহার এবং GPU সারি ট্র্যাকের একটি স্ক্রিনশট।
চিত্র 19. একটি Adreno ডিভাইসে GPU ব্যবহার এবং GPU সারি ট্র্যাক।

অ্যাপটি যদি আরও GPU-ঘন হয়, তাহলে আপনি GPU ফ্রেমের সময় অনুমান করতে Vertex Instructions / Second and Fragment Instructions / সেকেন্ড ট্র্যাকগুলি ব্যবহার করতে পারেন৷ এই ট্র্যাকগুলির কার্যকলাপের স্তরগুলিতে নিদর্শনগুলি সন্ধান করে, আপনি একটি ফ্রেমের সীমানা কোথায় রয়েছে তার একটি মোটামুটি অনুমান পেতে পারেন এবং GPU ফ্রেমের সময় পরিমাপ করতে এটি ব্যবহার করতে পারেন৷

ভার্টেক্স নির্দেশাবলী / দ্বিতীয় ট্র্যাকের একটি স্ক্রিনশট।
চিত্র 20. ভার্টেক্স নির্দেশাবলী / দ্বিতীয় ট্র্যাক।

এই অন্যান্য ট্র্যাক অনুরূপ তথ্য প্রদান করতে পারে:

  • শীর্ষবিন্দু ছায়াযুক্ত/সেকেন্ড
  • টুকরা ছায়াযুক্ত / সেকেন্ড
  • % সময় শেডিং শীর্ষবিন্দু
  • % সময় টুকরা