রেকর্ড ট্রেস

একটি ট্রেস রেকর্ড করা শুরু করতে, CPU প্রোফাইলারের উপরে বা নীচের ড্রপডাউন মেনুগুলির যেকোনো একটি থেকে একটি রেকর্ডিং কনফিগারেশন চয়ন করুন এবং রেকর্ডে ক্লিক করুন।

চিত্র 1. CPU প্রোফাইলার স্থিতি, সময়কাল, এবং রেকর্ডিংয়ের ধরন প্রদর্শন করে।

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

চিত্র 2. একটি পদ্ধতি ট্রেস রেকর্ড করার পরে CPU প্রোফাইলার।

  1. নির্বাচিত পরিসর: ট্রেস প্যানে পরিদর্শন করার জন্য রেকর্ড করা সময়ের অংশ নির্ধারণ করে। আপনি যখন প্রথম কোনো ট্রেস রেকর্ড করেন, তখন CPU প্রোফাইলার স্বয়ংক্রিয়ভাবে CPU টাইমলাইনে আপনার রেকর্ডিংয়ের সম্পূর্ণ দৈর্ঘ্য নির্বাচন করে। রেকর্ড করা সময়সীমার শুধুমাত্র একটি অংশের জন্য ট্রেস ডেটা পরিদর্শন করতে, হাইলাইট করা অঞ্চলের প্রান্তগুলি টেনে আনুন।
  2. মিথস্ক্রিয়া বিভাগ: একটি সময়রেখা বরাবর ব্যবহারকারীর মিথস্ক্রিয়া এবং অ্যাপের জীবনচক্র ইভেন্টগুলি প্রদর্শন করে।
  3. থ্রেড বিভাগ: একটি টাইমলাইন বরাবর প্রতিটি থ্রেডের জন্য থ্রেড স্টেট অ্যাক্টিভিটি (যেমন দৌড়ানো, ঘুমানো ইত্যাদি) এবং কল চার্ট (বা সিস্টেম ট্রেসে ইভেন্ট চার্ট ট্রেস) প্রদর্শন করে।
    • টাইমলাইনে নেভিগেট করতে মাউস এবং কীবোর্ড শর্টকাট ব্যবহার করুন।
    • থ্রেডের নামের উপর ডাবল-ক্লিক করুন বা থ্রেড প্রসারিত বা সংকুচিত করার জন্য একটি থ্রেড নির্বাচন করার সময় এন্টার টিপুন।
    • বিশ্লেষণ ফলকে অতিরিক্ত তথ্য দেখতে একটি থ্রেড নির্বাচন করুন। একাধিক থ্রেড নির্বাচন করতে Shift বা Ctrl (ম্যাকে কমান্ড) ধরে রাখুন।
    • বিশ্লেষণ ফলকে অতিরিক্ত তথ্য দেখতে একটি পদ্ধতি কল (বা সিস্টেম ট্রেসে ইভেন্ট ট্রেস) নির্বাচন করুন।
  4. বিশ্লেষণ ফলক: আপনার নির্বাচিত সময়সীমা এবং থ্রেড বা পদ্ধতি কলের জন্য ট্রেস ডেটা প্রদর্শন করে। এই প্যানে, আপনি কীভাবে প্রতিটি স্ট্যাক ট্রেস দেখতে পাবেন (বিশ্লেষণ ট্যাবগুলি ব্যবহার করে) এবং কীভাবে কার্যকর করার সময় পরিমাপ করবেন (সময় রেফারেন্স ড্রপডাউন মেনু ব্যবহার করে) নির্বাচন করতে পারেন।
  5. বিশ্লেষণ ফলক ট্যাব: ট্রেস বিবরণ প্রদর্শন কিভাবে চয়ন করুন. প্রতিটি বিকল্প সম্পর্কে বিস্তারিত জানার জন্য, পরিদর্শন ট্রেস দেখুন।
  6. সময় রেফারেন্স মেনু: প্রতিটি কলের সময় তথ্য কীভাবে পরিমাপ করা হয় তা নির্ধারণ করতে নিম্নলিখিতগুলির মধ্যে একটি নির্বাচন করুন (শুধুমাত্র নমুনা/ট্রেস জাভা পদ্ধতিতে সমর্থিত):
    • দেয়াল ঘড়ির সময়: সময় তথ্য প্রকৃত অতিবাহিত সময় প্রতিনিধিত্ব করে।
    • থ্রেড সময়: সময় তথ্য প্রকৃত অতিবাহিত সময়ের প্রতিনিধিত্ব করে সেই সময়ের যে কোনো অংশ বিয়োগ করে যখন থ্রেড CPU সম্পদগুলি ব্যবহার করে না। যেকোনো প্রদত্ত কলের জন্য, এর থ্রেডের সময় সর্বদা এর দেয়াল ঘড়ির সময়ের চেয়ে কম বা সমান হয়। থ্রেড টাইম ব্যবহার করলে আপনি একটি প্রদত্ত পদ্ধতি বা ফাংশন দ্বারা একটি থ্রেডের প্রকৃত CPU ব্যবহার কতটা খরচ হয় তা আরও ভালভাবে বুঝতে পারবেন।
  7. ফিল্টার: ফিল্টারগুলি ফাংশন, পদ্ধতি, শ্রেণী বা প্যাকেজের নাম অনুসারে ডেটা ট্রেস করে। উদাহরণস্বরূপ, যদি আপনি একটি নির্দিষ্ট কল সম্পর্কিত ট্রেস ডেটা দ্রুত সনাক্ত করতে চান, অনুসন্ধান ক্ষেত্রে নামটি টাইপ করুন। ফ্লেম চার্ট ট্যাবে, সার্চ কোয়েরির সাথে মেলে এমন একটি কল, প্যাকেজ বা ক্লাস অন্তর্ভুক্ত কল স্ট্যাকগুলিতে জোর দেওয়া হয়। টপ ডাউন এবং বটম আপ ট্যাবে, সেই কল স্ট্যাকগুলিকে অন্যান্য ট্রেস ফলাফলের তুলনায় অগ্রাধিকার দেওয়া হয়। আপনি অনুসন্ধান ক্ষেত্রের পাশে উপযুক্ত বাক্সটি চেক করে নিম্নলিখিত বিকল্পগুলি সক্ষম করতে পারেন:
    • Regex: আপনার অনুসন্ধানে নিয়মিত অভিব্যক্তি অন্তর্ভুক্ত করতে, এই বিকল্পটি ব্যবহার করুন।
    • ম্যাচ কেস: যদি আপনার অনুসন্ধান কেস-সংবেদনশীল হয়, এই বিকল্পটি ব্যবহার করুন।
