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

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

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

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

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

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

هنگامی که یک گزارش اشکال ضبط می شود، سرویس بومی 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 seconds ، حداکثر مدت زمان جمع‌آوری 1 hour شروع می‌کند و نمایه‌سازی را به 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 کمک می کند

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

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

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

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

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

Periodic collection information:
=========================
Event interval: 60 seconds
--------------------------------
Boot-time I/O performance report:
============================
Collection duration: 1637609138 seconds
Number of collections: 12

Collection 0: <Fri Jan  7 19:53:53 2022 GMT>
===================================
CPU I/O wait time/percent: 18 / 0.63%
Number of I/O blocked processes/percent: 0 / 0.00%

Top N 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 Writes:
-------------
Android User ID, Package Name, Foreground Bytes, Foreground Bytes %, Foreground Fsync, Foreground Fsync %, Background Bytes, Background Bytes %, Background Fsync, Background Fsync %
0, root, 53248, 100.00%, 1, 100.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.59%
        kworker/7:2+events, 1, 50.00%
        kworker/4:2+events, 1, 50.00%
0, system, 2, 7.14%
        ais_server, 2, 100.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, system, 48, 53.33%
        ais_server, 13, 27.08%
        audiod, 10, 20.83%
0, root, 41, 45.56%
        init, 39, 95.12%
        ueventd, 1, 2.44%
0, media, 1, 1.11%
        init.qti.media., 1, 100.00%
Number of major page faults since last collection: 90
Percentage of change in major page faults since last collection: 0.00%

Collection 1: <Fri Jan  7 19:53:54 2022 GMT>
===================================
 … Collection data …

Collection 2: <Fri Jan  7 19:53:55 2022 GMT>
===================================
 … Collection data …
 … Repeated collection data until boot-complete …

-----------------------------------------
Last N minutes I/O performance report:
================================
Collection duration: 10797 seconds
Number of collections: 181

Collection 0: <Tue Jan 11 19:43:05 2022 GMT>
====================================
CPU I/O wait time/percent: 18 / 0.04%
Number of I/O blocked processes/percent: 0 / 0.00%

Top N Writes:
-------------
Android User ID, Package Name, Foreground Bytes, Foreground Bytes %, Foreground Fsync, Foreground Fsync %, Background Bytes, Background Bytes %, Background Fsync, Background Fsync %
0, system, 33697792, 92.41%, 0, 0.00%, 0, 0.00%, 0, 0.00%
0, gps, 2420736, 6.64%, 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, 1, 0.19%
        crtc_commit:244, 1, 100.00%

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

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

  • Boot-time collection information اطلاعاتی در مورد جلسه جمع آوری داده های عملکرد زمان راه اندازی ارائه می دهد.
  • Periodic collection information اطلاعاتی درباره جلسه مجموعه عملکرد دوره ای که پس از اتمام بوت شروع می شود، ارائه می دهد.
  • Boot-time I/O performance report حاوی داده های عملکرد جمع آوری شده در هنگام راه اندازی سیستم است. این داده ها تا زمان خاموش شدن سیستم در حافظه ماندگار هستند، بنابراین داده ها روی همه گزارش ها ریخته می شوند.
  • Last N minutes I/O performance report . حاوی داده های عملکرد جمع آوری شده (توسط جلسه جمع آوری دوره ای) در آخرین N دقیقه قبل از تولید گزارش است.
  • Collection duration کل مدت زمان جمع آوری داده های عملکرد.
  • Number of collections تعداد کل مجموعه های گزارش شده در یک گزارش واحد.

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

  • CPU I/O wait time/percent . زمان مطلق CPU و درصد کل زمان CPU صرف شده برای تعویض متن یا انتظار به دلیل عملیات I/O از زمان آخرین مجموعه.
  • Number of I/O blocked processes/percent . تعداد کل فرآیندهای مسدود شده در انتظار I/O و درصد فرآیندهای مسدود شده در انتظار I/O از زمان آخرین مجموعه.
  • Top N Reads . بسته های برتر N که بیشترین داده ها را از دیسک از زمان آخرین مجموعه می خوانند.
    • هر خط شامل شناسه کاربر، نام بسته، تعداد کل بایت‌های خوانده شده در حالت پیش‌زمینه در مقابل حالت پس‌زمینه، درصد بایت‌ها در تمام حالت پیش‌زمینه در مقابل خواندن حالت پس‌زمینه در سیستم، تعداد کل تماس‌های fsync انجام‌شده در حالت پیش‌زمینه در مقابل حالت پس‌زمینه، و درصد تماس‌های fsync در تمام حالت‌های پیش‌زمینه در مقابل تماس‌های fsync حالت پس‌زمینه انجام‌شده در سیستم.
  • Top N Writes . بسته های برتر N که بیشترین داده ها را از زمان آخرین مجموعه روی دیسک نوشتند.
    • هر خط حاوی فیلدهایی مشابه با Top N Reads است.
  • Top NI/O waiting UIDs . بسته های برتر N با بیشترین وظایف انتظار I/O.
    • هر خط سطح بالا شامل شناسه کاربر، نام بسته، تعداد و درصد وظایف متعلق به بسته در انتظار I/O است.
    • خطوط سطح داخلی حاوی اطلاعات انتظار I/O برای فرآیندهای برتر متعلق به بسته است.
  • Top N major page faults . بسته های برتر N با بیشترین خطاهای صفحه از آخرین مجموعه.
    • هر خط سطح بالا حاوی شناسه کاربری، نام بسته، تعداد و درصد خطاهای صفحه اصلی منتسب به بسته است.
    • خطوط سطح داخلی حاوی اطلاعات خطاهای اصلی صفحه برای فرآیندهای برتر متعلق به بسته است.
  • Number of major page faults since last collection .
  • Percentage of change in major page faults since last collection .