Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

Memeriksa aktivitas CPU dengan CPU Profiler

Mengoptimalkan penggunaan CPU aplikasi Anda memiliki banyak keuntungan, misalnya memberikan pengalaman pengguna yang lebih cepat dan lebih lancar, serta menghemat masa pakai baterai perangkat.

Anda dapat menggunakan CPU Profiler untuk memeriksa penggunaan CPU dan aktivitas thread aplikasi Anda secara real time saat berinteraksi dengan aplikasi Anda, atau Anda dapat memeriksa detailnya di rekaman aktivitas metode, rekaman aktivitas fungsi, dan rekaman aktivitas sistem.

Jenis informasi spesifik yang direkam dan ditampilkan oleh CPU Profiler ditentukan oleh konfigurasi perekaman yang Anda pilih:

  • System Trace: Merekam detail akurat yang memungkinkan Anda memeriksa cara aplikasi Anda berinteraksi dengan resource sistem.
  • Method and function traces: Untuk setiap thread dalam proses aplikasi, Anda dapat mencari tahu metode (Java) atau fungsi (C/C++) mana yang dijalankan selama periode waktu tertentu, serta resource CPU yang digunakan setiap metode atau fungsi selama eksekusinya. Anda juga dapat menggunakan rekaman aktivitas metode dan fungsi untuk mengidentifikasi pemanggil dan tujuan panggilan. Pemanggil adalah metode atau fungsi yang memanggil metode atau fungsi lainnya, dan tujuan panggilan adalah metode atau fungsi yang dipanggil oleh metode atau fungsi lainnya. Anda dapat menggunakan informasi ini untuk menentukan metode atau fungsi mana yang bertanggung jawab karena terlalu sering memanggil tugas tertentu dengan resource berat, serta mengoptimalkan kode aplikasi untuk menghindari pekerjaan yang tidak perlu.

    Saat merekam aktivitas metode, Anda dapat memilih rekaman dengan sampel atau yang diinstrumentasi. Saat merekam aktivitas fungsi, Anda hanya dapat menggunakan perekaman dengan sampel.

Untuk mengetahui detail tentang penggunaan dan pemilihan setiap opsi perekaman aktivitas ini, lihat Memilih konfigurasi perekaman.

Ringkasan CPU Profiler

Untuk membuka CPU Profiler, ikuti langkah-langkah berikut:

  1. Pilih View > Tool Windows > Profiler atau klik Profile pada toolbar.

    Jika diminta oleh dialog Select Deployment Target, pilih perangkat tujuan untuk menerapkan aplikasi untuk profiling. Jika telah menyambungkan perangkat melalui USB tetapi tidak melihatnya tercantum, pastikan Anda telah mengaktifkan proses debug USB.

  2. Klik di mana saja dalam linimasa CPU untuk membuka CPU Profiler.

Saat dibuka, CPU Profiler akan langsung mulai menampilkan penggunaan CPU dan aktivitas thread aplikasi Anda. Anda akan melihat tampilan seperti dalam gambar 1.

Gambar 1. Linimasa dalam CPU Profiler.

