Salah satu masalah yang paling sulit bagi developer aplikasi adalah memastikan animasi yang mulus, bebas gangguan, dan tanpa jank. Masalah ini sangat sulit untuk di-debug saat sistem menjalankan juga tugas latar belakang yang menggunakan resource secara intensif. Tidak ada cara mudah untuk menentukan apakah beberapa jank disebabkan oleh aplikasi atau sistem. Namun, ada alat profiler yang dapat membantu Anda mengidentifikasi kemungkinan sumber perilaku buruk tersebut.
Merender di ChromeOS
Aplikasi yang disempurnakan, seperti game, biasanya menggunakan buffering ganda untuk mempertahankan waktu respons pengguna sesingkat mungkin. Namun, ada banyak hal yang dapat menurunkan performa. Misalnya, jika proses rendering frame membutuhkan waktu terlalu lama, hasil yang dirender tidak siap untuk pertukaran buffer berikutnya, dan akibatnya frame sebelumnya akan diulang.
Kemudian, perender tidak dapat memulai merender frame berikutnya, sehingga menyebabkan lebih banyak masalah. Skenario ini tidak asing bagi developer seluler Android; saat aplikasi berjalan di ChromeOS, konteksnya menjadi lebih rumit.
Aplikasi yang berjalan di desktop tidak merender langsung ke frame tampilan layar. Sebagai gantinya, datanya dirender menjadi tekstur. Biasanya ada beberapa aplikasi yang merender grafisnya menjadi tekstur. Sistem membuat tampilan pada layar menggunakan compositor untuk menggabungkan semua tekstur menjadi satu gambar desktop tunggal.
Compositor bekerja secara transparan di latar belakang. Namun, alat ini mengakibatkan penundaan waktu satu frame guna memaksimalkan penggunaan pipeline GPU. Dalam kondisi ideal hal ini mungkin tidak diperlukan, tetapi dapat memperlancar fluktuasi performa sistem dan membantu menyeimbangkan beban asimetris.
Saat OS bekerja sangat keras, GPU mungkin akan ditekan. Mungkin ada penundaan waktu dari waktu render frame saat frame muncul di layar. Bergantung pada hardware, sistem mungkin menggunakan buffering empat kali lipat untuk mengompensasinya. Meskipun dengan buffering yang lebih mendalam, pipeline grafis masih dapat mengalami gangguan.
Tracer grafis ARC
ChromeOS memiliki alat pembuatan profil yang menunjukkan cara buffer memantau sistem, saat pertukaran memori terjadi, seberapa sibuk CPU/GPU, dan aktivitas aplikasi Anda pada waktu tertentu, yang ditampilkan pada gambar berikut:
Menyiapkan profiler
Untuk menggunakan profiler, Anda harus menjalankan M75 atau yang lebih baru. Untuk hasil terbaik, gunakan perangkat Intel.
Sebelum menggunakan profiler, lakukan seed aplikasi Anda dengan trace.
Tambahkan Trace.traceCounter(Trace.TRACE_TAG_GRAPHICS, "Event", <number>);
ke kode Anda,
di mana pun Anda ingin menyertakan trace. Gunakan Event
yang diawali dengan
awalan customTrace
. Awalan tidak muncul di pesan rekaman aktivitas.
Untuk menyiapkan profiler, ikuti langkah-langkah berikut:
- Aktifkan mode developer.
- Aktifkan setelan Chrome dan aktifkan alat visualisasi buffer grafis ARC.
- Buka
chrome://arc-graphics-tracing
Menjalankan profiler
- Pilih berhenti saat jank.
- Jalankan aplikasi Android.
- Saat aplikasi Android aktif dan memiliki fokus, tekan Control+Shift+G.
Saat beberapa jank terjadi, jendela browser akan muncul. Gunakan tombol W dan S untuk memperbesar dan memperkecil linimasa.