Manajemen kinerja

Mengelola daya dan performa perangkat Android dapat membantu memastikan aplikasi berjalan secara konsisten dan lancar di berbagai hardware. Di Android 7.0 dan yang lebih baru, OEM dapat menerapkan dukungan untuk petunjuk performa berkelanjutan yang memungkinkan aplikasi mempertahankan performa perangkat yang konsisten dan menentukan core eksklusif untuk meningkatkan performa aplikasi latar depan yang intensif CPU.

Performa berkelanjutan

Untuk aplikasi yang berjalan lama (game, kamera, RenderScript, pemrosesan audio), performa dapat bervariasi secara drastis saat batas suhu perangkat tercapai dan mesin sistem di chip (SoC) di-throttle. Developer aplikasi yang membuat aplikasi berperforma tinggi dan berjalan lama dibatasi karena kemampuan platform yang mendasarinya adalah target yang bergerak saat perangkat mulai panas.

Untuk mengatasi batasan ini, Android 7.0 memperkenalkan dukungan untuk performa yang berkelanjutan, sehingga OEM dapat memberikan petunjuk tentang kemampuan performa perangkat untuk aplikasi yang berjalan lama. Developer aplikasi dapat menggunakan petunjuk ini untuk menyesuaikan aplikasi agar mendapatkan tingkat performa perangkat yang konsisten dan dapat diprediksi selama jangka waktu yang lama.

Arsitektur

Aplikasi Android dapat meminta platform untuk memasuki mode performa berkelanjutan, tempat perangkat Android dapat mempertahankan tingkat performa yang konsisten selama jangka waktu yang lama.

Gambar 1. Arsitektur mode performa berkelanjutan.

Implementasi

Untuk mendukung performa yang berkelanjutan di Android 7.0 dan yang lebih baru, OEM harus:

  • Lakukan perubahan khusus perangkat pada HAL daya untuk mengunci frekuensi CPU/GPU maksimum atau melakukan pengoptimalan lain untuk mencegah throttle termal.
  • Terapkan petunjuk baru POWER_HINT_SUSTAINED_PERFORMANCE di HAL daya.
  • Deklarasikan dukungan dengan menampilkan BENAR melalui isSustainedPerformanceModeSupported() API.
  • Implementasikan Window.setSustainedPerformanceMode.

Dalam implementasi referensi Nexus, petunjuk daya membatasi frekuensi maksimum CPU dan GPU pada tingkat berkelanjutan tertinggi. Perlu diingat bahwa menurunkan panel MAX pada frekuensi CPU/GPU akan menurunkan kecepatan frame, tetapi kecepatan yang lebih rendah ini lebih disukai dalam mode ini karena keberlanjutannya. Misalnya, perangkat yang menggunakan clock maksimum normal mungkin dapat merender pada 60 FPS selama beberapa menit, tetapi setelah perangkat memanas, perangkat dapat di-throttle ke 30 FPS pada akhir 30 menit. Saat menggunakan mode berkelanjutan, perangkat dapat, misalnya, merender secara konsisten pada 45 FPS selama 30 menit. Sasarannya adalah kecepatan frame saat menggunakan mode yang sama tinggi (atau lebih tinggi) dengan kecepatan frame saat tidak menggunakan mode, dan konsisten dari waktu ke waktu sehingga developer tidak perlu mengejar target yang bergerak.

Sebaiknya terapkan mode berkelanjutan sehingga perangkat mencapai performa berkelanjutan setinggi mungkin—bukan hanya nilai minimum yang diperlukan untuk lulus pengujian (misalnya, pilih batas frekuensi MAKSIMAL setinggi mungkin yang tidak menyebabkan perangkat mengalami throttling termal dari waktu ke waktu).

Catatan: Pembatasan frekuensi clock MAX tidak diperlukan untuk menerapkan mode berkelanjutan.

Validasi

OEM dapat menggunakan pengujian CTS (Android 7.0 dan yang lebih baru) untuk memverifikasi penerapan API performa berkelanjutan. Pengujian ini menjalankan beban kerja selama sekitar 30 menit dan menjalankan benchmark performa dengan dan tanpa mengaktifkan mode berkelanjutan:

  • Dengan mengaktifkan mode berkelanjutan, kecepatan frame harus tetap relatif konstan (pengujian mengukur persentase perubahan kecepatan frame dari waktu ke waktu dan memerlukan perubahan <5%).
  • Dengan mode berkelanjutan diaktifkan, kecepatan frame tidak boleh lebih rendah dari kecepatan frame pada akhir 30 menit dengan mode dinonaktifkan.

Selain itu, Anda dapat menguji penerapan secara manual dengan beberapa beban kerja yang intensif CPU dan GPU untuk memastikan perangkat tidak mengalami throttling termal setelah 30 menit penggunaan. Dalam pengujian internal, kami menggunakan contoh beban kerja termasuk game dan aplikasi benchmark (misalnya gfxbench).

Core eksklusif

Untuk workload yang intensif CPU dan sensitif waktu, didahului oleh thread lain dapat menjadi perbedaan antara membuat batas waktu frame atau tidak. Untuk aplikasi yang memiliki persyaratan latensi dan kecepatan frame yang ketat (seperti aplikasi audio atau virtual reality), memiliki core CPU eksklusif dapat menjamin tingkat performa yang dapat diterima.

Perangkat yang menjalankan Android 7.0 atau yang lebih baru kini dapat mencadangkan satu core secara eksplisit untuk aplikasi latar depan teratas, sehingga meningkatkan performa untuk semua aplikasi latar depan dan memberi aplikasi dengan beban kerja intensitas tinggi lebih banyak kontrol atas cara pekerjaannya dialokasikan di seluruh core CPU.

Untuk mendukung core eksklusif di perangkat:

  • Aktifkan cpusets dan konfigurasikan cpuset yang hanya berisi aplikasi latar depan teratas.
  • Pastikan satu core (ini adalah core eksklusif) dicadangkan untuk thread dari cpuset ini.
  • Terapkan getExclusiveCores API untuk menampilkan nomor core core eksklusif.

Untuk menentukan proses mana yang dijadwalkan di core mana, gunakan systrace saat menjalankan beban kerja apa pun dan pastikan tidak ada thread ruang pengguna dari aplikasi selain aplikasi latar depan teratas yang dijadwalkan di core eksklusif.

Untuk melihat implementasi referensi untuk Nexus 6P, lihat android//device/huawei/angler/power/power.c.