perfetto

perfetto adalah alat yang memungkinkan Anda mengumpulkan informasi performa dari perangkat Android melalui Android Debug Bridge (ADB). Panggil alat perfetto menggunakan perintah adb shell perfetto .... perfetto menggunakan berbagai sumber untuk mengumpulkan rekaman aktivitas performa dari perangkat Anda, seperti:

  • ftrace untuk informasi dari kernel
  • atrace untuk anotasi ruang pengguna di layanan dan aplikasi
  • heapprofd untuk informasi penggunaan memori native layanan dan aplikasi

Halaman ini menjelaskan cara memanggil perfetto dan mengonfigurasinya untuk menghasilkan output yang diinginkan. Untuk informasi selengkapnya, lihat dokumentasi perfetto.

Sintaksis

Bagian ini menjelaskan cara menggunakan ADB untuk memanggil perfetto dalam berbagai mode dan membuat rekaman aktivitas.

Pemilihan sumber data

perfetto menyertakan dua mode berikut yang menentukan sumber data yang digunakan untuk mencatat rekaman aktivitas Anda:

  • mode terang: hanya dapat memilih subset sumber data, khususnya atrace dan ftrace. Namun, mode ini menawarkan antarmuka yang mirip dengan systrace.
  • mode normal: mendapatkan konfigurasinya dalam buffering protokol dan memungkinkan Anda memanfaatkan lebih banyak fungsi perfetto menggunakan sumber data yang berbeda dengan atrace dan ftrace.

Opsi umum

Tabel berikut mencantumkan opsi yang tersedia saat menggunakan perfetto dalam mode apa pun:

Tabel 1. Daftar opsi alat perfetto umum yang tersedia.

Opsi Deskripsi
--background |
-d
perfetto segera keluar dari antarmuka command line dan terus mencatat rekaman aktivitas Anda di latar belakang.
--background-wait | -D Seperti --background, tetapi menunggu (hingga 30 detik) supaya semua sumber data dimulai sebelum keluar. Kode keluar adalah nol jika konfirmasi berhasil diterima dan bukan nol jika sebaliknya (error atau waktu tunggu habis).
--alert-id ID notifikasi yang memicu rekaman aktivitas ini.
--config-id ID yang memicu konfigurasi.
--config-uid UID aplikasi yang mendaftarkan konfigurasi.
--subscription-id ID langganan yang memicu rekaman aktivitas ini.
--out OUT_FILE |
-o OUT_FILE

Menentukan jalur yang diinginkan ke file rekaman aktivitas output, atau - untuk stdout. perfetto menulis output ke file yang dijelaskan dalam flag sebelumnya. Format output dikompilasi dengan format yang didefinisikan dalam trace.proto AOSP.

Catatan: Anda harus menentukan nama jalur lengkap dari file output. Biasanya, file harus ditulis ke folder /data/misc/perfetto-traces.

--upload Setelah selesai, meneruskan rekaman aktivitas ke paket yang ditentukan oleh pesan IncidentReportConfig dalam konfigurasi rekaman aktivitas proto.
--no-guardrails Menonaktifkan perlindungan terhadap penggunaan resource yang berlebihan saat mengaktifkan flag --upload selama pengujian.
--reset-guardrails Mereset status persisten dari guardrail dan keluar untuk pengujian.
--rsave-for-bugreport Jika rekaman aktivitas dengan bugreport_score > 0 berjalan, rekaman aktivitas akan disimpan ke dalam file. Menghasilkan jalur jika selesai.
--query Mengkueri status layanan dan menampilkannya sebagai teks yang dapat dibaca manusia.
--query-raw Mirip dengan --query, tetapi menampilkan byte yang dienkode proto mentah dari tracing_service_state.proto.
--help | -h Mencetak teks bantuan untuk alat perfetto.

Mode terang

