داده های عملکرد را جمع آوری کنید

سرویس بومی Watchdog داده‌های عملکرد ورودی/خروجی را از ابتدای راه‌اندازی سیستم ضبط می‌کند. سرویس بومی داده های عملکرد جمع آوری شده را در گزارش اشکال تخلیه می کند. فروشندگان می توانند سرویس بومی را از طریق dumpsys پرس و جو کنند تا داده های جمع آوری شده را تخلیه کنند یا یک جلسه جمع آوری سفارشی برای اشکال زدایی شروع کنند.

فراوانی جمع آوری داده ها

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

  • در ساخت‌های userdebug یا eng، Watchdog داده‌های عملکرد را هر یک (1) ثانیه یک‌بار در حین راه‌اندازی سیستم و هر یک (1) دقیقه پس از بوت کامل یک‌بار جمع‌آوری می‌کند.
  • در ساخت‌های کاربر، Watchdog داده‌های عملکرد را هر 20 ثانیه یک بار در حین راه‌اندازی سیستم و هر دو (2) دقیقه یک‌بار پس از اتمام بوت جمع‌آوری می‌کند.

رویدادهای جمع آوری داده ها

نمایه سازی مبتنی بر نمونه در طول رویدادهای مختلف سیستم (مانند راه اندازی سیستم، بیدار شدن سیستم و سوئیچ کاربر) و در طول پنجره N دقیقه آخر انجام می شود.

  • رویدادهای آخرین N دقیقه قبل از ایجاد گزارش اشکال: در یک پنجره متحرک 30 دقیقه ای ایجاد شد.
  • رویدادهای زمان راه‌اندازی: پس از راه‌اندازی ایجاد می‌شوند.
  • رویدادهای سوئیچ کاربر: پس از شروع سوئیچ کاربر ایجاد می شود.
  • رویدادهای مجموعه سفارشی: می تواند دوره نظرسنجی، حداکثر مدت زمان را مشخص کند و می تواند براساس بسته ها فیلتر شود.

داده های عملکرد را تخلیه کنید

هنگامی که یک گزارش اشکال ضبط می شود، سرویس بومی Watchdog داده های عملکرد جمع آوری شده را در گزارش اشکال تخلیه می کند. فروشندگان می توانند سرویس بومی را از طریق دستور dumpsys زیر پرس و جو کنند تا داده های عملکرد جمع آوری شده را تخلیه کنند. برای جزئیات بیشتر در مورد گزارش، به بخش درک گزارش داده های عملکرد مراجعه کنید.

adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default > /tmp/carwatchdog_dump.txt

داده های عملکرد را برای اشکال زدایی جمع آوری کنید

فروشندگان می توانند از سرویس بومی Watchdog برای جمع آوری سفارشی داده های عملکرد برای اهداف اشکال زدایی استفاده کنند. به عنوان مثال، برای درک میزان استفاده I/O از یک برنامه یا سرویس، فروشندگان می‌توانند یک مجموعه داده عملکرد سفارشی را انجام دهند که استفاده از I/O لیست خاصی از بسته‌ها یا کل سیستم را نمایه می‌کند.

شروع جلسه مجموعه سفارشی

در زیر فرمان شروع یک جلسه جمع آوری داده های عملکرد سفارشی نشان داده شده است:

adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --start_perf [--interval <seconds>] [--max_duration <seconds>] [--filter_packages <package_name>,<package_name>,...]
  • --start_perf یک جلسه جمع آوری داده های عملکرد سفارشی را شروع می کند.
  • --interval <seconds> بازه نمایه سازی را مشخص می کند. به طور پیش فرض، فاصله زمانی 30 ثانیه است.
  • --max_duration <seconds> حداکثر مدت جلسه جمع آوری داده های عملکرد سفارشی را مشخص می کند. اگر جلسه به صورت دستی متوقف نشود، جلسه متوقف می شود و داده های جمع آوری شده پس از این مدت دور ریخته می شود. به طور پیش فرض، حداکثر مدت زمان 30 دقیقه است.
  • --filter_packages <package_name>,<package_name>... فهرستی از نام بسته‌ها را با کاما از هم جدا شده برای نمایه مشخص می‌کند. در صورت ارائه، جمع آوری داده های عملکرد به این بسته ها محدود می شود. در غیر این صورت جمع آوری داده های عملکرد برای تمامی بسته های سیستم انجام می شود.