Sebagaimana ditunjukkan dalam gambar 1, tampilan default untuk CPU Profiler menyertakan linimasa berikut ini:

  1. Event timeline: Menunjukkan aktivitas dalam aplikasi Anda saat bertransisi melalui berbagai keadaan dalam siklus hidupnya, dan menunjukkan interaksi pengguna dengan perangkat, termasuk peristiwa rotasi layar. Untuk mengetahui informasi tentang mengaktifkan linimasa peristiwa di perangkat yang menjalankan Android 7.1 (API level 25) dan yang lebih rendah, lihat Mengaktifkan pembuatan profil lanjutan.
  2. CPU timeline: Menunjukkan penggunaan CPU secara real time oleh aplikasi Anda, berupa persentase dari total waktu CPU yang tersedia, dan total jumlah thread yang digunakan oleh aplikasi Anda. Linimasa ini juga menunjukkan penggunaan CPU oleh proses lainnya (seperti proses sistem atau aplikasi lainnya) sehingga Anda dapat membandingkannya dengan penggunaan oleh aplikasi Anda. Anda dapat memeriksa data penggunaan CPU secara historis dengan menggerakkan mouse di sepanjang sumbu horizontal linimasa.
  3. Thread activity timeline: Mencantumkan setiap thread yang termasuk dalam proses aplikasi dan menunjukkan aktivitasnya sepanjang linimasa tertentu menggunakan warna yang tercantum di bawah ini. Setelah merekam aktivitas, Anda dapat memilih thread dari linimasa ini untuk memeriksa datanya di panel rekaman aktivitas.
    • Hijau: Artinya thread aktif atau siap untuk menggunakan CPU. Dengan kata lain, thread sudah berjalan atau dalam keadaan dapat dijalankan.
    • Kuning: Thread aktif, tetapi sedang menunggu operasi I/O, seperti I/O jaringan atau disk, sebelum dapat menyelesaikan pekerjaannya.
    • Abu-Abu: Thread sedang tidur dan tidak menggunakan waktu CPU sama sekali. Hal ini terkadang terjadi ketika thread memerlukan akses ke resource yang belum tersedia. Thread akan tidur dengan sendirinya, atau kernel akan menidurkan thread hingga resource yang diperlukannya tersedia.

    CPU Profiler juga melaporkan penggunaan CPU oleh thread yang ditambahkan oleh Android Studio dan platform Android ke proses aplikasi, seperti JDWP, Profile Saver, Studio:VMStats, Studio:Perfa, dan Studio:Heartbeat (meskipun nama persis yang ditampilkan di linimasa aktivitas thread mungkin bervariasi). Android Studio melaporkan data ini agar Anda dapat mengidentifikasi kapan aktivitas thread dan penggunaan CPU sebenarnya disebabkan oleh kode aplikasi Anda.

Merekam aktivitas

Untuk mulai merekam aktivitas, pilih konfigurasi perekaman dari menu drop-down di bagian atas CPU Profiler, lalu klik Record.

Gambar 2. CPU Profiler menampilkan status, durasi, dan jenis rekaman yang sedang dibuat.

Lakukan sesuatu dengan aplikasi, lalu klik Stop setelah selesai. Profiler akan secara otomatis memilih rentang waktu yang terekam dan menampilkan informasi perekaman aktivitasnya di panel rekaman aktivitas, seperti dalam gambar 3. Jika ingin memeriksa rekaman aktivitas untuk thread lain, pilih rekaman tersebut dari linimasa aktivitas thread.

