Layanan native Watchdog mencatat data performa I/O sejak init awal booting sistem. Layanan native membuang data performa yang dikumpulkan ke dalam laporan {i>bug<i}. Vendor dapat membuat kueri layanan native melalui dumpsys untuk membuang data yang dikumpulkan atau memulai sesi pengumpulan kustom untuk proses debug.
Frekuensi pengumpulan data
Frekuensi pengumpulan data performa bervariasi menurut jenis build.
- Pada debug pengguna atau build ing, Watchdog mengumpulkan data performa satu kali setiap satu (1) detik selama {i>booting<i} sistem dan setiap satu (1) menit setelah {i>booting<i} selesai.
- Pada build pengguna, Watchdog mengumpulkan data performa sekali setiap 20 detik selama {i>booting<i} sistem dan setiap dua (2) menit setelah {i>booting<i} selesai.
Peristiwa pengumpulan data
Pembuatan profil berbasis sampel dilakukan selama berbagai peristiwa sistem (seperti bangun sistem, dan pengalihan pengguna) dan selama jendela N menit terakhir.
- Peristiwa N menit terakhir sebelum pembuatan laporan bug: Dihasilkan selama periode bergulir 30 menit.
- Peristiwa waktu booting: Dihasilkan setelah booting.
- Peristiwa pengalihan pengguna: Dibuat setelah pengalihan pengguna dimulai.
- Peristiwa pengumpulan kustom: Dapat menentukan periode polling, durasi maksimum, dan dapat memfilter menurut paket.
Men-dump data performa
Saat bugreport diambil, layanan native Watchdog akan membuang data performa yang dikumpulkan dalam laporan bug. Vendor dapat mengkueri layanan native melalui di bawah perintah {i>dumpsys<i} untuk membuang data kinerja yang dikumpulkan. Lihat bagian Memahami laporan data performa untuk mengetahui detail tentang laporan.
adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default > /tmp/carwatchdog_dump.txt
Mengumpulkan data performa untuk proses debug
Vendor dapat menggunakan layanan native Watchdog untuk mengumpulkan data performa kustom untuk tujuan proses debug. Misalnya, untuk memahami penggunaan I/O dari aplikasi atau layanan, vendor dapat melakukan pengumpulan data performa khusus yang memprofilkan penggunaan I/O baik dari daftar paket tertentu atau seluruh sistem file.
Mulai sesi pengumpulan kustom
Perintah untuk memulai sesi pengumpulan data performa kustom ditampilkan di bawah ini:
adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --start_perf [--interval <seconds>] [--max_duration <seconds>] [--filter_packages <package_name>,<package_name>,...]
--start_perf
Memulai sesi pengumpulan data performa kustom.--interval <seconds>
Menentukan interval pembuatan profil. Secara default, intervalnya adalah 30 detik.--max_duration <seconds>
Menentukan durasi maksimum sesi pengumpulan data performa kustom. Jika sesi tidak dihentikan secara manual, sesi dihentikan dan data yang dikumpulkan akan dibuang setelah durasi ini. Secara default, durasi maksimum adalah 30 menit.--filter_packages <package_name>,<package_name>...
Menentukan daftar nama paket yang dipisahkan koma untuk profil. Jika disediakan, pengumpulan data kinerja terbatas pada paket ini. Jika tidak, pengumpulan data kinerja dilakukan untuk semua paket dalam sistem.
Misalnya, perintah di bawah memulai pengumpulan data performa kustom
dengan interval pembuatan profil 10 detik, pengumpulan maksimum
selama 1 hour, dan membatasi pembuatan profil ke
com.google.android.car.kitchensink
dan
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
Menghentikan dan men-dump sesi pengumpulan kustom
Setelah mencatat penggunaan I/O aplikasi atau layanan yang diminati, vendor harus menghentikan
sesi pengumpulan data performa kustom untuk membuang data yang dikumpulkan. Perintah ini menghentikan
pengumpulan data performa khusus, dan membuang data yang dikumpulkan ke
/tmp/carwatchdog_dump.txt
:
adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --stop-perf > /tmp/carwatchdog_custom_dump.txt
Bantuan dumpsys
Untuk mendapatkan bantuan dumpsys:
adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --help
Dump ke format proto
Secara opsional, data dumpsys dapat dibuat dalam format proto:
adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --proto
Memahami laporan data performa
Untuk mempelajari lebih lanjut, lihat contoh laporan data performa berikut:
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%
Saat mengambil bugreport, menjalankan perintah dumpsys Watchdog tanpa argumen atau menghentikan sesi pengumpulan kustom, layanan native Watchdog akan membuang laporan data performa yang mirip dengan laporan di atas.
Laporan berisi data yang dikumpulkan selama {i>booting<i} sistem dan N menit terakhir sebelum pembuatan laporan.
Item | Deskripsi |
---|---|
Informasi pengumpulan waktu booting | Memberikan informasi tentang sesi pengumpulan data performa waktu booting. |
Informasi pengumpulan data bangun tidur | Memberikan informasi tentang sesi pengumpulan data performa bangun saat sistem aktif dari penangguhan. |
Informasi pengumpulan tombol akses pengguna | Memberikan informasi tentang sesi pengumpulan data performa peralihan pengguna saat ada adalah {i>user-switch<i}. |
Informasi pengumpulan berkala | Memberikan informasi tentang sesi pengumpulan performa berkala yang memulai postingan booting-selesai. |
Laporan performa waktu booting | Berisi data performa yang dikumpulkan selama booting sistem. Data ini tetap ada di memori hingga sistem dimatikan, sehingga data dibuang di semua laporan. |
Laporan performa aktivasi | Berisi data performa yang dikumpulkan selama proses bangun. Data ini berkesinambungan dalam memori hingga sistem dimatikan, sehingga data dibuang di semua laporan. |
Laporan performa peralihan pengguna | Berisi data performa yang dikumpulkan selama peralihan pengguna. Data ini tetap ada dalam memori hingga sistem dimatikan, sehingga data di-dump di semua laporan. |
Laporan performa I/O N menit terakhir | Berisi data performa yang dikumpulkan (oleh sesi pengumpulan berkala) selama N menit terakhir sebelum pembuatan laporan. |
Durasi pengumpulan | Total durasi pengumpulan data performa. |
Jumlah koleksi | Jumlah total koleksi yang dilaporkan dalam satu laporan. |
Setiap kumpulan yang dilaporkan dalam laporan dapat berisi semua atau beberapa bagian di bawah ini. Statistik yang dilaporkan di setiap pengumpulan adalah delta sejak pengumpulan terakhir, kecuali statistik yang bersifat instan (misalnya, tidak digabungkan sejak sistem dimulai).
Item | Deskripsi |
---|---|
Waktu tunggu I/O CPU/persen | Waktu CPU absolut dan persentase total waktu CPU yang dihabiskan untuk pengalihan konteks atau menunggu karena operasi I/O sejak pengumpulan terakhir. |
Total waktu CPU | Total waktu CPU dalam milidetik. |
Total waktu CPU tidak ada aktivitas | Total waktu CPU yang dihabiskan dalam tidak ada aktivitas. |
Waktu tunggu I/O CPU | Total waktu yang dihabiskan CPU untuk menunggu operasi I/O. |
Jumlah tombol konteks | Jumlah CPU yang beralih dari satu proses atau thread ke proses atau thread lainnya. |
Jumlah proses/persen I/O yang diblokir | Jumlah total proses yang diblokir menunggu I/O dan persentase proses yang diblokir menunggu I/O sejak koleksi terakhir. |
Waktu CPU N Teratas |
Paket N teratas yang paling banyak menggunakan waktu CPU sejak pengumpulan terakhir:
|
Pembacaan I/O Penyimpanan N Teratas |
Paket N teratas yang membaca data terbanyak dari disk sejak pengumpulan terakhir. Setiap baris berisi ID pengguna, nama paket, jumlah total byte yang dibaca dalam mode latar depan
versus mode latar belakang, persentase byte di semua mode latar depan versus
mode latar belakang yang dibaca dalam sistem, jumlah total panggilan |
Penulisan I/O Storage N Teratas | Paket N teratas yang menulis sebagian besar data ke {i>disk<i} sejak pengumpulan terakhir. Setiap baris berisi yang mirip dengan Top N Reads. |
UID yang menunggu I/O N teratas | Paket N teratas dengan tugas tunggu I/O terbanyak.
|
Kesalahan halaman utama N teratas | Paket N teratas dengan kesalahan halaman paling besar sejak koleksi terakhir. |