برای مثال، دستور زیر مجموعه داده‌های عملکرد سفارشی را با فاصله پروفایل 10 ثانیه ، حداکثر مدت زمان جمع‌آوری 1 ساعت شروع می‌کند و نمایه‌سازی را به com.google.android.car.kitchensink و com.google.android.apps.maps محدود می‌کند. بسته های com.google.android.apps.maps .

adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --start_perf --interval 10 --max_duration 3600 --filter_packages com.google.android.car.kitchensink,com.google.android.apps.maps

جلسه جمع آوری سفارشی را متوقف و تخلیه کنید

پس از ثبت استفاده I/O از یک برنامه یا سرویس مورد علاقه، فروشندگان باید جلسه جمع آوری داده های عملکرد سفارشی را متوقف کنند تا داده های جمع آوری شده تخلیه شود. این دستور جمع آوری داده های عملکرد سفارشی را متوقف می کند و داده های جمع آوری شده را به /tmp/carwatchdog_dump.txt می اندازد:

adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --stop-perf > /tmp/carwatchdog_custom_dump.txt

Dumpsys کمک می کند

برای دریافت کمک dumpsys:

adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --help

تخلیه به فرمت پروتو

به صورت اختیاری، داده‌های dumpsys را می‌توان در قالب پروتو تخلیه کرد:

adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --proto

گزارش داده های عملکرد را درک کنید

برای کسب اطلاعات بیشتر، نمونه گزارش داده عملکرد زیر را ببینید:

adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default

---------------------------------
WatchdogPerfService report:
---------------------------------
Boot-time collection information:
=================================
Event polling interval: 1 second

Wake-up collection information:
===============================
Event polling interval: 1 second

User-switch collection information:
===================================
Event polling interval: 1 second

Periodic collection information:
================================
Event polling interval: 60 seconds
---------------------------------------------------------------------------
Boot-time performance report:
=================================
No collection recorded
---------------------------------------------------------------------------
Wake-up performance report:
===========================
No collection recorded
---------------------------------------------------------------------------
User-switch events performance report:
======================================
No collection recorded
---------------------------------------------------------------------------
Last N minutes performance report:
======================================
Collection duration: 10800 seconds
Number of collections: 181

Collection 0: <Mon Oct  2 18:36:06 2023 GMT>
=============================================
Total CPU time (ms): 473210
Total CPU cycles: 39553152000
Total idle CPU time (ms)/percent: 435860 / 92.11%
CPU I/O wait time (ms)/percent: 0 / 0.00%
Number of context switches: 13723415093
Number of I/O blocked processes/percent: 0 / 0.00%

Top N CPU Times:
----------------
Android User ID, Package Name, CPU Time (ms), Percentage of total CPU time, CPU Cycles
    Command, CPU Time (ms), Percentage of UID's CPU Time, CPU Cycles
10, com.google.android.carassistant, 13357, 2.82%, 16409088000
    assistant:interactor, 13360, 100.02%, 16409088000
0, system, 9097, 1.92%, 9640512000
    sensors@1.0-ser, 3790, 41.66%, 3773184000
    system_server, 2760, 30.34%, 3135936000
    com.android.car, 1150, 12.64%, 1099584000
    binder:621_4, 1000, 10.99%, 1281024000
    surfaceflinger, 230, 2.53%, 245376000
0, audioserver, 4383, 0.93%, 4597248000
    Main, 2690, 61.37%, 2980416000
    binder:916_2, 950, 21.67%, 925056000
    audioserver, 720, 16.43%, 691776000
0, root, 4357, 0.92%, 3727872000
    irq/311-iam2068, 2630, 60.36%, 2471616000
    irq/26-90b6400., 370, 8.49%, 561024000
    kworker/u16:4-bwmon_wq, 290, 6.66%, 48960000
    kworker/u16:1-memlat_wq, 270, 6.20%, 0
    ipcdaemon, 220, 5.05%, 218304000