Gambar 3. CPU Profiler setelah merekam aktivitas metode.

  1. Selected range: Menentukan porsi waktu terekam yang akan diperiksa di panel rekaman aktivitas. Saat merekam aktivitas untuk kali pertama, CPU Profiler akan secara otomatis memilih keseluruhan panjang rekaman Anda di linimasa CPU. Anda dapat memeriksa data perekaman aktivitas untuk sebagian waktu yang terekam dengan menarik bagian tepi region yang disorot.
  2. Timestamp: Menunjukkan waktu mulai dan selesai untuk rekaman aktivitas, relatif terhadap waktu profiler memulai pengumpulan informasi penggunaan CPU. Untuk memilih seluruh rekaman, klik stempel waktunya.
  3. Trace pane: Menampilkan data perekaman aktivitas untuk rentang waktu dan thread yang dipilih. Panel ini hanya muncul setelah Anda merekam setidaknya satu aktivitas. Di panel ini, Anda dapat memilih cara menampilkan setiap pelacakan tumpukan (menggunakan tab rekaman aktivitas) dan cara mengukur waktu eksekusi (menggunakan menu drop-down referensi waktu).
  4. Trace pane tabs: Pilih cara menampilkan detail rekaman aktivitas. Untuk mengetahui detail tentang setiap opsi yang ada, lihat Memeriksa rekaman aktivitas.
  5. Time reference menu: Pilih salah satu opsi berikut untuk menentukan cara pengukuran informasi waktu bagi setiap panggilan:
    • Wall clock time: Informasi pengaturan waktu yang menyatakan waktu berlalu yang sebenarnya.
    • Thread time: Informasi pengaturan waktu yang menyatakan waktu berlalu yang sebenarnya, dikurangi setiap bagian waktu tersebut ketika thread tidak menggunakan resource CPU. Untuk panggilan tertentu, waktu thread-nya selalu kurang dari atau sama dengan waktu jam dindingnya (wall clock time). Menggunakan waktu thread akan memberikan pemahaman yang lebih baik tentang banyaknya penggunaan CPU sesungguhnya oleh sebuah thread melalui metode atau fungsi tertentu.
  6. Filter: Memfilter data perekaman aktivitas menurut fungsi, metode, class, atau nama paket. Misalnya, jika ingin mengidentifikasi data perekaman aktivitas terkait panggilan tertentu dengan cepat, klik Filter atau tekan Ctrl + F (Command + F di Mac), lalu masukkan nama di kolom penelusuran. Di tab Call chart dan Flame chart, stack panggilan yang menyertakan panggilan, paket, atau class yang cocok dengan kueri penelusuran akan ditekankan. Di tab Top down dan Bottom up, stack panggilan tersebut akan lebih diprioritaskan daripada hasil penelusuran lainnya. Anda juga dapat mengaktifkan opsi berikut dengan mencentang kotak yang sesuai di samping kolom penelusuran:
    • Regex: Untuk menyertakan ekspresi reguler dalam penelusuran, gunakan opsi ini.
    • Match case: Jika penelusuran Anda peka dengan huruf besar kecil, gunakan opsi ini.

Memilih konfigurasi perekaman

