perfetto ابزاری است که به شما امکان میدهد اطلاعات عملکرد را از دستگاههای اندروید از طریق Android Debug Bridge (ADB) جمعآوری کنید. ابزار perfetto را با استفاده از دستور adb shell perfetto ... فراخوانی کنید. perfetto از منابع مختلفی برای جمعآوری ردیابی عملکرد از دستگاه شما استفاده میکند، مانند:
-
ftraceبرای اطلاعات از هسته -
atraceبرای حاشیهنویسی فضای کاربر در سرویسها و برنامهها -
heapprofdبرای اطلاعات مربوط به میزان استفاده از حافظه داخلی سرویسها و برنامهها
این صفحه نحوه فراخوانی perfetto و پیکربندی آن برای تولید خروجی مطلوب را شرح میدهد. برای اطلاعات بیشتر، به مستندات perfetto مراجعه کنید.
مهارتهای اندروید
مشاهده در گیتهاب تحلیل ردیابی پرفتو
perfetto استفاده کنید.android skills add [perfetto-trace-analyzer|perfetto-sql]
نحو
این بخش نحوه استفاده از ADB برای فراخوانی perfetto برای حالتهای مختلف و تولید ردیابی را شرح میدهد.
انتخاب منبع داده
perfetto شامل دو حالت زیر است که منابع دادهای را که برای ثبت ردیابی شما استفاده میکند، تعیین میکند:
- حالت روشن : میتواند فقط زیرمجموعهای از منابع داده، بهویژه
atraceوftraceرا انتخاب کند. با این حال، این حالت رابطی مشابهsystraceارائه میدهد. - حالت عادی : پیکربندی خود را در یک بافر پروتکل دریافت میکند و به شما امکان میدهد با استفاده از منابع دادهای متفاوت از
atraceوftrace، از قابلیتهایperfettoبهره بیشتری ببرید.
گزینههای عمومی
جدول زیر گزینههای موجود هنگام استفاده از perfetto در هر دو حالت را فهرست میکند:
جدول 1. فهرست گزینههای موجود برای ابزار پرفِتو عمومی.
| گزینه | توضیحات |
|---|---|
--background | | perfetto بلافاصله از رابط خط فرمان خارج میشود و ضبط ردیابی شما را در پسزمینه ادامه میدهد. |
--background-wait | -D | مانند --background ، اما قبل از خروج، (تا 30 ثانیه) منتظر میماند تا همه منابع داده شروع به کار کنند. کد خروج در صورت دریافت موفقیتآمیز تأیید، صفر و در غیر این صورت غیر صفر است (خطا یا مهلت). |
--alert-id | شناسه هشداری که این ردیابی را آغاز کرده است. |
--config-id | شناسه پیکربندی فعالکننده. |
--config-uid | شناسه کاربری (UID) برنامهای که پیکربندی را ثبت کرده است. |
--subscription-id | شناسه اشتراکی که این ردیابی را آغاز کرده است. |
--out OUT_FILE | | مسیر مورد نظر برای فایل ردیابی خروجی یا نکته: شما باید نام مسیر کامل فایل خروجی را مشخص کنید. معمولاً فایلها باید در پوشه |
--upload | پس از اتمام، ردیابی را به بستهای که توسط پیام IncidentReportConfig در پیکربندی ردیابی proto مشخص شده است، منتقل میکند. |
--no-guardrails | هنگام فعال کردن پرچم --upload در حین آزمایش، محافظت در برابر استفاده بیش از حد از منابع را غیرفعال میکند. |
--reset-guardrails | وضعیت دائمی گاردریلها را ریست میکند و برای آزمایش خارج میشود. |
--rsave-for-bugreport | اگر ردیابی با bugreport_score > 0 در حال اجرا باشد، ردیابی را در یک فایل ذخیره میکند. پس از اتمام، مسیر را خروجی میدهد. |
--query | وضعیت سرویس را پرسوجو میکند و آن را به صورت متن قابل خواندن توسط انسان چاپ میکند. |
--query-raw | مشابه --query است، اما بایتهای خام proto-encode شده از 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] | | مدت زمان ردیابی را بر حسب ثانیه، دقیقه یا ساعت مشخص میکند. برای مثال، --time 1m مدت زمان ردیابی ۱ دقیقه را مشخص میکند. مدت زمان پیشفرض ۱۰ ثانیه است. |
--buffer SIZE [mb|gb] | | اندازه بافر حلقه را بر حسب مگابایت (mb) یا گیگابایت (gb) مشخص میکند. پارامتر پیشفرض --buffer 32mb است. |
--size SIZE [mb|gb] | | حداکثر اندازه فایل را بر حسب مگابایت (mb) یا گیگابایت (gb) مشخص میکند. به طور پیشفرض، perfetto فقط از بافر حلقهای درون حافظه استفاده میکند. |
--app | -a | نام برنامه اندروید (atrace) |
پس از این گزینهها، فهرستی از مشخصکنندههای رویداد آمده است:
جدول ۳. فهرست مشخصکنندههای رویداد برای حالت روشن.
| رویداد | توضیحات |
|---|---|
| ATRACE_CAT | دستههای atrace که میخواهید ردیابی برای آنها ثبت شود را مشخص میکند. برای مثال، دستور زیر با استفاده از atrace ، مدیر پنجره را ردیابی میکند:
adb shell perfetto --out FILE wm
برای ثبت سایر دستهها، به این لیست از دستههای |
| 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 مطابقت داشته باشد. منابع داده را با استفاده از عضو |
--txt | به perfetto دستور میدهد که فایل پیکربندی را به صورت pbtxt تجزیه کند. این پرچم فقط برای آزمایش محلی در نظر گرفته شده است و فعال کردن آن برای محیط عملیاتی توصیه نمیشود. |
منابع داده پشتیبانی شده
این بخش منابع مختلفی را که perfetto برای تولید ردیابی شما استفاده میکند، شرح میدهد.
فتریس
منبع داده ftrace به perfetto اجازه میدهد رویدادها را از هسته دریافت کند.
با تنظیم ftrace_config در DataSourceConfig، این منبع را فعال کنید.
رویدادهایی که میتوانند فعال شوند عبارتند از:
-
sched/sched_switch -
sched/sched_wakeup -
sched/sched_wakeup_new -
sched/sched_process_exec -
sched/sched_process_exit -
sched/sched_process_fork -
sched/sched_process_free -
sched/sched_process_hang -
sched/sched_process_wait
-
رویدادهای سیستم فایل:
بسته به دستگاه، نسخه سیستم عامل یا هسته شما، ممکن است رویدادهای بیشتری در دسترس باشند. برای اطلاعات بیشتر، به config protos مراجعه کنید.
آمار فرآیند
منبع داده آمار فرآیند به شما امکان میدهد تا شمارندههای نظرسنجیشده در مورد سیستم و فرآیندهای منفرد را دریافت کنید.
با تنظیم process_stats_config و sys_stats_config در DataSourceConfig، این منبع را فعال کنید.
دادههایی که perfetto تولید میکند شامل موارد زیر است:
-
/proc/meminfo -
/proc/vmstat -
/proc/stat
-
-
/proc/\<pid\>/status -
/proc/\<pid\>/oom_score_adj
-
بسته به دستگاه، نسخه سیستم عامل و هسته شما، ممکن است رویدادهای بیشتری در دسترس باشند. برای کسب اطلاعات بیشتر، به پروتوهای پیکربندی برای sys_stats و process_stats مراجعه کنید.
heapprofd
heapprofd به شما امکان میدهد علل استفاده از حافظه اصلی را نمونهبرداری کنید.
این منبع را با تنظیم heapprofd_config در DataSourceConfig فعال کنید. این تنظیم ProfilePackets را تولید میکند که شامل فریمهای جاوای callstack است.
اطلاعات بیشتر در مورد نحوه استفاده heapprofd میتوانید در perfetto.dev بیابید.
منابع دیگر
بسته به دستگاه، نسخه سیستم عامل و هسته شما، ممکن است منابع داده بیشتری در دسترس باشد. برای کسب اطلاعات بیشتر، به پیکربندی منبع داده protos مراجعه کنید.
اطلاعات بیشتر در مورد perfetto میتوانید در perfetto.dev بیابید.