Panduan ini menjelaskan cara membuka dan menafsirkan laporan Systrace. Untuk menafsirkan laporan Perfetto, lihat dokumentasi Pemroses Rekaman Aktivitas.
Elemen laporan biasa
Systrace menghasilkan output file HTML yang berisi serangkaian bagian. Laporan ini mencantumkan thread dari setiap proses. Jika thread yang diberikan merender frame UI, laporan juga menunjukkan frame yang dirender di sepanjang linimasa. Waktu berlalu seiring Anda bergerak dari kiri ke kanan di seluruh laporan.
Dari atas ke bawah, laporan berisi bagian-bagian berikut.
Interaksi pengguna
Bagian pertama berisi batang-batang yang merepresentasikan interaksi pengguna tertentu dalam aplikasi atau game Anda, seperti mengetuk layar perangkat. Interaksi tersebut berfungsi sebagai penanda waktu yang berguna.
Aktivitas CPU
Bagian berikutnya menampilkan batang-batang yang merepresentasikan aktivitas thread dalam setiap CPU. Batang ini menampilkan aktivitas CPU di seluruh aplikasi, termasuk aplikasi atau game Anda.
Bagian aktivitas CPU dapat diperluas, sehingga Anda dapat melihat frekuensi untuk setiap CPU. Gambar 1 menunjukkan contoh bagian aktivitas CPU yang diciutkan, dan Gambar 2 menunjukkan versi yang diperluas yang menampilkan frekuensi clock:
Peristiwa sistem
Histogram di bagian ini menampilkan peristiwa tingkat sistem tertentu, seperti jumlah tekstur dan ukuran total objek tertentu.
Histogram yang perlu diperiksa lebih teliti adalah yang diberi label SurfaceView. Jumlah tersebut menunjukkan jumlah buffer frame tersusun yang telah diteruskan ke pipeline tampilan dan menunggu untuk ditampilkan di layar perangkat. Karena sebagian besar perangkat menerapkan buffering dua atau tiga kali lipat, jumlah ini hampir selalu 0, 1, atau 2.
Histogram lain menggambarkan proses Surface Flinger, termasuk peristiwa VSync dan tugas pertukaran thread UI, seperti pada Gambar 3:
Frame tampilan
Bagian ini, sering menjadi yang terpanjang dalam laporan, menggambarkan garis
warna-warni diikuti oleh tumpukan batang. Bentuk tersebut merepresentasikan status dan tumpukan frame thread
tertentu yang telah dibuat. Setiap tingkat tumpukan merepresentasikan
panggilan ke beginSection()
, atau awal dari peristiwa rekaman aktivitas
kustom yang telah Anda tentukan untuk aplikasi
atau game.
Garis warna-warni di atas setiap tumpukan batang merepresentasikan rangkaian status thread tertentu dari waktu ke waktu. Setiap segmen baris bisa berisi salah satu warna berikut:
- Hijau: Berjalan
- Thread sedang menyelesaikan pekerjaan yang terkait dengan proses atau merespons terhadap gangguan.
- Biru: Dapat dijalankan
- Thread tersedia untuk dijalankan, tetapi saat ini tidak dijadwalkan.
- Putih: Tidur
- Thread tidak memiliki tugas, mungkin karena thread diblokir pada kunci mutex.
- Jingga: Tidur yang tidak dapat dihentikan
- Thread diblokir di I/O atau menunggu operasi disk selesai.
- Ungu: Tidur yang dapat dihentikan
- Thread diblokir pada operasi kernel lain, biasanya pengelolaan memori.
Pintasan keyboard
Tabel berikut mencantumkan pintasan keyboard yang tersedia saat melihat laporan Systrace:
Kunci | Deskripsi | |
---|---|---|
W | Memperbesar linimasa pelacakan. | |
A | Menggeser ke kiri linimasa pelacakan. | |
S | Memperkecil linimasa pelacakan. | |
D | Menggeser ke kanan linimasa pelacakan. | |
E | Menggeser ke tengah linimasa pelacakan di lokasi mouse saat ini. | |
M | Membingkai pilihan saat ini. | |
1 | Mengubah model pilihan yang sedang aktif ke mode "pilih". Sesuai dengan tombol pertama yang muncul di toolbar pemilih mouse (lihat gambar di sebelah kanan). |
|
2 | Mengubah model pemilihan yang saat ini aktif menjadi mode "geser". Sesuai dengan tombol kedua yang muncul di toolbar pemilih mouse (lihat gambar di sebelah kanan). |
|
3 | Mengubah model pemilihan yang saat ini aktif menjadi mode "zoom". Sesuai dengan tombol ketiga yang muncul di toolbar pemilih mouse (lihat gambar di sebelah kanan). |
|
4 | Mengubah model pemilihan yang saat ini aktif ke mode "pengaturan waktu". Sesuai dengan tombol keempat yang muncul di toolbar pemilih mouse (lihat gambar di sebelah kanan). |
|
G | Menampilkan petak di awal tugas yang saat ini dipilih. | |
Shift + G | Menampilkan petak di akhir tugas yang saat ini dipilih. | |
Panah Kiri | Memilih peristiwa sebelumnya pada linimasa yang saat ini dipilih. | |
Panah Kanan | Memilih peristiwa berikutnya pada linimasa yang saat ini dipilih. |
Menyelidiki masalah performa
Saat berinteraksi dengan laporan Systrace, Anda dapat memeriksa penggunaan CPU perangkat selama durasi perekaman. Untuk bantuan dalam menavigasi laporan HTML, lihat bagian pintasan keyboard, atau klik tombol ? di sudut kanan atas laporan.
Bagian di bawah menjelaskan cara memeriksa informasi dalam laporan untuk menemukan dan memperbaiki masalah performa.
Mengidentifikasi masalah performa
Saat membuka laporan Systrace, Anda dapat mengidentifikasi masalah performa dengan lebih mudah menggunakan satu atau beberapa cara berikut:
- Pilih interval waktu yang diinginkan dengan menggambar persegi panjang di sekitar interval waktu.
- Tandai area bermasalah menggunakan fitur penggaris.
- Tampilkan setiap operasi muat ulang tampilan dengan mengklik View Options > Highlight VSync.
Memeriksa peringatan dan frame UI
Seperti yang ditunjukkan pada Gambar 4, laporan Systrace mencantumkan setiap proses yang merender frame UI dan menunjukkan setiap frame yang dirender di sepanjang linimasa. Frame yang dirender dalam waktu 16,6 milidetik yang diperlukan untuk mempertahankan stabilitas 60 frame per detik ditunjukkan dengan lingkaran frame hijau. Frame yang membutuhkan waktu lebih lama dari 16,6 milidetik untuk dirender ditunjukkan dengan lingkaran frame berwarna kuning atau merah.
![Tampilan
frame yang diperbesar](https://developer.android.com/static/topic/performance/images/tracing/frame-unselected.png?authuser=6&hl=id)
Mengklik lingkaran frame akan menandainya dan memberikan informasi tambahan tentang tugas yang dilakukan oleh sistem untuk merender frame tersebut, termasuk peringatan. Laporan ini juga menunjukkan kepada Anda metode yang dijalankan sistem saat merender frame. Anda dapat menyelidiki metode-metode tersebut untuk menentukan potensi penyebab jank pada UI.
![Frame
bermasalah dipilih](https://developer.android.com/static/topic/performance/images/tracing/frame-selected.png?authuser=6&hl=id)
Setelah memilih frame lambat, Anda mungkin melihat peringatan di panel bawah
laporan. Peringatan yang ditunjukkan pada Gambar 5 menunjukkan bahwa masalah utama pada
frame adalah terlalu banyak waktu yang dihabiskan di dalam
pengikatan ulang (rebinding) dan pendaurulangan ListView
. Terdapat
link ke peristiwa yang relevan dalam rekaman aktivitas yang menjelaskan lebih lanjut apa
yang dilakukan sistem selama waktu ini.
Untuk melihat setiap peringatan yang ditemukan fitur tersebut pada pelacakan Anda, serta berapa kali perangkat memicu setiap peringatan, klik tab Alerts di ujung kanan jendela, seperti yang ditunjukkan pada Gambar 6. Panel Alerts membantu Anda melihat masalah yang terjadi dalam rekaman aktivitas dan seberapa sering menyebabkan munculnya jank. Anda dapat menganggap panel ini sebagai daftar bug yang harus diperbaiki. Sering kali, perubahan atau peningkatan kecil dalam satu area dapat menghapus seluruh rangkaian peringatan.
![Tab Alert ditampilkan](https://developer.android.com/static/topic/performance/images/tracing/frame-selected-alert-tab.png?authuser=6&hl=id)
Jika Anda melihat terlalu banyak tugas yang dilakukan pada UI thread, gunakan salah satu pendekatan berikut untuk membantu menentukan metode mana yang menggunakan terlalu banyak waktu CPU:
- Jika Anda mengetahui metode mana yang dapat menyebabkan bottleneck, tambahkan penanda rekaman aktivitas ke metode tersebut. Untuk mempelajari lebih lanjut, lihat panduan tentang cara menentukan peristiwa kustom pada kode Anda.
- Jika Anda tidak yakin tentang sumber bottleneck pada UI, gunakan CPU Profiler yang tersedia di Android Studio. Anda dapat membuat log rekaman aktivitas, lalu mengimpor dan memeriksanya menggunakan CPU Profiler.