মেমরি দক্ষতা বিশ্লেষণ করুন, মেমরি দক্ষতা বিশ্লেষণ করুন, মেমরি দক্ষতা বিশ্লেষণ করুন, স্মৃতি দক্ষতা বিশ্লেষণ করুন

একটি অ্যাপের মেমরি ব্যবহারের বৈশিষ্ট্য তার পারফরম্যান্সের একটি মৌলিক দিক। আপনি সিস্টেম প্রোফাইলার ব্যবহার করে উপলব্ধ GPU কাউন্টারের তথ্য দেখে এই বৈশিষ্ট্যগুলো বিশ্লেষণ করতে পারেন।

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

Adreno ডিভাইসগুলিতে, প্রথমে "Estimate CPU and GPU frame processing times" অংশে বর্ণিত পদ্ধতি অনুযায়ী একটি একক GPU ফ্রেমের সাথে সামঞ্জস্যপূর্ণ একটি সময়কাল হাইলাইট করে শুরু করুন। আপনার ফ্রেম টাইম বাউন্ডারির ​​জন্য সেই পৃষ্ঠায় বর্ণিত GPU % Utilization বা অনুরূপ কাউন্টার ট্র্যাক ব্যবহারের কৌশলটি ব্যবহার করুন, কারণ সমস্ত কাউন্টার ট্র্যাক একই টাইমিং কৌশল ব্যবহার করে এবং মেমরি ব্যবহারের আরও সঠিক অনুমান করতে সাহায্য করবে (কাউন্টার ট্র্যাক ডেটা থেকে স্বাধীনভাবে সংগৃহীত GPU স্লাইস থেকে প্রাপ্ত ফ্রেম টাইম বাউন্ডারি ব্যবহারের তুলনায়)।

ব্যবহারের ট্র্যাকটি এর নীচের প্রাসঙ্গিক কাউন্টারগুলির সাথে সারিবদ্ধ হচ্ছে।
চিত্র ১. ব্যবহারের ট্র্যাক্ট যা এর নীচের প্রাসঙ্গিক কাউন্টারগুলির সাথে সারিবদ্ধ।

পড়া/লেখার মোট সংখ্যা

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

পঠন + লিখন মোট কাউন্টার
চিত্র ২. রিড + রাইট টোটাল কাউন্টার

ভার্টেক্স এবং টেক্সচার ডেটার জন্য ব্যান্ডউইথের কতটুকু অংশ ব্যবহৃত হচ্ছে তা নির্ধারণ করতে আপনি ভার্টেক্স মেমোরি রিড (বাইট/সেকেন্ড) এবং টেক্সচার মেমোরি রিড (বাইট/সেকেন্ড) কাউন্টারগুলোও পরীক্ষা করতে পারেন।

ভার্টেক্স + টেক্সচার মেমরি রিড কাউন্টার
চিত্র ৩. ভার্টেক্স + টেক্সচার মেমরি রিড কাউন্টার

এই মানগুলোর ক্ষেত্রে আপনি কোনটিকে “ভালো” বলে মনে করবেন, তা আপনার অ্যাপে ব্যবহৃত ওয়ার্কলোডের ধরনের উপর নির্ভর করে। উদাহরণস্বরূপ, 2D অ্যাপ্লিকেশনগুলোতে তুলনামূলকভাবে বেশি (~2+GB/s) পরিমাণে টেক্সচার মেমরি রিড ব্যান্ডউইথ ব্যবহৃত হতে পারে, কিন্তু ভার্টেক্স মেমরি ব্যান্ডউইথ খুবই কম (~50MB/s) হতে পারে। আরও বিস্তারিত জানতে, ‘Analyze vertex memory bandwidth’ এবং ‘Analyze texture memory bandwidth usage’- এর ডকুমেন্টেশন দেখুন।

স্টলগুলি আনুন

% Vertex Fetch Stall , % Texture Fetch Stall , এবং % Stall on System Memory কাউন্টারগুলো দেখুন, কারণ এগুলো আমাদের অ্যাপ্লিকেশনের সামগ্রিক মেমরি পারফরম্যান্স সম্পর্কে কিছু ধারণা দেবে। যদি মানগুলো প্রায় ৫%-এর বেশি হয়, তবে এটি ইঙ্গিত দেয় যে আপনার অ্যাপ হয় মেমরিতে ডেটা দক্ষতার সাথে সাজাচ্ছে না অথবা ক্যাশের সুবিধা নেওয়ার জন্য দক্ষতার সাথে ডেটা অ্যাক্সেস করছে। এই ধরনের অ্যাসেটগুলোর মেমরি ব্যবহার উন্নত করার বিষয়ে বিস্তারিত জানতে Analyze vertex memory bandwidth এবং Analyze texture memory bandwidth usage দেখুন।

