پرفتو

perfetto ابزاری است که به شما امکان می‌دهد اطلاعات عملکرد دستگاه‌های Android را از طریق 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 خروجی را در فایلی که در پرچم های قبلی توضیح داده شده است می نویسد. فرمت خروجی با فرمت تعریف شده در AOSP trace.proto کامپایل می شود.

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

--upload پس از تکمیل، ردیابی را به بسته مشخص شده توسط پیام IncidentReportConfig در پیکربندی proto trace منتقل می کند.
--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 در حالت نور فهرست می کند:

جدول 2. فهرست گزینه های موجود ابزار perfetto هنگام استفاده از حالت نور.

گزینه توضیحات
--time TIME [s|m|h] |
-t TIME [s|m|h]
مدت زمان ردیابی را بر حسب ثانیه، دقیقه یا ساعت مشخص می کند. به عنوان مثال، --time 1m مدت زمان ردیابی 1 دقیقه را مشخص می کند. مدت زمان پیش فرض 10 ثانیه است.
--buffer SIZE [mb|gb] |
-b SIZE [mb|gb]
اندازه بافر حلقه را بر حسب مگابایت (mb) یا گیگابایت (gb) مشخص می کند. پارامتر پیش فرض --buffer 32mb است.
--size SIZE [mb|gb] |
-s SIZE [mb|gb]
حداکثر اندازه فایل را بر حسب مگابایت (mb) یا گیگابایت (گیگابایت) مشخص می کند. به طور پیش فرض، perfetto فقط از بافر حلقه درون حافظه استفاده می کند.
--app | -a نام برنامه اندروید (atrace).

این گزینه ها با لیستی از مشخص کننده های رویداد دنبال می شوند:

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

رویداد توضیحات
ATRACE_CAT دسته‌های atrace را که می‌خواهید ردیابی برای آن‌ها ثبت کنید، مشخص می‌کند. برای مثال، دستور زیر Window Manager را با استفاده از 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 در حالت عادی فهرست می کند:

جدول 4. فهرست گزینه های موجود ابزار perfetto هنگام استفاده از حالت عادی.

گزینه توضیحات
--config CONFIG_FILE | -c CONFIG_FILE مسیر فایل پیکربندی را مشخص می کند. در حالت عادی، برخی از تنظیمات ممکن است در بافر پروتکل پیکربندی کدگذاری شوند. این فایل باید با طرح بافر پروتکل تعریف شده در AOSP trace_config.proto مطابقت داشته باشد.

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

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

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

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

ftrace

منبع داده 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
  • رویدادهای سیستم فایل:

  • atrace

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

آمار فرآیند

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

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

داده هایی که perfetto تولید می کند شامل:

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

heapprofd

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

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

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

منابع دیگر

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

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