Memahami laporan Systrace

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:

Screenshot laporan Systrace
Gambar 1. Contoh aktivitas CPU (tampilan diciutkan) dalam laporan Systrace

Screenshot laporan Systrace
Gambar 2. Contoh aktivitas CPU (tampilan diperluas) yang menunjukkan frekuensi CPU dalam laporan Systrace

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:

Screenshot laporan Systrace
Gambar 3. Contoh grafik Surface Flinger dalam laporan Systrace

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). Screenshot toolbar pemilih mouse dalam laporan Systrace
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). Screenshot toolbar pemilih mouse dalam laporan Systrace
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). Screenshot toolbar pemilih mouse dalam laporan Systrace
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). Screenshot toolbar pemilih mouse dalam laporan Systrace
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
Gambar 4. Tampilan Systrace setelah memperbesar frame yang berjalan lama

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
Gambar 5. Memilih frame yang bermasalah, peringatan muncul di bawah laporan rekaman aktivitas yang mengidentifikasi masalah

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
Gambar 6. Mengklik tombol Alert akan menampilkan tab peringatan

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.