মেমরি স্টল কাউন্টার
চিত্র ৪. মেমরি স্টল কাউন্টার

মালি ডিভাইস

মালি ডিভাইসগুলিতে, প্রথমে 'Estimate CPU and GPU frame processing times' অংশে বর্ণিত পদ্ধতি অনুযায়ী একটি একক GPU ফ্রেমের সাথে সামঞ্জস্যপূর্ণ একটি সময়কাল হাইলাইট করে শুরু করুন। আপনার ফ্রেম টাইম বাউন্ডারির ​​জন্য সেই পৃষ্ঠায় বর্ণিত GPU % Utilization বা অনুরূপ কাউন্টার ট্র্যাক ব্যবহারের কৌশলটি ব্যবহার করুন, কারণ সমস্ত কাউন্টার ট্র্যাক একই টাইমিং কৌশল ব্যবহার করে এবং মেমরি ব্যবহারের আরও সঠিক অনুমান করতে সাহায্য করবে (কাউন্টার ট্র্যাক ডেটা থেকে স্বাধীনভাবে সংগৃহীত GPU স্লাইস থেকে প্রাপ্ত ফ্রেম টাইম বাউন্ডারি ব্যবহারের তুলনায়)।

ব্যবহারের ট্র্যাকটি এর নীচে আপনার আগ্রহের কাউন্টারগুলির সাথে সারিবদ্ধ হচ্ছে।
চিত্র ৫। ব্যবহারের গতিপথ, যা এর নিচে আপনার আগ্রহের কাউন্টারগুলোর সাথে সারিবদ্ধ রয়েছে।

আউটপুট বাহ্যিক মোট

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

আউটপুট বাহ্যিক কাউন্টার ট্র্যাক
চিত্র ৬. আউটপুট বাহ্যিক কাউন্টার ট্র্যাক

অভ্যন্তরীণ মোট ইনপুট করুন

এমন কিছু কাউন্টারও আছে যা আপনাকে ক্যাশগুলো সম্পর্কে তথ্য দেয়। আপনার জন্য প্রয়োজনীয় কাউন্টারগুলো হলো “ইনপুট ইন্টারনাল [রিড|রাইট] স্টল সাইকেল”। এগুলোর মান বেশি হলে বোঝা যায় যে, আপনি সফলভাবে ক্যাশ অ্যাক্সেস করতে পারছেন, কিন্তু অতিরিক্ত রিড রিকোয়েস্ট করা হচ্ছে এবং এর ফলে শেডার কোড মেমোরি অ্যাক্সেস পাওয়ার জন্য অপেক্ষা করতে গিয়ে আটকে যাচ্ছে।

ইনপুট অভ্যন্তরীণ কাউন্টার ট্র্যাক
চিত্র ৭. ইনপুট অভ্যন্তরীণ কাউন্টার ট্র্যাকসমূহ

স্টলগুলি আনুন

এর পরের যে কাউন্টারগুলো আপনি দেখতে পারেন, সেগুলো হলো Vertex Prefetcher Stall Cycles এবং Texture Fetch Stall কাউন্টার, কারণ এগুলো আমাদের অ্যাপ্লিকেশনের সামগ্রিক মেমরি পারফরম্যান্স সম্পর্কে কিছু ধারণা দেবে। যদি আপনি ~5% এর বেশি মান দেখতে পান, তাহলে এর মানে হলো আপনি হয় মেমরিতে আপনার ডেটা দক্ষতার সাথে সাজাচ্ছেন না অথবা ক্যাশের সুবিধা নেওয়ার জন্য দক্ষতার সাথে ডেটা অ্যাক্সেস করছেন না। এই ধরনের অ্যাসেটগুলোর মেমরি ব্যবহার কীভাবে উন্নত করা যায় সে সম্পর্কে বিস্তারিত জানতে Analyzing [Vertex|Texture] Memory Bandwidth আর্টিকেলগুলো দেখুন।

ফেচ স্টল কাউন্টার ট্র্যাক
চিত্র ৮. ফেচ স্টল কাউন্টার ট্র্যাক