এই নির্দেশিকাটি ব্যাখ্যা করে যে কীভাবে একটি সিস্ট্রেস রিপোর্টের চারপাশে নেভিগেট করতে হয় এবং ব্যাখ্যা করতে হয়। একটি পারফেটো রিপোর্ট ব্যাখ্যা করতে, ট্রেস প্রসেসর ডকুমেন্টেশন দেখুন।
একটি সাধারণ প্রতিবেদনের উপাদান
সিস্ট্রেস একটি আউটপুট এইচটিএমএল ফাইল তৈরি করে যাতে কয়েকটি বিভাগ রয়েছে। প্রতিবেদনে প্রতিটি প্রক্রিয়ার থ্রেড তালিকাভুক্ত করা হয়েছে। যদি একটি প্রদত্ত থ্রেড UI ফ্রেম রেন্ডার করে, রিপোর্টটি টাইমলাইন বরাবর রেন্ডার করা ফ্রেমগুলিকেও নির্দেশ করে। আপনি রিপোর্ট জুড়ে বাম থেকে ডানে যাওয়ার সাথে সাথে সময় এগিয়ে যায়।
উপরে থেকে নীচে, প্রতিবেদনে নিম্নলিখিত বিভাগগুলি রয়েছে।
ব্যবহারকারীর মিথস্ক্রিয়া
প্রথম বিভাগে বারগুলি রয়েছে যা আপনার অ্যাপ বা গেমের মধ্যে নির্দিষ্ট ব্যবহারকারীর ইন্টারঅ্যাকশনকে প্রতিনিধিত্ব করে, যেমন ডিভাইসের স্ক্রিনে ট্যাপ করা। এই মিথস্ক্রিয়াগুলি দরকারী সময় চিহ্নিতকারী হিসাবে কাজ করে।
CPU কার্যকলাপ
পরবর্তী বিভাগে বারগুলি দেখায় যা প্রতিটি CPU-এর মধ্যে থ্রেড কার্যকলাপের প্রতিনিধিত্ব করে। বারগুলি আপনার অ্যাপ বা গেম সহ সমস্ত অ্যাপ জুড়ে CPU কার্যকলাপ দেখায়।
CPU কার্যকলাপ বিভাগটি সম্প্রসারণযোগ্য, আপনাকে প্রতিটি CPU-এর জন্য ঘড়ির ফ্রিকোয়েন্সি দেখতে দেয়। চিত্র 1 একটি ভেঙে পড়া CPU কার্যকলাপ বিভাগের একটি উদাহরণ দেখায়, এবং চিত্র 2 একটি প্রসারিত সংস্করণ দেখায় যা ঘড়ির ফ্রিকোয়েন্সি প্রদর্শন করে:
সিস্টেম ইভেন্ট
এই বিভাগের হিস্টোগ্রামগুলি নির্দিষ্ট সিস্টেম-স্তরের ঘটনাগুলি দেখায়, যেমন টেক্সচারের সংখ্যা এবং নির্দিষ্ট বস্তুর মোট আকার।
সারফেসভিউ লেবেলযুক্ত একটি হিস্টোগ্রাম আরও ঘনিষ্ঠভাবে পরীক্ষা করার মতো। গণনাটি কম্পোজ করা ফ্রেম বাফারের সংখ্যা প্রতিনিধিত্ব করে যা ডিসপ্লে পাইপলাইনে পাস করা হয়েছে এবং ডিভাইসের স্ক্রিনে দেখানোর জন্য অপেক্ষা করছে। যেহেতু বেশিরভাগ ডিভাইস দ্বিগুণ- বা ট্রিপল-বাফারযুক্ত, এই সংখ্যা প্রায় সবসময় 0, 1, বা 2 হয়৷
VSync ইভেন্ট এবং UI থ্রেড অদলবদল কাজ সহ সারফেস ফ্লিংগার প্রক্রিয়াকে চিত্রিত করা অন্যান্য হিস্টোগ্রামগুলি চিত্র 3-এ প্রদর্শিত হয়:
প্রদর্শন ফ্রেম
এই বিভাগটি, প্রায়শই প্রতিবেদনে সবচেয়ে লম্বা, একটি বহুরঙের রেখার পরে বারগুলির স্তুপ দ্বারা অনুসরণ করে। এই আকারগুলি একটি নির্দিষ্ট থ্রেডের স্ট্যাটাস এবং ফ্রেম স্ট্যাকের প্রতিনিধিত্ব করে যা তৈরি করা হয়েছে। স্ট্যাকের প্রতিটি স্তর একটি কল টু beginSection()
, অথবা একটি কাস্টম ট্রেস ইভেন্টের শুরুকে উপস্থাপন করে যা আপনি আপনার অ্যাপ বা গেমের জন্য সংজ্ঞায়িত করেছেন৷
বারগুলির প্রতিটি স্ট্যাকের উপরে বহুরঙের লাইনটি সময়ের সাথে সাথে একটি নির্দিষ্ট থ্রেডের স্ট্যাটাসগুলির সেটকে উপস্থাপন করে। লাইনের প্রতিটি অংশে নিম্নলিখিত রঙগুলির একটি থাকতে পারে:
- সবুজ: চলমান
- থ্রেডটি একটি প্রক্রিয়ার সাথে সম্পর্কিত কাজ সম্পূর্ণ করছে বা একটি বিঘ্নের প্রতিক্রিয়া জানাচ্ছে।
- নীল: চালানো যায়
- থ্রেডটি চালানোর জন্য উপলব্ধ কিন্তু বর্তমানে নির্ধারিত নয়।
- শুভ্র: ঘুমাচ্ছে
- থ্রেডটির কোন কাজ নেই, সম্ভবত কারণ থ্রেডটি একটি মিউটেক্স লকের উপর অবরুদ্ধ।
- কমলা: নিরবচ্ছিন্ন ঘুম
- থ্রেডটি I/O এ অবরুদ্ধ বা একটি ডিস্ক অপারেশন সম্পূর্ণ হওয়ার জন্য অপেক্ষা করছে।
- বেগুনি: বিঘ্নিত ঘুম
- থ্রেডটি অন্য কার্নেল অপারেশনে ব্লক করা হয়, সাধারণত মেমরি ব্যবস্থাপনা।
কীবোর্ড শর্টকাট
নিম্নলিখিত সারণীতে কীবোর্ড শর্টকাটগুলি তালিকাভুক্ত করা হয়েছে যা একটি সিস্ট্রেস রিপোর্ট দেখার সময় উপলব্ধ:
চাবি | বর্ণনা | |
---|---|---|
ডব্লিউ | ট্রেস টাইমলাইনে জুম ইন করুন। | |
ক | প্যান ট্রেস টাইমলাইনে বাম। | |
এস | ট্রেস টাইমলাইন থেকে জুম আউট করুন। | |
ডি | ট্রেস টাইমলাইনে ডানদিকে প্যান করুন। | |
ই | বর্তমান মাউস অবস্থানে ট্রেস টাইমলাইন কেন্দ্রে রাখুন। | |
এম | বর্তমান নির্বাচন ফ্রেম. | |
1 | বর্তমানে সক্রিয় নির্বাচন মডেলটিকে "নির্বাচন" মোডে পরিবর্তন করুন। মাউস নির্বাচক টুলবারে প্রদর্শিত 1ম বোতামের সাথে মিলে যায় (ডানদিকে চিত্রটি দেখুন)। | |
2 | বর্তমানে সক্রিয় নির্বাচন মডেলটিকে "প্যান" মোডে পরিবর্তন করুন। মাউস নির্বাচক টুলবারে প্রদর্শিত 2য় বোতামের সাথে মিলে যায় (ডানদিকে চিত্রটি দেখুন)। | |
3 | বর্তমানে সক্রিয় নির্বাচন মডেলটিকে "জুম" মোডে পরিবর্তন করুন। মাউস নির্বাচক টুলবারে প্রদর্শিত 3য় বোতামের সাথে মিলে যায় (ডানদিকে চিত্রটি দেখুন)। | |
4 | বর্তমানে সক্রিয় নির্বাচন মডেলটিকে "সময়" মোডে পরিবর্তন করুন। মাউস নির্বাচক টুলবারে প্রদর্শিত 4র্থ বোতামের সাথে মিলে যায় (ডানদিকে চিত্র দেখুন)। | |
জি | বর্তমানে নির্বাচিত টাস্কের শুরুতে গ্রিড দেখান। | |
শিফট + জি | বর্তমানে নির্বাচিত টাস্কের শেষে গ্রিড দেখান। | |
বাম তীর | বর্তমানে নির্বাচিত টাইমলাইনে পূর্ববর্তী ইভেন্টটি নির্বাচন করুন। | |
সঠিক তীর | বর্তমানে নির্বাচিত টাইমলাইনে পরবর্তী ইভেন্ট নির্বাচন করুন। |
কর্মক্ষমতা সমস্যা তদন্ত
সিস্ট্রেস রিপোর্টের সাথে ইন্টারঅ্যাক্ট করার সময়, আপনি রেকর্ডিংয়ের সময়কাল ধরে ডিভাইসের CPU ব্যবহার পরিদর্শন করতে পারেন। HTML রিপোর্ট নেভিগেট করতে সাহায্যের জন্য, কীবোর্ড শর্টকাট বিভাগটি দেখুন, অথবা ক্লিক করুন ? রিপোর্টের উপরের-ডান কোণে বোতাম।
কর্মক্ষমতা সমস্যাগুলি খুঁজে পেতে এবং সমাধান করতে প্রতিবেদনে তথ্য কীভাবে পরিদর্শন করতে হয় তা নীচের বিভাগগুলি ব্যাখ্যা করে৷
কর্মক্ষমতা উদ্বেগ সনাক্ত করুন
একটি সিস্ট্রেস রিপোর্টের চারপাশে নেভিগেট করার সময়, আপনি নিম্নলিখিতগুলির মধ্যে এক বা একাধিক কাজ করে আরও সহজে কর্মক্ষমতা উদ্বেগ সনাক্ত করতে পারেন:
- সময়ের ব্যবধানের চারপাশে একটি আয়তক্ষেত্র অঙ্কন করে আগ্রহের একটি সময় ব্যবধান নির্বাচন করুন।
- রুলার টুল ব্যবহার করে একটি সমস্যা এলাকা চিহ্নিত বা হাইলাইট করুন।
- ভিউ অপশন > হাইলাইট VSync-এ ক্লিক করে প্রতিটি ডিসপ্লে রিফ্রেশ অপারেশন দেখান।
UI ফ্রেম এবং সতর্কতা পরিদর্শন করুন
চিত্র 4 এ দেখানো হয়েছে, একটি সিস্ট্রেস রিপোর্ট প্রতিটি প্রক্রিয়ার তালিকা করে যা UI ফ্রেম রেন্ডার করে এবং টাইমলাইন বরাবর প্রতিটি রেন্ডার করা ফ্রেম নির্দেশ করে। প্রতি সেকেন্ডে একটি স্থিতিশীল 60 ফ্রেম বজায় রাখার জন্য প্রয়োজনীয় 16.6 মিলিসেকেন্ডের মধ্যে রেন্ডার করা ফ্রেমগুলি সবুজ ফ্রেম বৃত্ত দিয়ে নির্দেশিত হয়। যে ফ্রেমগুলি রেন্ডার করতে 16.6 মিলিসেকেন্ডের বেশি সময় নেয় সেগুলি হলুদ বা লাল ফ্রেমের বৃত্ত দিয়ে নির্দেশিত হয়৷
![একটি ফ্রেমের দৃশ্যে জুম করা হয়েছে৷](https://developer.android.com/static/topic/performance/images/tracing/frame-unselected.png?authuser=4&hl=bn)
একটি ফ্রেমের বৃত্তে ক্লিক করলে তা হাইলাইট হয় এবং সেই ফ্রেমটিকে রেন্ডার করার জন্য সিস্টেম দ্বারা করা কাজ সম্পর্কে অতিরিক্ত তথ্য প্রদান করে, যার মধ্যে সতর্কতাও রয়েছে। রিপোর্টটি আপনাকে সেই পদ্ধতিগুলিও দেখায় যেগুলি সেই ফ্রেমটি রেন্ডার করার সময় সিস্টেমটি কার্যকর করছিল। UI জ্যাঙ্কের সম্ভাব্য কারণগুলি নির্ধারণ করতে আপনি সেই পদ্ধতিগুলি তদন্ত করতে পারেন।
![সমস্যাযুক্ত ফ্রেম নির্বাচন করা হয়েছে৷](https://developer.android.com/static/topic/performance/images/tracing/frame-selected.png?authuser=4&hl=bn)
আপনি একটি ধীর ফ্রেম নির্বাচন করার পরে, আপনি প্রতিবেদনের নীচের ফলকে একটি সতর্কতা দেখতে পাবেন৷ চিত্র 5-এ দেখানো সতর্কতাটি বলছে যে ফ্রেমের প্রাথমিক সমস্যা হল ListView
রিসাইক্লিং এবং রিবাইন্ডিং এর ভিতরে অনেক বেশি সময় ব্যয় করা হয়। ট্রেসে প্রাসঙ্গিক ইভেন্টগুলির লিঙ্ক রয়েছে যা এই সময়ে সিস্টেমটি কী করছে সে সম্পর্কে আরও ব্যাখ্যা করে৷
আপনার ট্রেসে টুলটি আবিষ্কৃত প্রতিটি সতর্কতা দেখতে, সেইসাথে ডিভাইসটি কতবার প্রতিটি সতর্কতা ট্রিগার করেছে, উইন্ডোর ডানদিকের সতর্কতা ট্যাবে ক্লিক করুন, যেমন চিত্র 6-এ দেখানো হয়েছে। সতর্কতা প্যানেল আপনাকে দেখতে সাহায্য করে কোন সমস্যা ট্রেস ঘটতে এবং কত ঘন ঘন তারা জ্যাংক অবদান. আপনি এই প্যানেলটিকে সংশোধন করা বাগগুলির একটি তালিকা হিসাবে ভাবতে পারেন৷ প্রায়শই, একটি এলাকায় একটি ছোট পরিবর্তন বা উন্নতি সতর্কতার একটি সম্পূর্ণ সেট সরিয়ে দিতে পারে।
![সতর্কতা ট্যাব দেখানো হয়েছে](https://developer.android.com/static/topic/performance/images/tracing/frame-selected-alert-tab.png?authuser=4&hl=bn)
আপনি যদি দেখেন যে UI থ্রেডে খুব বেশি কাজ করা হচ্ছে, কোন পদ্ধতিগুলি খুব বেশি CPU সময় নিচ্ছে তা নির্ধারণ করতে নিম্নলিখিত পদ্ধতির একটি ব্যবহার করুন:
- কোন পদ্ধতিগুলি বাধা সৃষ্টি করতে পারে সে সম্পর্কে আপনার যদি ধারণা থাকে তবে এই পদ্ধতিগুলিতে ট্রেস মার্কার যুক্ত করুন। আরও জানতে, আপনার কোডে কাস্টম ইভেন্টগুলি কীভাবে সংজ্ঞায়িত করবেন তার নির্দেশিকা দেখুন।
- আপনি যদি UI বাধার উৎস সম্পর্কে নিশ্চিত না হন তবে Android স্টুডিওতে উপলব্ধ CPU প্রোফাইলার ব্যবহার করুন। আপনি ট্রেস লগ তৈরি করতে পারেন, এবং তারপর CPU প্রোফাইলার ব্যবহার করে সেগুলি আমদানি এবং পরিদর্শন করতে পারেন।