سرویس بومی Watchdog دادههای عملکرد ورودی/خروجی را از زمان راهاندازی اولیه درطول راهاندازی سیستم ضبط میکند. سرویس بومی دادههای عملکرد جمعآوریشده را در گزارش اشکال تخلیه میکند. فروشندگان میتوانند سرویس بومی را ازطریق dumpsys پُرسمان کنند تا دادههای جمعآوریشده را تخلیه کنند یا جلسه جمعآوری سفارشی را برای اشکالزدایی شروع کنند.
بسامد جمعآوری دادهها
بسامد جمعآوری دادههای عملکرد براساس نوع ساخت متفاوت است.
- در ساختهای userdebug یا eng، Watchdog دادههای عملکرد را یک بار در هر یک (۱) ثانیه درطول راهاندازی سیستم و یک بار در هر یک (۱) دقیقه پساز تکمیل راهاندازی جمعآوری میکند.
- در نسخههای کاربر، Watchdog دادههای عملکرد را هر ۲۰ ثانیه یکبار درطول راهاندازی سیستم و هر دو (۲) دقیقه یکبار پساز تکمیل راهاندازی جمعآوری میکند.
رویدادهای جمعآوری دادهها
نمایه کردن مبتنی بر نمونه درطول رویدادهای مختلف سیستم (مانند راهاندازی سیستم، بیدار شدن سیستم، و جابهجایی کاربر) و درطول پنجره N دقیقه آخر انجام میشود.
- رویدادهای N دقیقه آخر قبلاز تولید گزارش اشکال: درطول یک پنجره متحرک ۳۰ دقیقهای تولید شده است.
- رویدادهای زمان راهاندازی: پساز راهاندازی تولید میشود.
- رویدادهای تعویض کاربر: پساز شروع تعویض کاربر ایجاد میشود.
- رویدادهای مجموعه سفارشی: میتواند دوره نظرسنجی، حداکثر مدتزمان را مشخص کند و میتواند براساس بستهها فیلتر کند.
دادههای عملکرد تخلیه
وقتی گزارش اشکال ضبط میشود، سرویس بومی Watchdog دادههای عملکرد جمعآوریشده را در گزارش اشکال تخلیه میکند. فروشندگان میتوانند ازطریق فرمان dumpsys زیر، سرویس بومی را پُرسمان کنند تا دادههای عملکرد جمعآوریشده را تخلیه کنند. برای جزئیات بیشتر درباره گزارش، به بخش آشنایی با گزارش دادههای عملکرد مراجعه کنید.
adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default > /tmp/carwatchdog_dump.txtجمعآوری دادههای عملکرد برای اشکالزدایی
فروشندگان میتوانند از سرویس بومی Watchdog برای جمعآوری سفارشی دادههای عملکرد برای اهداف اشکالزدایی استفاده کنند. برای مثال، برای درک استفاده از ورودی/خروجی یک برنامه یا سرویس، فروشندگان میتوانند مجموعه دادههای عملکرد سفارشی را اجرا کنند که نمایه استفاده از ورودی/خروجی یک فهرست خاص از بستهها یا کل سیستم را نشان میدهد.
شروع جلسه مجموعه سفارشی
فرمان شروع جلسه جمعآوری دادههای عملکرد سفارشی در زیر نشان داده شده است:
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>فاصله زمانی نمایهسازی را مشخص میکند. بهطور پیشفرض، این فاصله ۳۰ ثانیه است.--max_duration <seconds>حداکثر مدت زمان جلسه جمعآوری دادههای عملکرد سفارشی را مشخص میکند. اگر جلسه بهصورت دستی متوقف نشود، جلسه متوقف میشود و دادههای جمعآوریشده پساز این مدت دور ریخته میشود. بهطور پیشفرض، حداکثر مدتزمان ۳۰ دقیقه است.--filter_packages <package_name>,<package_name>...فهرست جداشده با کاما از نام بستهها را برای نمایه مشخص میکند. درصورت ارائه، جمعآوری دادههای عملکرد به این بستهها محدود میشود. درغیراینصورت، جمعآوری دادههای عملکرد برای همه بستههای موجود در سیستم انجام میشود.
برای مثال، فرمان زیر گردآوری دادههای عملکرد سفارشی را با فاصله نمایهسازی ۱۰ ثانیه، حداکثر مدت گردآوری ۱ ساعت شروع میکند و نمایهسازی را به بستههای com.google.android.car.kitchensink و 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توقف و تخلیه جلسه مجموعه سفارشی
پساز ضبط کردن مصرف ورودی/خروجی برنامه یا سرویس موردنظر، فروشندگان باید جلسه جمعآوری دادههای عملکرد سفارشی را متوقف کنند تا دادههای جمعآوریشده را تخلیه کنند. این فرمان جمعآوری دادههای عملکرد سفارشی را متوقف میکند و دادههای جمعآوریشده را به /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روبرداری به قالب proto
بهصورت اختیاری، دادههای dumpsys را میتوان در قالب proto تخلیه کرد:
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%
هنگام ضبط گزارش اشکال، اجرای فرمان dumpsys مربوط به Watchdog بدون هیچ آرگومانی یا توقف جلسه جمعآوری سفارشی، سرویس بومی Watchdog گزارش دادههای عملکردی مشابه گزارش بالا را تخلیه میکند.
این گزارش حاوی دادههای جمعآوریشده درطول راهاندازی سیستم و N دقیقه آخر قبلاز تولید گزارش است.
| مورد | شرح |
|---|---|
| اطلاعات جمعآوری زمان راهاندازی | اطلاعاتی درباره جلسه جمعآوری دادههای عملکرد زمان راهاندازی ارائه میدهد. |
| اطلاعات جمعآوریشده از بیدارباش | اطلاعاتی درباره جلسه جمعآوری دادههای عملکرد بیدار شدن ارائه میدهد، زمانی که سیستم از حالت تعلیق بیدار میشود. |
| اطلاعات مجموعه تعویض کاربر | اطلاعاتی درباره جلسه جمعآوری دادههای عملکرد تعویض کاربر درصورت وجود تعویض کاربر ارائه میدهد. |
| اطلاعات جمعآوری دورهای | اطلاعاتی درباره جلسه جمعآوری عملکرد دورهای ارائه میدهد که پساز تکمیل راهاندازی شروع میشود. |
| گزارش عملکرد زمان راهاندازی | حاوی دادههای عملکرد جمعآوریشده درطول راهاندازی سیستم است. این دادهها تا زمان خاموش شدن سیستم در حافظه باقی میمانند، بنابراین دادهها در همه گزارشها تخلیه میشوند. |
| گزارش عملکرد بیدار شدن | حاوی دادههای عملکرد جمعآوریشده درطول بیدار شدن است. این دادهها تا زمان خاموش شدن سیستم در حافظه باقی میمانند، بنابراین دادهها در همه گزارشها تخلیه میشوند. |
| گزارش عملکرد تعویض کاربر | حاوی دادههای عملکرد جمعآوریشده درطول تعویض کاربر است. این دادهها تا زمان خاموش شدن سیستم در حافظه باقی میمانند، بنابراین دادهها در همه گزارشها تخلیه میشوند. |
| گزارش عملکرد ورودی/خروجی N دقیقه گذشته | حاوی دادههای عملکرد جمعآوریشده (توسط جلسه جمعآوری دورهای) درطول N دقیقه آخر قبلاز تولید گزارش است. |
| مدت جمعآوری | مدت کل جمعآوری دادههای عملکرد. |
| تعداد مجموعهها | تعداد کل مجموعههای گزارششده در یک گزارش. |
هر مجموعه گزارششده در گزارش ممکن است حاوی همه یا برخیاز بخشهای زیر باشد. آمار گزارششده در هر مجموعه، دلتا از آخرین مجموعه است، بهجز آماری که آنی است (برای مثال، از زمان راهاندازی سیستم جمعآوری نشده است).
| مورد | شرح |
|---|---|
| زمان/ درصد انتظار ورودی/خروجی CPU | زمان مطلق واحد پردازش مرکزی و درصد کل زمان واحد پردازش مرکزی صرفشده برای تعویض بافت یا انتظار بهدلیل عملیات ورودی/خروجی از آخرین جمعآوری. |
| کل زمان واحد پردازش مرکزی | کل زمان واحد پردازش مرکزی برحسب میلیثانیه. |
| کل زمان بیکاری واحد پردازش مرکزی | کل زمان واحد پردازش مرکزی که در حالت بیکار سپری شده است. |
| زمان انتظار ورودی/خروجی CPU | کل زمانی که واحد پردازش مرکزی منتظر عملیات ورودی/خروجی بوده است. |
| تعداد تعویضهای بافت | تعداد دفعاتی که واحد پردازش مرکزی از یک فرایند یا رشته به فرایند یا رشته دیگری جابهجا میشود. |
| تعداد فرایندهای مسدودشده ورودی/خروجی/درصد | تعداد کل فرایندهای مسدودشده درانتظار ورودی/خروجی و درصد فرایندهای مسدودشده درانتظار ورودی/خروجی از آخرین جمعآوری. |
| N زمان برتر واحد پردازش مرکزی |
N بسته برتر که از آخرین مجموعه بیشترین زمان واحد پردازش مرکزی را مصرف کردهاند:
|
| N خواندن برتر ورودی/خروجی فضای ذخیرهسازی |
N بسته برتر که از آخرین مجموعه بیشترین داده را از دیسک خواندهاند. هر خط حاوی شناسه کاربر، نام بسته، تعداد کل بایتهای خواندهشده در حالت پیشزمینه درمقابل حالت پسزمینه، درصد بایتها در همه خواندنهای حالت پیشزمینه درمقابل حالت پسزمینه در سیستم، تعداد کل تماسهای |
| Top N Storage I/O Writes | N بسته برتر که از آخرین مجموعه بیشترین داده را در دیسک نوشتهاند. هر خط حاوی فیلدهایی مشابه فیلدهای «N خواندن برتر» است. |
| شناسههای کاربری برتر در انتظار ورودی/خروجی | N بسته برتر با بیشترین تکالیف منتظر ورودی/خروجی.
|
| N خطای اصلی صفحه | N بسته برتر با بیشترین خطاهای اصلی صفحه از آخرین مجموعه. |