Sebelum mulai merekam informasi aktivitas, pilih konfigurasi perekaman yang sesuai untuk informasi pembuatan profil yang ingin direkam:

  • Sample Java Methods: Merekam stack panggilan aplikasi dalam interval yang sering selama eksekusi kode berbasis Java milik aplikasi Anda. Profiler akan membandingkan kumpulan data yang direkam untuk memperoleh informasi pengaturan waktu dan penggunaan resource mengenai eksekusi kode berbasis Java milik aplikasi Anda.

    Masalah inheren dari perekaman aktivitas berbasis sampel adalah jika aplikasi Anda masuk ke suatu metode setelah perekaman stack panggilan selesai, dan aplikasi keluar dari metode tersebut sebelum perekaman berikutnya, panggilan metode tersebut tidak akan dicatat dalam log oleh profiler. Jika Anda memang ingin merekam aktivitas metode dengan siklus yang singkat seperti ini, gunakan perekaman aktivitas yang diinstrumentasi.

  • Trace Java Methods: Melengkapi aplikasi pada waktu proses untuk merekam stempel waktu di awal dan akhir setiap panggilan metode. Stempel waktu dikumpulkan dan dibandingkan untuk menghasilkan data perekaman aktivitas metode, termasuk informasi pengaturan waktu dan penggunaan CPU.

    Perlu diketahui bahwa overhead yang terkait dengan melengkapi setiap metode akan memengaruhi performa waktu proses dan dapat memengaruhi data pembuatan profil; hal ini bahkan lebih jelas untuk metode yang siklusnya relatif singkat. Selain itu, jika aplikasi mengeksekusi sejumlah besar metode dalam waktu singkat, profiler mungkin akan melampaui batas ukuran filenya dan mungkin tidak dapat merekam data aktivitas lebih lanjut.

  • Sample C/C++ Functions: Merekam aktivitas dengan sampel dari thread asli aplikasi Anda. Untuk menggunakan konfigurasi ini, Anda harus menerapkan aplikasi ke perangkat yang menjalankan Android 8.0 (API level 26) atau lebih tinggi.

    Secara internal, konfigurasi ini menggunakan simpleperfsimpleperf untuk merekam aktivitas kode native aplikasi Anda. Jika ingin menentukan opsi tambahan untuk simpleperf, seperti pengambilan sampel CPU perangkat tertentu atau menentukan durasi pengambilan sampel pada akurasi tinggi, Anda bisa menggunakan simpleperf dari command line.

  • Trace System Calls: Merekam detail akurat yang memungkinkan Anda memeriksa cara aplikasi berinteraksi dengan resource sistem. Anda dapat memeriksa pengaturan waktu dan durasi tepat status thread, memvisualkan letak hambatan CPU di seluruh core, dan menambahkan peristiwa perekaman aktivitas khusus untuk dianalisis. Informasi tersebut bisa menjadi sangat penting saat Anda perlu memecahkan masalah performa. Untuk menggunakan konfigurasi ini, Anda harus menerapkan aplikasi ke perangkat yang menjalankan Android 7.0 (API level 24) atau versi yang lebih tinggi.

    Saat menggunakan konfigurasi perekaman aktivitas ini, Anda dapat menandai rutinitas kode penting secara visual dalam linimasa profiler dengan melengkapi kode Anda. Untuk melengkapi kode C/C++, gunakan API perekaman aktivitas asli yang disediakan oleh trace.h. Untuk melengkapi kode Java, gunakan class Trace. Untuk mengetahui informasi selengkapnya, lihat Melengkapi kode aplikasi Anda.

    Konfigurasi perekaman aktivitas ini dibuat berdasarkan systrace. Anda bisa menggunakan utilitas baris perintah systrace untuk menentukan opsi di luar yang disediakan di CPU Profiler. Data tingkat sistem tambahan yang disediakan oleh systrace bisa membantu Anda memeriksa proses sistem asli dan memecahkan masalah frame yang menurun atau tertunda.

    Di perangkat yang menjalankan Android 9 (API level 28) atau yang lebih tinggi, Anda bisa menggunakan aplikasi sistem yang bernama Pelacakan Sistem untuk merekam aktivitas sistem di perangkat.

Membuat, mengedit, atau menampilkan konfigurasi perekaman

Anda dapat membuat, mengedit, dan menampilkan konfigurasi perekaman dalam dialog CPU Recording Configurations yang dapat dibuka dengan memilih Edit configurations dari menu drop-down konfigurasi perekaman di bagian atas CPU Profiler.

Untuk menampilkan setelan konfigurasi perekaman saat ini, pilih setelan di panel kiri dialog CPU Recording Configurations.

Untuk membuat konfigurasi perekaman baru, lakukan hal berikut:

  1. Klik Add di bagian kiri atas dialog. Opsi ini akan membuat konfigurasi baru dengan beberapa setelan default.
  2. Beri nama konfigurasi Anda.
  3. Pilih Trace Technology.
  4. Untuk konfigurasi perekaman dengan sampel, tentukan Sampling interval dalam mikrodetik (μs). Nilai ini menyatakan waktu di antara setiap sampel stack panggilan aplikasi Anda. Semakin pendek interval yang ditentukan, semakin cepat Anda mencapai batas ukuran file untuk data yang direkam.
  5. Tentukan File size limit dalam megabyte (MB) untuk data terekam yang ditulis ke perangkat yang terhubung. Saat Anda berhenti merekam, Android Studio akan mengurai data ini dan menampilkannya di jendela profiler. Jadi, jika Anda menaikkan batasnya dan merekam data dalam jumlah besar, Android Studio membutuhkan waktu lebih lama untuk mengurai file dan dapat berhenti merespons.

    Catatan: Jika menggunakan perangkat terhubung yang menjalankan Android 8.0 (API level 26) atau lebih tinggi, tidak ada batas ukuran file untuk data perekaman aktivitas, dan nilai ini akan diabaikan. Namun, Anda masih harus berhati-hati tentang berapa banyak data yang dikumpulkan perangkat setelah setiap sesi perekaman; Android Studio mungkin mengalami kesulitan dalam menguraikan file rekaman aktivitas berukuran besar. Misalnya, jika merekam aktivitas dengan sampel dalam interval pengambilan sampel yang singkat atau merekam aktivitas yang diinstrumentasi saat aplikasi memanggil banyak metode dalam waktu singkat, Anda akan dengan cepat menghasilkan file rekaman aktivitas yang berukuran besar.

  6. Untuk menerima perubahan dan melanjutkan perubahan pada konfigurasi lain, klik Apply. Untuk menerima semua perubahan yang diterapkan dan menutup dialog, klik OK.