টিপ: থ্রেড টাইমলাইন পরিদর্শন করার সময়, নিম্নলিখিত শর্টকাটগুলি উপলব্ধ:
  • জুম ইন করুন: W টিপুন বা Ctrl ধরে রেখে মাউস হুইল স্ক্রোল করুন (ম্যাকে কমান্ড)।
  • জুম আউট করুন: S টিপুন বা Ctrl ধরে রেখে মাউস হুইল পিছনে স্ক্রোল করুন (ম্যাকে কমান্ড)।
  • বাম দিকে প্যান করুন: স্পেস ধরে রেখে A টিপুন বা ডানদিকে মাউস টেনে আনুন।
  • ডানদিকে প্যান করুন: স্পেস ধরে রাখার সময় D টিপুন বা বামে মাউস টেনে আনুন।
  • একটি থ্রেড প্রসারিত বা সঙ্কুচিত করুন: থ্রেডের নামে ডাবল-ক্লিক করুন বা একটি থ্রেড নির্বাচন করার সময় এন্টার টিপুন।

একটি রেকর্ডিং কনফিগারেশন চয়ন করুন

আপনি ট্রেস তথ্য রেকর্ড করা শুরু করার আগে, আপনি ক্যাপচার করতে চান এমন প্রোফাইলিং তথ্যের জন্য উপযুক্ত রেকর্ডিং কনফিগারেশন চয়ন করুন:

  • নমুনা জাভা পদ্ধতি: আপনার অ্যাপের জাভা-ভিত্তিক কোড নির্বাহের সময় ঘন ঘন বিরতিতে আপনার অ্যাপের কল স্ট্যাক ক্যাপচার করে। প্রোফাইলার আপনার অ্যাপের জাভা-ভিত্তিক কোড এক্সিকিউশন সম্পর্কে সময় এবং সম্পদ ব্যবহারের তথ্য পেতে ক্যাপচার করা ডেটার সেটের তুলনা করে।

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

  • ট্রেস জাভা মেথডস: প্রতিটি মেথড কলের শুরুতে এবং শেষে একটি টাইমস্ট্যাম্প রেকর্ড করার জন্য রানটাইমে আপনার অ্যাপটিকে ইনস্ট্রুমেন্ট করুন। টাইমস্ট্যাম্প সংগ্রহ করা হয় এবং টাইমিং তথ্য এবং CPU ব্যবহার সহ পদ্ধতি ট্রেসিং ডেটা জেনারেট করা হয়।

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

  • নমুনা C/C++ ফাংশন: আপনার অ্যাপের নেটিভ থ্রেডের স্যাম্পল ট্রেস ক্যাপচার করে। এই কনফিগারেশনটি ব্যবহার করতে, আপনাকে অবশ্যই Android 8.0 (API স্তর 26) বা উচ্চতর চলমান ডিভাইসে আপনার অ্যাপ স্থাপন করতে হবে।

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

  • ট্রেস সিস্টেম কল: সূক্ষ্ম বিবরণ ক্যাপচার করে যা আপনাকে পরিদর্শন করতে দেয় কিভাবে আপনার অ্যাপ সিস্টেম রিসোর্সের সাথে ইন্টারঅ্যাক্ট করে। আপনি আপনার থ্রেড স্টেটের সঠিক সময় এবং সময়কাল পরিদর্শন করতে পারেন, সমস্ত কোর জুড়ে আপনার CPU বাধাগুলি কোথায় রয়েছে তা কল্পনা করতে পারেন এবং বিশ্লেষণ করতে কাস্টম ট্রেস ইভেন্ট যোগ করতে পারেন। আপনি যখন কর্মক্ষমতা সংক্রান্ত সমস্যা সমাধান করছেন তখন এই ধরনের তথ্য গুরুত্বপূর্ণ হতে পারে। এই কনফিগারেশনটি ব্যবহার করতে, আপনাকে অবশ্যই Android 7.0 (API স্তর 24) বা উচ্চতর চলমান ডিভাইসে আপনার অ্যাপ স্থাপন করতে হবে।

    এই ট্রেস কনফিগারেশন ব্যবহার করার সময়, আপনি আপনার কোড যন্ত্রের মাধ্যমে প্রোফাইলার টাইমলাইনে গুরুত্বপূর্ণ কোড রুটিনগুলি দৃশ্যত চিহ্নিত করতে পারেন। C/C++ কোড যন্ত্রের জন্য, trace.h দ্বারা প্রদত্ত নেটিভ ট্রেসিং API ব্যবহার করুন। জাভা কোড ইনস্ট্রুমেন্ট করতে, Trace ক্লাস ব্যবহার করুন। আরও তথ্যের জন্য, আপনার অ্যাপ কোড ইনস্ট্রুমেন্ট দেখুন।

    এই ট্রেস কনফিগারেশন systrace উপর নির্মিত হয়. আপনি সিপিইউ প্রোফাইলারে প্রদত্ত বিকল্পগুলির বাইরে বিকল্পগুলি নির্দিষ্ট করতে systrace কমান্ড-লাইন ইউটিলিটি ব্যবহার করতে পারেন। systrace দ্বারা প্রদত্ত অতিরিক্ত সিস্টেম-স্তরের ডেটা আপনাকে নেটিভ সিস্টেম প্রক্রিয়াগুলি পরিদর্শন করতে এবং ড্রপ করা বা বিলম্বিত ফ্রেমের সমস্যা সমাধানে সহায়তা করতে পারে।

    Android 9 (API স্তর 28) বা উচ্চতর চলমান ডিভাইসগুলিতে, আপনি একটি ডিভাইসে সিস্টেম ট্রেস রেকর্ড করতে সিস্টেম ট্রেসিং নামে একটি সিস্টেম অ্যাপ ব্যবহার করতে পারেন।

