Kumpulkan data kinerja

Layanan asli Watchdog mencatat data kinerja I/O sejak inisiasi awal selama boot sistem. Layanan asli membuang data kinerja yang dikumpulkan dalam laporan bug. Vendor dapat menanyakan layanan asli melalui dumpsys untuk membuang data yang dikumpulkan atau memulai sesi pengumpulan khusus untuk debugging.

Frekuensi pengumpulan data

Frekuensi pengumpulan data kinerja bervariasi berdasarkan jenis build.

  • Pada build userdebug atau eng, Watchdog mengumpulkan data kinerja setiap satu (1) detik selama booting sistem dan setiap satu (1) menit setelah booting selesai.
  • Pada build pengguna, Watchdog mengumpulkan data kinerja setiap 20 detik sekali selama booting sistem dan setiap dua (2) menit sekali setelah booting selesai.

Buang data kinerja

Saat laporan bug ditangkap, layanan asli Watchdog membuang data kinerja yang dikumpulkan dalam laporan bug. Vendor dapat menanyakan layanan asli melalui perintah dumpsys di bawah ini untuk membuang data kinerja yang dikumpulkan. Lihat bagian Memahami laporan data kinerja untuk detail tentang laporan tersebut.

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

Kumpulkan data kinerja untuk debugging

Vendor dapat menggunakan layanan asli Watchdog untuk mengumpulkan data kinerja secara khusus untuk tujuan debugging. Misalnya, untuk memahami penggunaan I/O suatu aplikasi atau layanan, vendor dapat melakukan pengumpulan data performa kustom yang membuat profil penggunaan I/O pada daftar paket tertentu atau keseluruhan sistem.

Mulai sesi pengumpulan khusus

Di bawah ini adalah perintah untuk memulai sesi pengumpulan data kinerja kustom:

$ 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 kinerja kustom.
  • --interval <seconds> . Menentukan interval pembuatan profil. Secara default, intervalnya adalah 30 detik.
  • --max_duration <seconds> . Menentukan durasi maksimum sesi pengumpulan data kinerja kustom. Jika sesi tidak dihentikan secara manual, sesi akan 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 ke profil yang dipisahkan koma. Jika disediakan, pengumpulan data kinerja terbatas pada paket-paket ini. Jika tidak, pengumpulan data kinerja dilakukan untuk semua paket dalam sistem.

Misalnya, perintah di bawah ini memulai pengumpulan data kinerja khusus dengan interval pembuatan profil 10 seconds , durasi pengumpulan maksimum 1 hour , dan membatasi pembuatan profil ke com.google.android.car.kitchensink dan com.google.android.apps.maps paket 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

Hentikan dan buang sesi pengumpulan khusus

Setelah mencatat penggunaan I/O aplikasi atau layanan yang diinginkan, vendor harus menghentikan sesi pengumpulan data kinerja kustom untuk membuang data yang dikumpulkan.

Perintah berikut menghentikan pengumpulan data kinerja 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 bodoh

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

Memahami laporan data kinerja

Di bawah ini adalah contoh laporan data kinerja:

$ 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%

Saat mengambil laporan bug, menjalankan perintah Watchdog dumpsys tanpa argumen apa pun, atau menghentikan sesi pengumpulan kustom, layanan asli Watchdog membuang laporan data kinerja yang serupa dengan laporan di atas.

Laporan berisi data yang dikumpulkan selama boot sistem dan N menit terakhir sebelum pembuatan laporan.

  • Boot-time collection information . Memberikan informasi tentang sesi pengumpulan data kinerja waktu boot.
  • Periodic collection information . Memberikan informasi tentang sesi pengumpulan kinerja berkala yang dimulai setelah booting selesai.
  • Boot-time I/O performance report . Berisi data kinerja yang dikumpulkan selama boot-up sistem. Data ini tetap ada di memori hingga sistem dimatikan, sehingga data dibuang ke semua laporan.
  • Last N minutes I/O performance report . Berisi data kinerja yang dikumpulkan (melalui sesi pengumpulan berkala) selama N menit terakhir sebelum pembuatan laporan.
  • Collection duration . Total durasi pengumpulan data kinerja.
  • Number of collections . Jumlah total koleksi yang dilaporkan dalam satu laporan.

Setiap koleksi yang dilaporkan dalam laporan mungkin berisi seluruh atau beberapa bagian di bawah ini. Statistik yang dilaporkan di setiap koleksi adalah delta sejak koleksi terakhir, kecuali statistik yang bersifat instan (misalnya, tidak diagregasi sejak boot-up sistem).

  • CPU I/O wait time/percent . Waktu CPU absolut dan persentase total waktu CPU yang dihabiskan untuk peralihan konteks atau menunggu karena operasi I/O sejak pengumpulan terakhir.
  • Number of I/O blocked processes/percent . Jumlah total proses yang diblokir menunggu I/O dan persentase proses yang diblokir menunggu I/O sejak pengumpulan terakhir.
  • Top N Reads . Paket N teratas yang membaca sebagian besar data dari disk sejak pengumpulan terakhir.
    • Setiap baris berisi ID pengguna, nama paket, jumlah total byte yang dibaca dalam mode latar depan vs mode latar belakang, persentase byte di seluruh mode latar depan vs mode latar belakang yang dibaca dalam sistem, jumlah total panggilan fsync yang dilakukan dalam mode latar depan vs mode latar belakang, dan persentase panggilan fsync di semua panggilan fsync mode latar depan vs mode latar belakang yang dilakukan di sistem.
  • Top N Writes . Paket N teratas yang menulis sebagian besar data ke disk sejak pengumpulan terakhir.
    • Setiap baris berisi bidang yang mirip dengan Top N Reads .
  • Top NI/O waiting UIDs . Paket N teratas dengan tugas menunggu I/O paling banyak.
    • Setiap baris tingkat atas berisi ID pengguna, nama paket, jumlah dan persentase tugas yang dimiliki oleh paket yang menunggu I/O.
    • Baris tingkat dalam berisi informasi tunggu I/O untuk proses teratas yang dimiliki oleh paket.
  • Top N major page faults . Paket N teratas dengan kesalahan halaman paling besar sejak pengumpulan terakhir.
    • Setiap baris tingkat atas berisi ID pengguna, nama paket, nomor dan persentase kesalahan halaman utama yang dikaitkan dengan paket.
    • Baris tingkat dalam berisi informasi kesalahan halaman utama untuk proses teratas yang dimiliki oleh paket.
  • Number of major page faults since last collection .
  • Percentage of change in major page faults since last collection .