Merekam aktivitas CPU dengan Debug API

Anda bisa menggunakan Debug API agar aplikasi bisa memulai dan menghentikan perekaman aktivitas CPU di CPU Profiler.

CPU Profiler akan mulai merekam ketika aplikasi Anda memanggil startMethodTracing(String tracePath), dan CPU Profiler akan berhenti merekam ketika aplikasi Anda memanggil stopMethodTracing(). Selagi merekam aktivitas CPU yang dipicu menggunakan API ini, CPU profiler akan menampilkan Debug API sebagai konfigurasi perekaman CPU saat ini.

Untuk mengontrol perekaman aktivitas CPU dengan Debug API, terapkan aplikasi yang diinstrumentasi ke perangkat yang menjalankan Android 8.0 (API level 26) atau versi yang lebih tinggi.

Untuk mengetahui informasi selengkapnya, lihat Menghasilkan log perekaman aktivitas dengan melengkapi aplikasi Anda.

Merekam aktivitas CPU saat aplikasi dimulai

Untuk mulai merekam aktivitas CPU secara otomatis saat aplikasi dimulai, lakukan hal berikut:

  1. Pilih Run > Edit Configurations.
  2. Di tab Profiling, centang kotak di samping Start recording a method trace on startup.
  3. Pilih konfigurasi perekaman CPU dari menu.
  4. Klik Apply.
  5. Terapkan aplikasi Anda ke perangkat yang menjalankan Android 8.0 (API level 26) atau lebih tinggi dengan memilih Run> Profile.

Mengekspor rekaman aktivitas

Setelah merekam aktivitas CPU dengan CPU profiler, Anda dapat mengekspor datanya sebagai file .trace untuk dibagikan dengan orang lain atau diperiksa nanti.

Untuk mengekspor file rekaman aktivitas dari linimasa CPU, lakukan hal berikut:

  1. Di linimasa CPU, klik kanan rekaman aktivitas metode atau rekaman aktivitas sistem yang ingin diekspor.
  2. Pilih Export trace dari menu drop-down.
  3. Jelajahi ke tempat Anda ingin menyimpan file, tentukan nama file, lalu klik OK.

Untuk mengekspor file rekaman aktivitas dari panel Session, lakukan hal berikut:

  1. Di panel Session, klik kanan rekaman aktivitas yang ingin diekspor.
  2. Klik tombol Export method trace atau Export system trace di bagian kanan entri sesi.
  3. Jelajahi ke tempat Anda ingin menyimpan file, tentukan nama file, lalu klik OK.

Mengimpor rekaman aktivitas

Anda bisa mengimpor file .trace yang dibuat dengan Debug API atau CPU Profiler.

Impor file trace Anda dengan mengklik Start new profiler session di panel Sessions profiler, kemudian pilih Load from file.

Anda bisa memeriksa rekaman aktivitas yang diimpor di CPU Profiler seperti ketika memeriksa rekaman aktivitas yang diambil langsung di CPU Profiler, dengan pengecualian berikut:

  • Aktivitas CPU tidak direpresentasikan sepanjang linimasa CPU.
  • Linimasa aktivitas thread hanya menunjukkan tempat data perekaman aktivitas tersedia bagi setiap thread, bukan keadaan thread sebenarnya (seperti berjalan, menunggu, atau tidur).