একটি রেকর্ডিং কনফিগারেশন তৈরি করুন, সম্পাদনা করুন বা দেখুন

আপনি CPU রেকর্ডিং কনফিগারেশন ডায়ালগে রেকর্ডিং কনফিগারেশন তৈরি, সম্পাদনা এবং দেখুন, যা আপনি CPU প্রোফাইলারের শীর্ষে থাকা রেকর্ডিং কনফিগারেশন ড্রপডাউন মেনু থেকে কনফিগারেশন সম্পাদনা নির্বাচন করে খুলবেন।

একটি বিদ্যমান রেকর্ডিং কনফিগারেশনের সেটিংস দেখতে, CPU রেকর্ডিং কনফিগারেশন ডায়ালগের বাম ফলকে এটি নির্বাচন করুন।

একটি নতুন রেকর্ডিং কনফিগারেশন তৈরি করতে, নিম্নলিখিতগুলি করুন:

  1. Add এ ক্লিক করুন ডায়ালগের উপরের-বামে। এটি কিছু ডিফল্ট সেটিংস সহ একটি নতুন কনফিগারেশন তৈরি করে।
  2. আপনার কনফিগারেশনের নাম দিন।
  3. একটি ট্রেস প্রযুক্তি নির্বাচন করুন।
  4. নমুনা রেকর্ডিং কনফিগারেশনের জন্য, মাইক্রোসেকেন্ডে (μs) স্যাম্পলিং ব্যবধান নির্দিষ্ট করুন। এই মানটি আপনার অ্যাপের কল স্ট্যাকের প্রতিটি নমুনার মধ্যবর্তী সময়ের প্রতিনিধিত্ব করে। আপনার নির্দিষ্ট ব্যবধান যত কম হবে, তত দ্রুত আপনি রেকর্ড করা ডেটার ফাইলের আকার সীমাতে পৌঁছাবেন।
  5. সংযুক্ত ডিভাইসে লেখা রেকর্ড করা ডেটার জন্য মেগাবাইটে (MB) ফাইলের আকারের সীমা নির্দিষ্ট করুন। আপনি রেকর্ডিং বন্ধ করলে, Android Studio এই ডেটা পার্স করে এবং প্রোফাইলার উইন্ডোতে প্রদর্শন করে। সুতরাং, আপনি যদি সীমা বাড়ান এবং প্রচুর পরিমাণে ডেটা রেকর্ড করেন, তাহলে Android স্টুডিও ফাইলটি পার্স করতে অনেক বেশি সময় নেয় এবং প্রতিক্রিয়াহীন হয়ে যেতে পারে।

    দ্রষ্টব্য: আপনি যদি Android 8.0 (API স্তর 26) বা উচ্চতর চলমান একটি সংযুক্ত ডিভাইস ব্যবহার করেন, তাহলে ট্রেস ডেটার ফাইলের আকারের কোনো সীমা নেই এবং এই মানটি উপেক্ষা করা হয়৷ যাইহোক, প্রতিটি রেকর্ডিংয়ের পরে ডিভাইসটি কতটা ডেটা সংগ্রহ করে সে সম্পর্কে আপনাকে এখনও সতর্ক থাকতে হবে—Android স্টুডিওতে বড় ট্রেস ফাইল পার্স করতে অসুবিধা হতে পারে। উদাহরণস্বরূপ, যদি আপনি একটি সংক্ষিপ্ত নমুনা ব্যবধান সহ একটি নমুনাযুক্ত ট্রেস রেকর্ড করছেন বা একটি যন্ত্রযুক্ত ট্রেস যখন আপনার অ্যাপটি অল্প সময়ের মধ্যে অনেক পদ্ধতি কল করে, আপনি দ্রুত বড় ট্রেস ফাইল তৈরি করবেন।

  6. পরিবর্তনগুলি গ্রহণ করতে এবং অন্যান্য কনফিগারেশনে পরিবর্তন করা চালিয়ে যেতে, প্রয়োগ করুন ক্লিক করুন। সমস্ত প্রয়োগ করা পরিবর্তনগুলি গ্রহণ করতে এবং ডায়ালগটি বন্ধ করতে, ঠিক আছে ক্লিক করুন।

