پرفتو

perfetto ابزاری است که به شما امکان می‌دهد اطلاعات عملکرد را از دستگاه‌های اندروید از طریق Android Debug Bridge (ADB) جمع‌آوری کنید. ابزار perfetto را با استفاده از دستور adb shell perfetto ... فراخوانی کنید. perfetto از منابع مختلفی برای جمع‌آوری ردیابی عملکرد از دستگاه شما استفاده می‌کند، مانند:

  • ftrace برای اطلاعات از هسته
  • atrace برای حاشیه‌نویسی فضای کاربر در سرویس‌ها و برنامه‌ها
  • heapprofd برای اطلاعات مربوط به میزان استفاده از حافظه داخلی سرویس‌ها و برنامه‌ها

این صفحه نحوه فراخوانی perfetto و پیکربندی آن برای تولید خروجی مطلوب را شرح می‌دهد. برای اطلاعات بیشتر، به مستندات perfetto مراجعه کنید.

نحو

این بخش نحوه استفاده از ADB برای فراخوانی perfetto برای حالت‌های مختلف و تولید ردیابی را شرح می‌دهد.

انتخاب منبع داده

perfetto شامل دو حالت زیر است که منابع داده‌ای را که برای ثبت ردیابی شما استفاده می‌کند، تعیین می‌کند:

  • حالت روشن : می‌تواند فقط زیرمجموعه‌ای از منابع داده، به‌ویژه atrace و ftrace را انتخاب کند. با این حال، این حالت رابطی مشابه systrace ارائه می‌دهد.
  • حالت عادی : پیکربندی خود را در یک بافر پروتکل دریافت می‌کند و به شما امکان می‌دهد با استفاده از منابع داده‌ای متفاوت از atrace و ftrace ، از قابلیت‌های perfetto بهره بیشتری ببرید.

گزینه‌های عمومی

جدول زیر گزینه‌های موجود هنگام استفاده از perfetto در هر دو حالت را فهرست می‌کند:

جدول 1. فهرست گزینه‌های موجود برای ابزار پرفِتو عمومی.

گزینه توضیحات
--background |
-d
perfetto بلافاصله از رابط خط فرمان خارج می‌شود و ضبط ردیابی شما را در پس‌زمینه ادامه می‌دهد.
--background-wait | -D مانند --background ، اما قبل از خروج، (تا 30 ثانیه) منتظر می‌ماند تا همه منابع داده شروع به کار کنند. کد خروج در صورت دریافت موفقیت‌آمیز تأیید، صفر و در غیر این صورت غیر صفر است (خطا یا مهلت).
--alert-id شناسه هشداری که این ردیابی را آغاز کرده است.
--config-id شناسه پیکربندی فعال‌کننده.
--config-uid شناسه کاربری (UID) برنامه‌ای که پیکربندی را ثبت کرده است.
--subscription-id شناسه اشتراکی که این ردیابی را آغاز کرده است.
--out OUT_FILE |
-o OUT_FILE

مسیر مورد نظر برای فایل ردیابی خروجی یا - برای stdout مشخص می‌کند. perfetto خروجی را در فایلی که در پرچم‌های قبلی توضیح داده شده است می‌نویسد. فرمت خروجی با فرمت تعریف شده در trace.proto AOSP کامپایل می‌شود.

نکته: شما باید نام مسیر کامل فایل خروجی را مشخص کنید. معمولاً فایل‌ها باید در پوشه /data/misc/perfetto-traces نوشته شوند.

--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] |
-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)

پس از این گزینه‌ها، فهرستی از مشخص‌کننده‌های رویداد آمده است:

جدول ۳. فهرست مشخص‌کننده‌های رویداد برای حالت روشن.

رویداد توضیحات
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 مطابقت داشته باشد.

منابع داده را با استفاده از عضو DataSourceConfig از TraceConfig ، همانطور که در AOSP data_source_config.proto تعریف شده است، انتخاب و پیکربندی کنید.

--txt به perfetto دستور می‌دهد که فایل پیکربندی را به صورت pbtxt تجزیه کند. این پرچم فقط برای آزمایش محلی در نظر گرفته شده است و فعال کردن آن برای محیط عملیاتی توصیه نمی‌شود.

منابع داده پشتیبانی شده

این بخش منابع مختلفی را که perfetto برای تولید ردیابی شما استفاده می‌کند، شرح می‌دهد.

فتریس

منبع داده ftrace به perfetto اجازه می‌دهد رویدادها را از هسته دریافت کند.

با تنظیم ftrace_config در DataSourceConfig، این منبع را فعال کنید.

رویدادهایی که می‌توانند فعال شوند عبارتند از:

بسته به دستگاه، نسخه سیستم عامل یا هسته شما، ممکن است رویدادهای بیشتری در دسترس باشند. برای اطلاعات بیشتر، به config protos مراجعه کنید.

آمار فرآیند

منبع داده آمار فرآیند به شما امکان می‌دهد تا شمارنده‌های نظرسنجی‌شده در مورد سیستم و فرآیندهای منفرد را دریافت کنید.

با تنظیم process_stats_config و sys_stats_config در DataSourceConfig، این منبع را فعال کنید.

داده‌هایی که perfetto تولید می‌کند شامل موارد زیر است:

بسته به دستگاه، نسخه سیستم عامل و هسته شما، ممکن است رویدادهای بیشتری در دسترس باشند. برای کسب اطلاعات بیشتر، به پروتوهای پیکربندی برای sys_stats و process_stats مراجعه کنید.

heapprofd

heapprofd به شما امکان می‌دهد علل استفاده از حافظه اصلی را نمونه‌برداری کنید.

این منبع را با تنظیم heapprofd_config در DataSourceConfig فعال کنید. این تنظیم ProfilePackets را تولید می‌کند که شامل فریم‌های جاوای callstack است.

اطلاعات بیشتر در مورد نحوه استفاده heapprofd می‌توانید در perfetto.dev بیابید.

منابع دیگر

بسته به دستگاه، نسخه سیستم عامل و هسته شما، ممکن است منابع داده بیشتری در دسترس باشد. برای کسب اطلاعات بیشتر، به پیکربندی منبع داده protos مراجعه کنید.

اطلاعات بیشتر در مورد perfetto می‌توانید در perfetto.dev بیابید.