Memeriksa rekaman aktivitas

Panel rekaman aktivitas di CPU Profiler menyediakan beberapa tab yang memungkinkan Anda memilih cara menampilkan informasi dari rekaman aktivitas.

Untuk rekaman aktivitas metode dan rekaman aktivitas fungsi, Anda dapat memilih dari tab Call Chart, Flame Chart, Top Down, dan Bottom Up. Untuk rekaman aktivitas sistem, Anda dapat memilih dari tab Trace Events, Flame Chart, Top Down, dan Bottom Up.

Memeriksa rekaman aktivitas menggunakan tab Call Chart

Tab Call Chart menyediakan representasi grafis dari rekaman aktivitas metode atau rekaman aktivitas fungsi, dengan periode dan pengaturan waktu panggilan yang direpresentasikan pada sumbu horizontal, dan tujuan panggilannya ditampilkan di sepanjang sumbu vertikal. Panggilan ke API sistem ditunjukkan dengan warna oranye, panggilan ke metode aplikasi Anda ditunjukkan dengan warna hijau, dan panggilan ke API pihak ketiga (termasuk API bahasa Java) ditunjukkan dengan warna biru. Gambar 4 menunjukkan contoh call chart dan menggambarkan konsep waktu mandiri (self), waktu turunan (children), dan total waktu untuk metode atau fungsi tertentu. Anda dapat mempelajari konsep-konsep ini lebih lanjut di bagian tentang cara memeriksa rekaman aktivitas menggunakan Top Down dan Bottom Up.

Gambar 4. Contoh call chart yang menggambarkan self, children, dan total waktu untuk metode D.

Tips: Untuk melompati kode sumber suatu metode atau fungsi, klik kanan metode atau fungsi dan pilih Jump to Source. Cara ini dapat dilakukan dari tab panel rekaman aktivitas apa pun.

Memeriksa rekaman aktivitas menggunakan tab Flame Chart

Tab Flame Chart menyediakan call chart terbalik yang menggabungkan stack panggilan identik. Artinya, metode atau fungsi identik yang memiliki urutan pemanggil yang sama akan dikumpulkan dan direpresentasikan sebagai batang yang lebih panjang dalam flame chart (bukan menampilkannya sebagai beberapa batang yang lebih pendek, seperti dalam call chart). Hal ini memudahkan Anda melihat metode atau fungsi mana yang paling banyak menghabiskan waktu. Namun, hal ini juga berarti sumbu horizontal tidak menyatakan linimasa; sebagai gantinya, sumbu ini menunjukkan jumlah waktu relatif yang dibutuhkan setiap metode atau fungsi untuk dieksekusi.

Untuk membantu menggambarkan konsep ini, pertimbangkan call chart pada gambar 5. Perlu diketahui bahwa metode D membuat beberapa panggilan ke B (B1, B2, dan B3), dan beberapa panggilan ke B tersebut membuat panggilan ke C (C1 dan C3).

Gambar 5. Call chart dengan beberapa panggilan metode yang memiliki urutan pemanggil yang sama.

Karena B1, B2, dan B3 memiliki urutan pemanggil yang sama (A → D → B), semuanya akan digabungkan, seperti dalam gambar 6. Demikian pula, C1 dan C3 digabungkan karena memiliki urutan pemanggil yang sama (A → D → B → C); perlu diketahui bahwa C2 tidak termasuk karena memiliki urutan pemanggil yang berbeda (A → D → C).

Gambar 6. Menggabungkan metode identik yang memiliki stack panggilan yang sama.

Panggilan yang digabungkan digunakan untuk membuat flame chart, seperti dalam gambar 7. Perlu diketahui bahwa untuk setiap panggilan tertentu dalam flame chart, tujuan panggilan yang mengonsumsi paling banyak waktu CPU akan muncul terlebih dahulu.