ডিবাগ API দিয়ে CPU কার্যকলাপ রেকর্ড করুন

আপনি আপনার অ্যাপটিকে CPU প্রোফাইলারে CPU কার্যকলাপের রেকর্ডিং শুরু এবং বন্ধ করার ক্ষমতা দিতে Debug API ব্যবহার করতে পারেন।

আপনার অ্যাপ startMethodTracing(String tracePath) কল করলে CPU প্রোফাইলার রেকর্ডিং শুরু করে এবং যখন আপনার অ্যাপ stopMethodTracing() কল করে তখন CPU প্রোফাইলার রেকর্ডিং বন্ধ করে দেয়। এই API ব্যবহার করে ট্রিগার হওয়া CPU কার্যকলাপ রেকর্ড করার সময়, CPU প্রোফাইলার ডিবাগ API কে সক্রিয় CPU রেকর্ডিং কনফিগারেশন হিসাবে দেখায়।

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

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

8 মেগাবাইটের বাফার আকারের সীমার কারণে, Debug এপিআই-তে startMethodTracing(String tracePath) পদ্ধতিটি সংক্ষিপ্ত বিরতি বা পরিস্থিতিগুলির জন্য ডিজাইন করা হয়েছে যা ম্যানুয়ালি রেকর্ডিং শুরু/বন্ধ করা কঠিন। রেকর্ডিংয়ের দীর্ঘ সময়ের জন্য, Android স্টুডিওতে প্রোফাইলার UI ব্যবহার করুন।

আরও তথ্যের জন্য, দেখুন আপনার অ্যাপের সাহায্যে ট্রেস লগ তৈরি করুন

অ্যাপ স্টার্টআপের সময় CPU কার্যকলাপ রেকর্ড করুন

অ্যাপ স্টার্টআপের সময় স্বয়ংক্রিয়ভাবে CPU কার্যকলাপ রেকর্ড করা শুরু করতে, নিম্নলিখিতগুলি করুন:

  1. রান > কনফিগারেশন সম্পাদনা নির্বাচন করুন।
  2. প্রোফাইলিং ট্যাবে, স্টার্টআপে একটি পদ্ধতির ট্রেস রেকর্ড করা শুরু করুন এর পাশের বাক্সটি চেক করুন।
  3. মেনু থেকে একটি CPU রেকর্ডিং কনফিগারেশন নির্বাচন করুন।
  4. প্রয়োগ করুন ক্লিক করুন।
  5. রান > প্রোফাইল নির্বাচন করে Android 8.0 (API লেভেল 26) বা উচ্চতর চলমান ডিভাইসে আপনার অ্যাপ স্থাপন করুন।