سرویس بومی 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 را از زمان آخرین مجموعه مصرف کرده اند:
|
خواندن های ورودی/خروجی N Storage برتر | بسته های برتر N که بیشترین داده ها را از دیسک از آخرین مجموعه می خوانند. هر خط شامل شناسه کاربر، نام بسته، تعداد کل بایتهای خوانده شده در حالت پیشزمینه در مقابل حالت پسزمینه، درصد بایتها در تمام حالت پیشزمینه در مقابل خواندهشده در حالت پسزمینه در سیستم، تعداد کل تماسهای |
تاپ N Storage I/O Writes | بسته های برتر N که بیشترین داده ها را از زمان آخرین مجموعه روی دیسک نوشتند. هر خط شامل فیلدهایی شبیه به Top N Reads است. |
UIDهای انتظار NI/O برتر | بسته های برتر N با بیشترین وظایف انتظار I/O.
|
N اشتباه صفحه اصلی | بسته های برتر N با بیشترین خطاهای صفحه از آخرین مجموعه. |