Gambar 7. Representasi flame chart dari call chart yang ditunjukkan dalam gambar 5.

Memeriksa rekaman aktivitas menggunakan Top Down dan Bottom Up

Tab Top Down menampilkan daftar panggilan, yang jika digunakan untuk memperluas node metode atau fungsi akan menampilkan tujuan panggilannya. Gambar 8 menunjukkan grafik top down untuk call chart dalam gambar 4. Setiap panah dalam grafik menunjuk dari pemanggil ke tujuan panggilan.

Seperti dalam gambar 8, memperluas node untuk metode A di tab Top Down akan menampilkan tujuan panggilannya, metode B, dan D. Setelah itu, memperluas node untuk metode D akan mengekspos tujuan panggilannya, metode B dan C, dan seterusnya. Begitu juga dengan tab Flame chart, pohon top down mengumpulkan informasi perekaman aktivitas untuk metode identik dengan stack panggilan yang sama. Artinya, tab Flame chart menyediakan representasi grafis dari tab Top down.

Tab Top Down menyediakan informasi berikut ini untuk membantu mendeskripsikan waktu CPU yang dihabiskan bagi setiap panggilan (waktu juga direpresentasikan sebagai persentase total waktu thread dalam rentang yang dipilih):

  • Self: waktu yang dihabiskan oleh panggilan metode atau fungsi untuk mengeksekusi kodenya sendiri, bukan milik tujuan panggilannya, seperti dalam gambar 4 untuk metode D.
  • Children: waktu yang dihabiskan oleh panggilan metode atau fungsi untuk mengeksekusi tujuan panggilannya, bukan kodenya sendiri, seperti dalam gambar 4 untuk metode D.
  • Total: jumlah waktu Self dan Children milik metode. Informasi ini menyatakan total waktu yang dihabiskan oleh aplikasi untuk mengeksekusi panggilan, seperti dalam gambar 4 untuk metode D.

Gambar 8. Pohon Top Down.

Gambar 9. Pohon Bottom Up untuk metode C dari gambar 8.

Tab Bottom Up menampilkan daftar panggilan, yang jika digunakan untuk memperluas node fungsi atau metode akan menampilkan pemanggilnya. Menggunakan contoh rekaman aktivitas dalam gambar 8, gambar 9 menyediakan pohon bottom up untuk metode C. Membuka node untuk metode C di pohon bottom up akan menampilkan setiap pemanggil uniknya, metode B, dan D. Perlu diketahui bahwa, meskipun B memanggil C dua kali, B hanya akan muncul sekali saat memperluas node untuk metode C di pohon bottom up. Setelah itu, memperluas node untuk B akan menampilkan pemanggilnya, yaitu metode A dan D.

Tab Bottom Up berguna untuk mengurutkan metode atau fungsi berdasarkan yang paling banyak menghabiskan waktu CPU. Anda dapat memeriksa setiap node guna menentukan pemanggil mana yang menghabiskan paling banyak waktu CPU untuk memanggil metode atau fungsi tersebut. Dibandingkan pohon top down, informasi pengaturan waktu untuk setiap metode atau fungsi di pohon bottom up saling berhubungan dengan metode di bagian atas setiap pohon (node atas). Waktu CPU juga direpresentasikan sebagai persentase total waktu thread selama perekaman tersebut. Tabel berikut ini membantu menjelaskan cara menafsirkan informasi pengaturan waktu untuk node atas dan pemanggilnya (sub-node).

