পারফেটো

perfetto হলো এমন একটি টুল যা আপনাকে অ্যান্ড্রয়েড ডিবাগ ব্রিজ (ADB) এর মাধ্যমে অ্যান্ড্রয়েড ডিভাইস থেকে পারফরম্যান্সের তথ্য সংগ্রহ করতে দেয়। adb shell perfetto ... ` কমান্ডটি ব্যবহার করে perfetto টুলটি চালু করুন। perfetto আপনার ডিভাইস থেকে পারফরম্যান্স ট্রেস সংগ্রহ করার জন্য বিভিন্ন উৎস ব্যবহার করে, যেমন:

  • কার্নেল থেকে তথ্যের জন্য ftrace
  • সার্ভিস এবং অ্যাপে ইউজার-স্পেস অ্যানোটেশনের জন্য atrace
  • সার্ভিস এবং অ্যাপগুলির নেটিভ মেমরি ব্যবহারের তথ্যের জন্য heapprofd

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

সিনট্যাক্স

এই অংশে বর্ণনা করা হয়েছে কিভাবে ADB ব্যবহার করে বিভিন্ন মোডের জন্য perfetto কল করতে হয় এবং একটি ট্রেস তৈরি করতে হয়।

ডেটা উৎস নির্বাচন

perfetto নিম্নলিখিত দুটি মোড অন্তর্ভুক্ত রয়েছে, যা আপনার ট্রেস রেকর্ড করার জন্য ব্যবহৃত ডেটা উৎসগুলো নির্ধারণ করে:

  • লাইট মোড : এর মাধ্যমে শুধুমাত্র ডেটা সোর্সগুলোর একটি উপসেট, বিশেষত atrace এবং ftrace , নির্বাচন করা যায়। তবে, এই মোডটি systrace এর মতো একটি ইন্টারফেস প্রদান করে।
  • নরমাল মোড : এটি একটি প্রোটোকল বাফারে এর কনফিগারেশন গ্রহণ করে এবং atraceftrace থেকে ভিন্ন ডেটা সোর্স ব্যবহার করে perfetto এর আরও বেশি কার্যকারিতা কাজে লাগাতে দেয়।

সাধারণ বিকল্পগুলি

উভয় মোডে perfetto ব্যবহার করার সময় উপলব্ধ বিকল্পগুলি নিম্নলিখিত সারণিতে তালিকাভুক্ত করা হলো:

সারণি ১. উপলব্ধ সাধারণ পারফেটটো টুল বিকল্পসমূহের তালিকা।

বিকল্প বর্ণনা
--background |
-d
perfetto অবিলম্বে কমান্ড-লাইন ইন্টারফেস থেকে বেরিয়ে আসে এবং ব্যাকগ্রাউন্ডে আপনার ট্রেস রেকর্ড করা চালিয়ে যায়।
--background-wait | -D --background মতোই, কিন্তু এটি এক্সিট করার আগে সমস্ত ডেটা সোর্স চালু হওয়ার জন্য (৩০ সেকেন্ড পর্যন্ত) অপেক্ষা করে। সফল অ্যাকনলেজমেন্ট পেলে এক্সিট কোড শূন্য হয় এবং অন্যথায় (এরর বা টাইমআউটের ক্ষেত্রে) অশূন্য হয়।
--alert-id যে অ্যালার্টটি এই ট্রেসটি চালু করেছে তার আইডি।
--config-id ট্রিগারিং কনফিগের আইডি।
--config-uid যে অ্যাপটি কনফিগারেশনটি নিবন্ধন করেছে তার UID।
--subscription-id যে সাবস্ক্রিপশনটি এই ট্রেসটি চালু করেছে তার আইডি।
--out OUT_FILE |
-o OUT_FILE

আউটপুট ট্রেস ফাইলের কাঙ্ক্ষিত পাথ নির্দিষ্ট করে অথবা stdout এর জন্য - ব্যবহার করে। perfetto পূর্ববর্তী ফ্ল্যাগগুলিতে বর্ণিত ফাইলে আউটপুট লেখে। আউটপুট ফরম্যাটটি AOSP trace.proto তে সংজ্ঞায়িত ফরম্যাট অনুযায়ী কম্পাইল হয়।

দ্রষ্টব্য: আপনাকে অবশ্যই আউটপুট ফাইলের সম্পূর্ণ পাথনেম উল্লেখ করতে হবে। সাধারণত ফাইলগুলো /data/misc/perfetto-traces ফোল্ডারে লেখা উচিত।

--upload সম্পন্ন হলে, প্রোটো ট্রেস কনফিগে থাকা IncidentReportConfig মেসেজে নির্দিষ্ট করা প্যাকেজে ট্রেসটি পাঠিয়ে দেয়।
--no-guardrails টেস্টিং চলাকালীন --upload ফ্ল্যাগটি সক্রিয় করলে অতিরিক্ত রিসোর্স ব্যবহারের বিরুদ্ধে সুরক্ষা ব্যবস্থা নিষ্ক্রিয় হয়ে যায়।
--reset-guardrails গার্ডরেলগুলোর স্থায়ী অবস্থা রিসেট করে এবং পরীক্ষার জন্য প্রস্থান করে।
--rsave-for-bugreport যদি bugreport_score > 0 সহ কোনো ট্রেস চলমান থাকে, তবে ট্রেসটি একটি ফাইলে সংরক্ষণ করে। কাজ শেষ হলে ফাইলের পাথটি আউটপুট করে।
--query সার্ভিসের অবস্থা জিজ্ঞাসা করে এবং তা পাঠযোগ্য টেক্সট হিসেবে প্রিন্ট করে।
--query-raw --query এর অনুরূপ, কিন্তু এটি tracing_service_state.proto.
--help | -h perfetto টুলের জন্য সাহায্যমূলক লেখা প্রিন্ট করে।

আলোর মোড

লাইট মোডে perfetto ব্যবহার করার সাধারণ সিনট্যাক্সটি নিম্নরূপ:

 adb shell perfetto [ --time TIMESPEC ] [ --buffer SIZE ] [ --size SIZE ]
             [ ATRACE_CAT | FTRACE_GROUP/FTRACE_NAME | FTRACE_GROUP/* ]...
             --out FILE

লাইট মোডে perfetto ব্যবহার করার সময় উপলব্ধ বিকল্পগুলি নিম্নলিখিত সারণিতে তালিকাভুক্ত করা হলো:

সারণি ২. লাইট মোড ব্যবহার করার সময় উপলব্ধ perfetto টুল অপশনগুলোর তালিকা।

বিকল্প বর্ণনা
--time TIME [s|m|h] |
-t TIME [s|m|h]
সেকেন্ড, মিনিট বা ঘণ্টায় ট্রেসের সময়কাল নির্দিষ্ট করে। উদাহরণস্বরূপ, --time 1m ১ মিনিটের ট্রেস সময়কাল নির্দিষ্ট করে। ডিফল্ট সময়কাল হলো ১০ সেকেন্ড।
--buffer SIZE [mb|gb] |
-b SIZE [mb|gb]
রিং বাফারের আকার মেগাবাইট (mb) বা গিগাবাইট (gb)-এ নির্দিষ্ট করে। ডিফল্ট প্যারামিটারটি হলো --buffer 32mb
--size SIZE [mb|gb] |
-s SIZE [mb|gb]
মেগাবাইট (mb) বা গিগাবাইট (gb)-এ ফাইলের সর্বোচ্চ আকার নির্দিষ্ট করে। ডিফল্টরূপে, perfetto শুধুমাত্র ইন-মেমরি রিং-বাফার ব্যবহার করে।
--app | -a অ্যান্ড্রয়েড (অ্যাট্রেস) অ্যাপের নাম

এই বিকল্পগুলির পরে ইভেন্ট স্পেসিফায়ারগুলির একটি তালিকা রয়েছে:

সারণি ৩. লাইট মোডের জন্য ইভেন্ট স্পেসিফায়ারসমূহের তালিকা।

অনুষ্ঠান বর্ণনা
ATRACE_CAT আপনি যে atrace ক্যাটাগরিগুলোর জন্য ট্রেস রেকর্ড করতে চান, তা নির্দিষ্ট করে। উদাহরণস্বরূপ, নিম্নলিখিত কমান্ডটি atrace ব্যবহার করে উইন্ডো ম্যানেজারকে ট্রেস করে:
    adb shell perfetto --out FILE wm
    

অন্যান্য বিভাগ নথিভুক্ত করতে, atrace বিভাগগুলির এই তালিকাটি দেখুন।

FTRACE_GROUP/FTRACE_NAME আপনি যে ftrace ইভেন্টগুলোর ট্রেস রেকর্ড করতে চান, তা নির্দিষ্ট করে। উদাহরণস্বরূপ, নিম্নলিখিত কমান্ডটি sched/sched_switch ইভেন্টগুলো ট্রেস করে:
      adb shell perfetto --out FILE sched/sched_switch
      

সাধারণ মোড

নরমাল মোডে perfetto ব্যবহার করার সাধারণ সিনট্যাক্সটি নিম্নরূপ:

 adb shell perfetto [ --txt ] --config CONFIG_FILE --out FILE

সাধারণ মোডে perfetto ব্যবহার করার সময় উপলব্ধ বিকল্পগুলি নিম্নলিখিত সারণিতে তালিকাভুক্ত করা হলো:

সারণি ৪. সাধারণ মোড ব্যবহার করার সময় উপলব্ধ perfetto টুল অপশনগুলোর তালিকা।

বিকল্প বর্ণনা
--config CONFIG_FILE | -c CONFIG_FILE একটি কনফিগারেশন ফাইলের পাথ নির্দিষ্ট করে। সাধারণ মোডে, কিছু কনফিগারেশন একটি কনফিগারেশন প্রোটোকল বাফারে এনকোড করা থাকতে পারে। এই ফাইলটিকে অবশ্যই AOSP trace_config.proto তে সংজ্ঞায়িত প্রোটোকল বাফার স্কিমা মেনে চলতে হবে।

AOSP data_source_config.proto তে সংজ্ঞায়িত TraceConfig এর DataSourceConfig মেম্বার ব্যবহার করে ডেটা সোর্সগুলো নির্বাচন ও কনফিগার করুন।

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

সমর্থিত ডেটা উৎস

এই বিভাগে সেই বিভিন্ন উৎসগুলো বর্ণনা করা হয়েছে যা perfetto আপনার ট্রেস তৈরি করতে ব্যবহার করে।

ftrace

ftrace ডেটা সোর্সটি perfetto কার্নেল থেকে ইভেন্ট সংগ্রহ করতে দেয়।

DataSourceConfig-এ ftrace_config সেট করে এই সোর্সটি সক্রিয় করুন।

যে ইভেন্টগুলো সক্রিয় করা যেতে পারে তার মধ্যে রয়েছে:

আপনার ডিভাইস, ওএস সংস্করণ বা কার্নেলের উপর নির্ভর করে আরও ইভেন্ট উপলব্ধ থাকতে পারে। আরও তথ্যের জন্য, কনফিগ প্রোটোগুলো দেখুন।

প্রক্রিয়া পরিসংখ্যান

প্রসেস স্ট্যাটস ডেটা সোর্স আপনাকে সিস্টেম এবং স্বতন্ত্র প্রসেসগুলো সম্পর্কে পোল করা কাউন্টারগুলো পেতে দেয়।

DataSourceConfig-এ process_stats_config এবং sys_stats_config সেট করে এই সোর্সটি সক্রিয় করুন।

perfetto যে ডেটা তৈরি করে তার মধ্যে অন্তর্ভুক্ত রয়েছে:

আপনার ডিভাইস, ওএস সংস্করণ এবং কার্নেলের উপর নির্ভর করে আরও ইভেন্ট উপলব্ধ হতে পারে। আরও জানতে, sys_stats এবং process_stats এর কনফিগ প্রোটোগুলো দেখুন।

heapprofd

heapprofd আপনাকে নেটিভ মেমরি ব্যবহারের কারণগুলো নমুনা হিসেবে পরীক্ষা করার সুযোগ দেয়।

DataSourceConfig-এ heapprofd_config সেট করে এই সোর্সটি সক্রিয় করুন। এই সেটিংটি ProfilePackets তৈরি করে, যার মধ্যে কলস্ট্যাকের জাভা ফ্রেমগুলো অন্তর্ভুক্ত থাকে।

heapprofd কীভাবে ব্যবহার করতে হয় সে সম্পর্কে অতিরিক্ত তথ্য perfetto.dev এ পাওয়া যাবে।

অন্যান্য উৎস

আপনার ডিভাইস, ওএস সংস্করণ এবং কার্নেলের উপর নির্ভর করে আরও ডেটা উৎস উপলব্ধ থাকতে পারে। আরও জানতে, ডেটা উৎস কনফিগারেশন প্রোটোগুলো দেখুন।

perfetto সম্পর্কে অতিরিক্ত তথ্য perfetto.dev -এ পাওয়া যাবে।