Sintaksis umum untuk menggunakan perfetto dalam mode terang adalah seperti berikut:

 adb shell perfetto [ --time TIMESPEC ] [ --buffer SIZE ] [ --size SIZE ]
             [ ATRACE_CAT | FTRACE_GROUP/FTRACE_NAME | FTRACE_GROUP/* ]...
             --out FILE

Tabel berikut mencantumkan opsi yang tersedia saat menggunakan perfetto dalam mode terang:

Tabel 2. Daftar opsi alat perfetto yang tersedia saat menggunakan mode terang.

Opsi Deskripsi
--time TIME[s|m|h] |
-t TIME[s|m|h]
Menentukan durasi rekaman aktivitas dalam detik, menit, atau jam. Misalnya, --time 1m menentukan durasi rekaman aktivitas 1 menit. Durasi default-nya adalah 10 detik.
--buffer SIZE[mb|gb] |
-b SIZE[mb|gb]
Menentukan ukuran buffer ring dalam megabyte (mb) atau gigabyte (gb). Parameter default-nya adalah --buffer 32mb.
--size SIZE[mb|gb] |
-s SIZE[mb|gb]
Menentukan ukuran file maksimal dalam megabyte (mb) atau gigabyte (gb). Secara default, perfetto hanya menggunakan buffer ring dalam memori.
--app | -a Nama aplikasi Android (atrace)

Opsi ini diikuti dengan daftar penentu peristiwa:

Tabel 3. Daftar penentu peristiwa untuk mode terang.

Event Deskripsi
ATRACE_CAT Menentukan kategori atrace yang ingin Anda catat rekaman aktivitasnya. Misalnya, perintah berikut merekam aktivitas Window Manager menggunakan atrace:
    adb shell perfetto --out FILE wm
    

Untuk mencatat kategori lain, lihat daftar kategori atrace ini.

FTRACE_GROUP/FTRACE_NAME Menentukan peristiwa ftrace yang ingin Anda catat rekaman aktivitasnya. Misalnya, perintah berikut merekam aktivitas peristiwa sched/sched_switch:
      adb shell perfetto --out FILE sched/sched_switch
      

Mode normal

Sintaksis umum untuk menggunakan perfetto dalam mode normal adalah sebagai berikut:

 adb shell perfetto [ --txt ] --config CONFIG_FILE --out FILE

Tabel berikut mencantumkan opsi yang tersedia saat menggunakan perfetto dalam mode normal:

Tabel 4. Daftar opsi alat perfetto yang tersedia saat menggunakan mode normal.

Opsi Deskripsi
--config CONFIG_FILE | -c CONFIG_FILE Menentukan jalur ke file konfigurasi. Dalam mode normal, beberapa konfigurasi dapat dienkode dalam buffering protokol konfigurasi. File ini harus sesuai dengan skema buffering protokol yang didefinisikan dalam trace_config.proto AOSP.

Pilih dan konfigurasi sumber data menggunakan anggota DataSourceConfig dari TraceConfig, seperti yang didefinisikan dalam data_source_config.proto AOSP.

--txt Menginstruksikan perfetto untuk menguraikan file konfigurasi sebagai pbtxt. Flag ini hanya ditujukan untuk pengujian lokal, dan sebaiknya Anda tidak mengaktifkannya untuk produksi.

Sumber data yang didukung

Bagian ini menjelaskan sumber yang berbeda yang digunakan perfetto untuk membuat rekaman aktivitas.

ftrace

Sumber data ftrace memungkinkan perfetto untuk mendapatkan peristiwa dari kernel.

Aktifkan sumber ini dengan menetapkan ftrace_config di DataSourceConfig.

Peristiwa yang dapat diaktifkan mencakup:

  • Aktivitas penjadwalan:

    • sched/sched_switch
    • sched/sched_wakeup
    • sched/sched_wakeup_new
    • sched/sched_process_exec
    • sched/sched_process_exit
    • sched/sched_process_fork
    • sched/sched_process_free
    • sched/sched_process_hang
    • sched/sched_process_wait
  • Peristiwa sistem file:

  • Peristiwa atrace

Bergantung pada perangkat, versi OS, atau kernel, peristiwa lainnya mungkin tersedia. Untuk informasi selengkapnya, lihat mengonfigurasi proto.

Statistik Proses

Sumber data statistik proses memungkinkan Anda untuk mendapatkan penghitung yang di-polling tentang sistem dan proses masing-masing.

Aktifkan sumber ini dengan menetapkan process_stats_config dan sys_stats_config di DataSourceConfig.

Data yang dihasilkan oleh perfetto mencakup:

Bergantung pada perangkat, versi OS, dan kernel, peristiwa lainnya mungkin tersedia. Untuk mempelajari lebih lanjut, lihat proto konfigurasi untuk sys_stats dan process_stats.

heapprofd

heapprofd memungkinkan Anda membuat sampel penyebab penggunaan memori native.

Aktifkan sumber ini dengan menetapkan heapprofd_config di DataSourceConfig. Setelan ini menghasilkan ProfilePackets, termasuk frame Java callstack.

Informasi tambahan mengenai cara menggunakan heapprofd dapat ditemukan di perfetto.dev.

Sumber lainnya

Bergantung pada perangkat, versi OS, dan kernel, sumber data lainnya mungkin tersedia. Untuk mempelajari lebih lanjut, lihat proto konfigurasi sumber data.

Informasi tambahan tentang perfetto dapat ditemukan di perfetto.dev.