Self Children Total
Metode atau fungsi di bagian atas pohon bottom up (node atas) Menyatakan total waktu yang dihabiskan oleh metode atau fungsi untuk mengeksekusi kodenya sendiri, bukan kode tujuan panggilannya. Dibandingkan pohon top down, informasi pengaturan waktu ini menyatakan jumlah semua panggilan ke metode atau fungsi ini selama durasi perekaman. Menyatakan total waktu yang dihabiskan oleh metode atau fungsi untuk mengeksekusi tujuan panggilannya, bukan kodenya sendiri. Dibandingkan pohon top down, informasi pengaturan waktu ini menyatakan jumlah semua panggilan ke tujuan panggilan metode atau fungsi ini selama durasi perekaman. Jumlah waktu mandiri dan waktu turunan.
Pemanggil (sub-node) Menyatakan total waktu mandiri tujuan panggilan ketika dipanggil oleh pemanggil. Menggunakan pohon bottom up dalam gambar 9 sebagai contoh, waktu mandiri untuk metode B akan sama dengan jumlah waktu mandiri untuk setiap eksekusi metode C ketika dipanggil oleh B. Menyatakan total waktu turunan dari tujuan panggilan ketika dipanggil oleh pemanggil. Menggunakan pohon bottom up dalam gambar 9 sebagai contoh, waktu turunan untuk metode B akan sama dengan jumlah waktu turunan untuk setiap eksekusi metode C ketika dipanggil oleh B. Jumlah waktu mandiri dan waktu turunan.

Catatan: Untuk perekaman tertentu, Android Studio akan berhenti mengumpulkan data baru ketika profiler mencapai batas ukuran file (namun, perekaman tidak akan dihentikan). Hal ini biasanya terjadi jauh lebih cepat saat melakukan perekaman aktivitas yang diinstrumentasi karena tipe rekaman aktivitas ini mengumpulkan lebih banyak data di waktu yang lebih singkat dibandingkan perekaman aktivitas dengan sampel. Jika Anda memperpanjang waktu pemeriksaan hingga periode perekaman yang terjadi setelah batas tercapai, data pengaturan waktu di panel rekaman aktivitas tidak akan berubah (karena tidak ada data baru yang tersedia). Selain itu, panel rekaman aktivitas akan menampilkan NaN untuk informasi pengaturan waktu jika Anda hanya memilih sebagian rekaman tanpa data yang tersedia.

Memeriksa rekaman aktivitas sistem menggunakan tab Trace Events

Saat memeriksa rekaman aktivitas sistem, Anda dapat menggunakan tab Trace Events untuk menampilkan detail peristiwa yang terjadi pada setiap thread.

Untuk melihat detail suatu thread, pilih thread di panel Threads. Tindakan ini akan menyoroti aktivitas thread pada setiap core CPU di panel Kernel dan menampilkan peristiwa untuk thread di tab Trace Events. Arahkan penunjuk mouse ke peristiwa di tab Trace Events untuk melihat nama peristiwa dan waktu yang dihabiskan dalam setiap status.

Misalnya, gambar 10 menunjukkan RenderThread yang dipilih di panel Threads, aktivitasnya disorot pada CPU 0 dan CPU 1 di panel Kernel, dan waktu yang dihabiskan untuk peristiwa tertentu di tab Trace Events.

Gambar 10. Menampilkan aktivitas CPU dan peristiwa rekaman aktivitas untuk thread render.

Untuk mengetahui informasi selengkapnya tentang memeriksa informasi rekaman aktivitas sistem, baca bagian Memeriksa masalah performa UI dalam dokumentasi systrace.

Memeriksa data rendering frame

Anda dapat memeriksa waktu yang dibutuhkan oleh aplikasi untuk merender setiap frame pada thread utama dan RenderThread untuk menyelidiki hambatan yang menyebabkan UI menjadi lambat dan framerate menjadi rendah.

Untuk melihat data rendering frame, rekam aktivitas menggunakan konfigurasi yang memungkinkan Anda melacak panggilan sistem (Trace System Calls). Setelah merekam aktivitas, cari info tentang setiap frame di bawah bagian bernama FRAMES, seperti dalam gambar 11.

Gambar 11. Setiap frame yang membutuhkan waktu lebih dari 16 md ditampilkan dalam warna merah.