10, com.google.android.apps.geo.automotive.adas, 1509, 0.32%, 1756416000
    adas:publishing, 1490, 98.74%, 1735680000
    as:clientparams, 10, 0.66%, 20736000
0, com.android.vending, 796, 0.17%, 765504000
    android.vending, 790, 99.25%, 765504000
0, shared:com.google.uid.shared, 581, 0.12%, 481152000
    google.android.gms, 340, 58.52%, 237312000
    .gms.persistent, 190, 32.70%, 184512000
    process.gservices, 50, 8.61%, 59328000
0, gps, 507, 0.11%, 659136000
    binder:920_2, 500, 98.62%, 659136000
10, com.android.vending, 489, 0.10%, 372288000
    android.vending, 480, 98.16%, 372288000
0, shared:android.uid.systemui, 438, 0.09%, 449856000
    android.systemui, 440, 100.46%, 449856000

Top N Storage I/O Reads:
-------------
Android User ID, Package Name, Foreground Bytes, Foreground Bytes %, Foreground Fsync, Foreground Fsync %, Background Bytes, Background Bytes %, Background Fsync, Background Fsync %
0, root, 56123392, 81.95%, 1, 100.00%, 0, 0.00%, 0, 0.00%
0, system, 12333056, 18.01%, 0, 0.00%, 0, 0.00%, 0, 0.00%

Top N Storage I/O Writes:
-------------------------
Android User ID, Package Name, Foreground Bytes, Foreground Bytes %, Foreground Fsync, Foreground Fsync %, Background Bytes, Background Bytes %, Background Fsync, Background Fsync %
0, com.android.vending, 0, 0.00%, 0, 0.00%, 520192, 46.35%, 20, 47.62%
10, com.android.vending, 0, 0.00%, 0, 0.00%, 520192, 46.35%, 20, 47.62%
10, shared:com.google.uid.shared, 0, 0.00%, 0, 0.00%, 45056, 4.01%, 0, 0.00%
0, shared:com.google.uid.shared, 0, 0.00%, 0, 0.00%, 36864, 3.28%, 2, 4.76%
0, logd, 24576, 40.00%, 0, 0.00%, 0, 0.00%, 0, 0.00%
0, root, 20480, 33.33%, 0, 0.00%, 0, 0.00%, 0, 0.00%
0, system, 16384, 26.67%, 0, 0.00%, 0, 0.00%, 0, 0.00%

Top N I/O waiting UIDs:
-----------------------
Android User ID, Package Name, Number of owned tasks waiting for I/O, Percentage of owned tasks waiting for I/O
    Command, Number of I/O waiting tasks, Percentage of UID's tasks waiting for I/O
0, root, 2, 0.39%
    dp_hdcp2p2, 1, 50.00%
    hdcp_2x, 1, 50.00%

Top N major page faults:
------------------------
Android User ID, Package Name, Number of major page faults, Percentage of total major page faults
    Command, Number of major page faults, Percentage of UID's major page faults
0, com.android.vending, 104, 48.83%
    android.vending, 104, 100.00%
10, com.android.vending, 104, 48.83%
    android.vending, 104, 100.00%
0, shared:com.google.uid.shared, 4, 1.88%
    .gms.persistent, 4, 100.00%
10, shared:com.google.uid.shared, 1, 0.47%
    .gms.persistent, 1, 100.00%
Number of major page faults since last collection: 213
Percentage of change in major page faults since last collection: 0.00%

هنگام گرفتن گزارش اشکال، اجرای دستور Watchdog dumpsys بدون هیچ استدلال یا توقف یک جلسه مجموعه سفارشی، سرویس بومی Watchdog یک گزارش داده عملکرد مشابه گزارش بالا را تخلیه می کند.

این گزارش حاوی داده های جمع آوری شده در هنگام راه اندازی سیستم و آخرین N دقیقه قبل از تولید گزارش است.

