Berita Produk
Meningkatkan Performa Android: Memperkenalkan AutoFDO untuk Kernel
Waktu baca: 4 menit
Kami adalah tim toolchain Android LLVM. Salah satu prioritas utama kami adalah meningkatkan performa Android melalui teknik pengoptimalan di ekosistem LLVM. Kami terus mencari cara untuk membuat Android lebih cepat, lebih lancar, dan lebih efisien. Meskipun sebagian besar pekerjaan pengoptimalan kami dilakukan di ruang pengguna, kernel tetap menjadi inti sistem. Hari ini, dengan senang hati kami umumkan cara kami menghadirkan Pengoptimalan Berbasis Feedback Otomatis (AutoFDO) ke kernel Android untuk memberikan peningkatan performa yang signifikan bagi pengguna.
Apa yang dimaksud dengan AutoFDO?
Selama build software standar, compiler membuat ribuan keputusan kecil, seperti apakah akan meng-inline fungsi dan cabang kondisional mana yang mungkin diambil, berdasarkan petunjuk kode statis.Meskipun heuristik ini berguna, heuristik tersebut tidak selalu memprediksi eksekusi kode secara akurat selama penggunaan ponsel di dunia nyata.
AutoFDO mengubah hal ini dengan menggunakan pola eksekusi dunia nyata untuk memandu compiler. Pola ini mewakili jalur eksekusi instruksi paling umum yang diambil kode selama penggunaan sebenarnya, yang diambil dengan merekam histori percabangan CPU. Meskipun data ini dapat dikumpulkan dari perangkat fleet, untuk kernel, kami mensintesisnya di lingkungan lab menggunakan workload representatif, seperti menjalankan 100 aplikasi terpopuler. Kami menggunakan profiler sampling untuk mengambil data ini, mengidentifikasi bagian kode mana yang 'hot' (sering digunakan) dan mana yang 'cold'. Saat kami membangun kembali kernel dengan profil ini, compiler dapat membuat keputusan pengoptimalan yang jauh lebih cerdas yang disesuaikan dengan workload Android sebenarnya.
Untuk memahami dampak pengoptimalan ini, pertimbangkan fakta-fakta utama berikut:
- Di Android, kernel menyumbang sekitar 40% waktu CPU.
- Kami sudah menggunakan AutoFDO untuk mengoptimalkan library dan executable native di ruang pengguna, sehingga mencapai peningkatan peluncuran aplikasi cold sekitar 4% dan pengurangan waktu booting 1%.
Peningkatan Performa Dunia Nyata
Kami telah melihat peningkatan yang mengesankan di seluruh metrik Android utama dengan memanfaatkan profil dari lingkungan lab terkontrol. Profil ini dikumpulkan menggunakan perayapan dan peluncuran aplikasi, serta diukur pada perangkat Pixel di seluruh kernel 6.1, 6.6, dan 6.12.
Peningkatan yang paling terlihat tercantum di bawah. Detail tentang profil AutoFDO untuk versi kernel ini dapat ditemukan di repositori kernel Android masing-masing untuk kernel android16-6.12 dan android15-6.6.
Ini bukan hanya angka teoretis. Angka ini diterjemahkan ke dalam antarmuka yang lebih responsif, peralihan aplikasi yang lebih cepat, masa pakai baterai yang lebih lama, dan perangkat yang secara keseluruhan lebih responsif bagi pengguna akhir.
Cara Kerjanya: Pipeline
Strategi deployment kami melibatkan pipeline canggih untuk memastikan profil tetap relevan dan performa tetap stabil.
Langkah 1: Pengumpulan Profil
Meskipun kami mengandalkan fleet pengujian internal untuk membuat profil biner ruang pengguna, kami beralih ke lingkungan lab terkontrol untuk Generic Kernel Image (GKI). Memisahkan pembuatan profil dari siklus rilis perangkat memungkinkan update yang fleksibel dan langsung, terlepas dari versi kernel yang di-deploy. Yang terpenting, pengujian mengonfirmasi bahwa data berbasis lab ini memberikan peningkatan performa yang sebanding dengan data dari fleet dunia nyata.
- Alat & Lingkungan: Kami melakukan flash pada perangkat pengujian dengan image kernel terbaru dan menggunakan simpleperf untuk mengambil aliran eksekusi instruksi. Proses ini mengandalkan kemampuan hardware untuk merekam histori percabangan, khususnya menggunakan ARM Embedded Trace Extension (ETE) dan ARM Trace Buffer Extension (TRBE) di perangkat Pixel.
- Workload: Kami membuat workload representatif menggunakan 100 aplikasi terpopuler dari Android App Compatibility Test Suite (C-Suite). Untuk mengambil data yang paling akurat, kami berfokus pada:
- Peluncuran Aplikasi: Mengoptimalkan penundaan pengguna yang paling terlihat
- Perayapan Aplikasi Berbasis AI: Mensimulasikan interaksi pengguna yang berdekatan dan terus berkembang
- Pemantauan Seluruh Sistem: Mengambil tidak hanya aktivitas aplikasi latar depan, tetapi juga workload latar belakang penting dan komunikasi antar-proses
- Validasi: Workload yang disintesis ini menunjukkan kemiripan 85% dengan pola eksekusi yang dikumpulkan dari fleet internal kami.
- Data yang Ditargetkan: Dengan mengulangi pengujian ini secara memadai, kami mengambil pola eksekusi dengan fidelitas tinggi yang secara akurat mewakili interaksi pengguna dunia nyata dengan aplikasi terpopuler. Selain itu, framework yang dapat diperluas ini memungkinkan kami mengintegrasikan workload dan tolok ukur tambahan secara lancar untuk memperluas cakupan kami.
Langkah 2: Pemrosesan Profil
Kami melakukan pasca-pemrosesan data pelacakan mentah untuk memastikan data tersebut bersih, efektif, dan siap untuk compiler.
- Agregasi: Kami menggabungkan data dari beberapa pengujian dan perangkat ke dalam satu tampilan sistem.
- Konversi: Kami mengonversi pelacakan mentah ke dalam format profil AutoFDO, memfilter simbol yang tidak diinginkan sesuai kebutuhan.
- Pemangkasan Profil: Kami memangkas profil untuk menghapus data fungsi "cold", sehingga dapat menggunakan pengoptimalan standar. Hal ini mencegah regresi dalam kode yang jarang digunakan dan menghindari peningkatan ukuran biner yang tidak perlu.
Langkah 3: Pengujian Profil
Sebelum deployment, profil menjalani verifikasi yang ketat untuk memastikan profil tersebut memberikan peningkatan performa yang konsisten tanpa risiko stabilitas.
- Analisis Profil & Biner: Kami membandingkan konten profil baru (termasuk fungsi hot, jumlah sampel, dan ukuran profil) dengan versi sebelumnya secara ketat. Kami juga menggunakan profil untuk membuat image kernel baru, menganalisis biner untuk memastikan bahwa perubahan pada bagian teks konsisten dengan ekspektasi.
- Verifikasi Performa: Kami menjalankan tolok ukur yang ditargetkan pada image kernel baru. Hal ini mengonfirmasi bahwa image kernel mempertahankan peningkatan performa yang ditetapkan oleh dasar pengukuran sebelumnya.
Update Berkelanjutan
Kode secara alami "bergeser" dari waktu ke waktu, sehingga profil statis pada akhirnya akan kehilangan efektivitasnya. Untuk mempertahankan performa puncak, kami menjalankan pipeline secara terus-menerus untuk mendorong update reguler:
- Pemuatan Ulang Reguler: Kami memuat ulang profil di cabang LTS kernel Android sebelum setiap rilis GKI, sehingga memastikan setiap build menyertakan data profil terbaru.
- Perluasan di Masa Mendatang: Saat ini, kami memberikan update ini ke cabang
android16-6.12danandroid15-6.6serta akan memperluas dukungan ke versi GKI yang lebih baru, sepertiandroid17-6.18yang akan datang.
Memastikan Stabilitas
Pertanyaan umum terkait pengoptimalan berbasis profil adalah apakah pengoptimalan tersebut menimbulkan risiko stabilitas. Karena AutoFDO terutama memengaruhi heuristik compiler, seperti tata letak kode dan inlining fungsi, bukan mengubah logika kode sumber, AutoFDO mempertahankan integritas fungsional kernel. Teknologi ini telah terbukti dalam skala besar, yang berfungsi sebagai pengoptimalan standar untuk library platform Android, ChromeOS, dan infrastruktur server Google sendiri selama bertahun-tahun.
Untuk lebih menjamin perilaku yang konsisten, kami menerapkan strategi "konservatif secara default". Fungsi yang tidak diambil dalam profil fidelitas tinggi kami dioptimalkan menggunakan metode compiler standar. Hal ini memastikan bahwa bagian kernel yang "cold" atau jarang dieksekusi berperilaku persis seperti yang akan terjadi dalam build standar, sehingga mencegah regresi performa atau perilaku yang tidak terduga dalam kasus ekstrem.
Rencana ke Depan
Saat ini, kami men-deploy AutoFDO di seluruh cabang android16-6.12 dan android15-6.6. Selain peluncuran awal ini, kami melihat beberapa cara yang menjanjikan untuk lebih meningkatkan teknologi ini:
- Jangkauan yang Diperluas: Kami berharap dapat men-deploy profil AutoFDO ke versi kernel GKI yang lebih baru dan target build tambahan di luar dukungan
aarch64saat ini. - Pengoptimalan Modul GKI: Saat ini, pengoptimalan kami berfokus pada biner kernel utama (
vmlinux). Memperluas AutoFDO ke modul GKI dapat memberikan manfaat performa ke bagian yang lebih besar dari subsistem kernel. - Dukungan Modul Vendor: Kami juga tertarik untuk mendukung AutoFDO untuk modul vendor yang dibuat menggunakan Driver Development Kit (DDK). Dengan dukungan yang sudah tersedia di sistem build (Kleaf) dan alat pembuatan profil (simpleperf), vendor dapat menerapkan teknik pengoptimalan yang sama ke driver hardware tertentu.
- Cakupan Profil yang Lebih Luas: Ada potensi untuk mengumpulkan profil dari berbagai Perjalanan Penting Pengguna (CUJ) untuk mengoptimalkannya.
Dengan menghadirkan AutoFDO ke kernel Android, kami memastikan bahwa fondasi OS dioptimalkan untuk cara Anda menggunakan perangkat setiap hari.
Lanjutkan membaca
-
Berita Produk
Ekosistem seluler selalu berkembang, sehingga menghadirkan peluang dan ancaman baru. Melalui perubahan ini, Android dan Google Play tetap berkomitmen untuk memastikan miliaran pengguna dapat terus menikmati aplikasi mereka dengan percaya diri dan inovasi developer dapat berkembang.
Vijaya Kaza • Waktu baca: 3 menit
-
Berita Produk
Rilis Jetpack Compose April ‘26 sudah stabil. Rilis ini berisi modul Compose inti versi 1.11 (lihat pemetaan BOM lengkap), alat debug elemen bersama, peristiwa trackpad, dan lainnya.
Meghan Mehta • Waktu baca: 5 menit
-
Berita Produk
Android Studio Panda 4 kini stabil dan siap Anda gunakan dalam produksi. Rilis ini menghadirkan Mode Perencanaan, Prediksi Edit Berikutnya, dan lainnya, sehingga memudahkan Anda membuat aplikasi Android berkualitas tinggi.
Matt Dyor • Waktu baca: 5 menit
Terus dapatkan informasi
Dapatkan insight pengembangan Android terbaru yang dikirim ke kotak masuk Anda setiap minggu.