مورد توضیحات
اطلاعات جمع آوری زمان راه اندازی اطلاعاتی در مورد جلسه جمع آوری داده های عملکرد زمان راه اندازی ارائه می دهد.
اطلاعات مجموعه بیداری هنگامی که سیستم از حالت تعلیق بیدار می شود، اطلاعاتی را در مورد جلسه جمع آوری داده های عملکرد بیداری ارائه می دهد.
اطلاعات مجموعه سوئیچ کاربر اطلاعاتی درباره جلسه جمع آوری داده عملکرد سوئیچ کاربر در صورت وجود سوئیچ کاربر ارائه می دهد.
اطلاعات جمع آوری دوره ای اطلاعاتی درباره جلسه مجموعه عملکرد دوره ای که پس از اتمام بوت شروع می شود، ارائه می دهد.
گزارش عملکرد زمان راه اندازی حاوی داده های عملکرد جمع آوری شده در هنگام راه اندازی سیستم است. این داده ها تا زمان خاموش شدن سیستم در حافظه باقی می مانند، بنابراین داده ها روی همه گزارش ها ریخته می شوند.
گزارش عملکرد بیداری حاوی داده‌های عملکرد جمع‌آوری‌شده در هنگام بیداری است. این داده ها تا زمان خاموش شدن سیستم در حافظه ماندگار هستند، بنابراین داده ها روی همه گزارش ها ریخته می شوند.
گزارش عملکرد سوئیچ کاربر حاوی داده‌های عملکرد جمع‌آوری‌شده در حین تعویض کاربر است. این داده ها تا زمان خاموش شدن سیستم در حافظه باقی می مانند، بنابراین داده ها روی همه گزارش ها ریخته می شوند.
آخرین N دقیقه گزارش عملکرد ورودی/خروجی حاوی داده های عملکرد جمع آوری شده (توسط جلسه جمع آوری دوره ای) در آخرین N دقیقه قبل از تولید گزارش است.
مدت زمان مجموعه کل مدت زمان جمع آوری داده های عملکرد.
تعداد مجموعه ها تعداد کل مجموعه های گزارش شده در یک گزارش واحد.

هر مجموعه گزارش شده در گزارش ممکن است شامل تمام یا برخی از بخش های زیر باشد. آمار گزارش شده در هر مجموعه، دلتا از آخرین مجموعه است، به جز آمارهایی که آنی هستند (به عنوان مثال، از زمان راه اندازی سیستم جمع نشده اند).

مورد توضیحات
زمان/درصد انتظار I/O CPU زمان مطلق CPU و درصد کل زمان CPU صرف شده برای تعویض متن یا انتظار به دلیل عملیات I/O از زمان آخرین مجموعه.
کل زمان CPU کل زمان CPU بر حسب میلی ثانیه
کل زمان بیکار CPU کل زمان CPU صرف شده در حالت بیکار.
زمان انتظار I/O CPU کل زمان صرف شده CPU در انتظار عملیات I/O.
تعداد سوئیچ های زمینه تعداد سوئیچ های CPU از یک فرآیند یا رشته به دیگری.
تعداد فرآیندهای I/O مسدود شده/درصد تعداد کل فرآیندهای مسدود شده در انتظار I/O و درصد فرآیندهای مسدود شده در انتظار I/O از زمان آخرین مجموعه.
برترین زمان N CPU

بسته های برتر N که بیشترین زمان CPU را از زمان آخرین مجموعه مصرف کرده اند:

  • هر خط سطح بالا شامل شناسه کاربری، نام بسته، زمان CPU، درصد کل زمان CPU و چرخه های CPU است.
  • خطوط سطح داخلی شامل فرمان، زمان CPU، درصد زمان CPU UID و چرخه های CPU هستند.
خواندن های ورودی/خروجی N Storage برتر

بسته های برتر N که بیشترین داده ها را از دیسک از آخرین مجموعه می خوانند.

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

تاپ N Storage I/O Writes بسته های برتر N که بیشترین داده ها را از زمان آخرین مجموعه روی دیسک نوشتند. هر خط شامل فیلدهایی شبیه به Top N Reads است.
UIDهای انتظار NI/O برتر

بسته های برتر N با بیشترین وظایف انتظار I/O.

  • هر خط سطح بالا شامل شناسه کاربر، نام بسته، تعداد و درصد وظایف متعلق به بسته در انتظار I/O است.
  • خطوط سطح داخلی حاوی اطلاعات انتظار I/O برای فرآیندهای برتر متعلق به بسته است.
N اشتباه صفحه اصلی بسته های برتر N با بیشترین خطاهای صفحه از آخرین مجموعه.