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, lancar, dan efisien. Meskipun sebagian besar pekerjaan pengoptimalan kami terjadi di ruang pengguna, kernel tetap menjadi inti sistem. Hari ini, kami dengan senang hati ingin membagikan cara kami menghadirkan Pengoptimalan yang Diarahkan oleh Masukan Otomatis (AutoFDO) ke kernel Android untuk memberikan peningkatan performa yang signifikan bagi pengguna.
Apa itu AutoFDO?
Selama build software standar, compiler membuat ribuan keputusan kecil, seperti apakah akan menyisipkan fungsi dan cabang kondisi mana yang kemungkinan akan diambil, berdasarkan petunjuk kode statis.Meskipun heuristik ini berguna, heuristik ini tidak selalu memprediksi eksekusi kode secara akurat selama penggunaan ponsel di dunia nyata.
AutoFDO mengubah hal ini dengan menggunakan pola eksekusi di dunia nyata untuk memandu compiler. Pola ini menunjukkan 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 armada, untuk kernel, kami mensintesisnya di lingkungan lab menggunakan beban kerja representatif, seperti menjalankan 100 aplikasi paling populer. Kami menggunakan profiler pengambilan sampel untuk merekam data ini, mengidentifikasi bagian kode mana yang 'panas' (sering digunakan) dan mana yang 'dingin'. Saat kita membangun ulang kernel dengan profil ini, compiler dapat membuat keputusan pengoptimalan yang jauh lebih cerdas yang disesuaikan dengan beban kerja Android yang sebenarnya.
Untuk memahami dampak pengoptimalan ini, pertimbangkan fakta-fakta penting berikut:
- Di Android, kernel menyumbang sekitar 40% waktu CPU.
- Kami sudah menggunakan AutoFDO untuk mengoptimalkan library dan file yang dapat dieksekusi native di ruang pengguna, sehingga mencapai peningkatan peluncuran aplikasi dingin 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 yang terkontrol. Profil ini dikumpulkan menggunakan crawling 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. Hal ini menghasilkan antarmuka yang lebih cepat, peralihan aplikasi yang lebih cepat, daya tahan 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 armada pengujian internal untuk memprofilkan biner ruang pengguna, kami beralih ke lingkungan lab terkontrol untuk Generic Kernel Image (GKI). Dengan memisahkan pembuatan profil dari siklus rilis perangkat, update yang fleksibel dan langsung dapat dilakukan secara independen dari versi kernel yang di-deploy. Yang terpenting, pengujian mengonfirmasi bahwa data berbasis lab ini memberikan peningkatan performa yang sebanding dengan yang diperoleh dari armada dunia nyata.
- Alat & Lingkungan: Kami mem-flash perangkat pengujian dengan image kernel terbaru dan menggunakan simpleperf untuk merekam aliran eksekusi perintah. 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.
- Beban Kerja: Kami membuat beban kerja yang representatif menggunakan 100 aplikasi terpopuler dari Android App Compatibility Test Suite (C-Suite). Untuk mendapatkan data yang paling akurat, kami berfokus pada:
- Peluncuran Aplikasi: Mengoptimalkan penundaan pengguna yang paling terlihat
- Crawling Aplikasi yang Didukung AI: Mensimulasikan interaksi pengguna yang berkesinambungan dan terus berkembang
- Pemantauan di Seluruh Sistem: Mencatat tidak hanya aktivitas aplikasi latar depan, tetapi juga beban kerja latar belakang yang penting dan komunikasi antar-proses
- Validasi: Workload yang disintesis ini menunjukkan kemiripan 85% dengan pola eksekusi yang dikumpulkan dari armada internal kami.
- Data yang Ditargetkan: Dengan mengulangi pengujian ini secara memadai, kami menangkap pola eksekusi dengan tingkat keakuratan tinggi yang secara akurat merepresentasikan interaksi pengguna di dunia nyata dengan aplikasi paling populer. Selain itu, framework yang dapat di-extend ini memungkinkan kami mengintegrasikan beban kerja dan tolok ukur tambahan secara lancar untuk memperluas cakupan kami.
Langkah 2: Pemrosesan Profil
Kami memproses data rekaman aktivitas mentah setelahnya untuk memastikan data tersebut bersih, efektif, dan siap untuk compiler.
- Agregasi: Kami menggabungkan data dari beberapa perangkat dan eksekusi pengujian ke dalam satu tampilan sistem.
- Konversi: Kami mengonversi rekaman aktivitas mentah ke dalam format profil AutoFDO, memfilter simbol yang tidak diinginkan sesuai kebutuhan.
- Pemangkasan Profil: Kami memangkas profil untuk menghapus data fungsi "dingin", sehingga fungsi tersebut 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 di-deploy, profil menjalani verifikasi yang ketat untuk memastikan profil memberikan peningkatan performa yang konsisten tanpa risiko stabilitas.
- Analisis Profil & Biner: Kami membandingkan konten profil baru (termasuk fungsi aktif, 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 model mempertahankan peningkatan performa yang ditetapkan oleh dasar pengukuran sebelumnya.
Update Berkelanjutan
Kode secara alami "berubah" seiring waktu, sehingga profil statis pada akhirnya akan kehilangan efektivitasnya. Untuk mempertahankan performa puncak, kami menjalankan pipeline secara berkelanjutan untuk mendorong update rutin:
- Pembaruan Reguler: Kami memperbarui profil di cabang LTS kernel Android sebelum setiap rilis GKI, sehingga setiap build menyertakan data profil terbaru.
- Perluasan pada Masa Mendatang: Saat ini kami memberikan update ini ke cabang
android16-6.12danandroid15-6.6, serta akan memperluas dukungan ke versi GKI yang lebih baru, sepertiandroid17-6.18yang akan datang.
Memastikan Stabilitas
Pertanyaan umum terkait pengoptimalan yang dipandu profil adalah apakah pengoptimalan tersebut menimbulkan risiko stabilitas. Karena AutoFDO terutama memengaruhi heuristik compiler, seperti penyisipan fungsi dan tata letak kode, bukan mengubah logika kode sumber, AutoFDO mempertahankan integritas fungsional kernel. Teknologi ini telah terbukti efektif dalam skala besar, dan telah menjadi 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 tercatat dalam profil fidelitas tinggi kami dioptimalkan menggunakan metode compiler standar. Hal ini memastikan bahwa bagian kernel yang "dingin" atau jarang dieksekusi berperilaku persis seperti pada build standar, sehingga mencegah regresi performa atau perilaku yang tidak terduga dalam kasus ekstrem.
Rencana ke Depan
Saat ini kami men-deploy AutoFDO di cabang android16-6.12 dan android15-6.6. Selain peluncuran awal ini, kami melihat beberapa cara menjanjikan untuk lebih meningkatkan kualitas 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 sebagian besar 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 kami (Kleaf) dan alat pembuatan profil (simpleperf), vendor dapat menerapkan teknik pengoptimalan yang sama ini ke driver hardware tertentu mereka.
- Cakupan Profil yang Lebih Luas: Ada potensi untuk mengumpulkan profil dari berbagai Perjalanan Penting Pengguna (CUJ) yang lebih luas 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
Setiap developer memiliki alur kerja dan kebutuhan AI yang unik, dan penting untuk dapat memilih cara AI membantu pengembangan Anda. Pada bulan Januari, kami memperkenalkan kemampuan untuk memilih model AI lokal atau jarak jauh guna mendukung fungsi AI di Android Studio
Matthew Warner • Waktu baca: 2 menit
-
Berita Produk
Android Studio Panda 3 kini stabil dan siap digunakan dalam produksi. Rilis ini memberi Anda lebih banyak kontrol dan penyesuaian atas alur kerja yang didukung AI, sehingga mempermudah pembuatan aplikasi Android berkualitas tinggi.
Matt Dyor • Waktu baca 3 menit
-
Berita Produk
Di Google, kami berkomitmen untuk menghadirkan model AI tercanggih langsung ke perangkat Android di saku Anda. Hari ini, dengan senang hati kami mengumumkan rilis model terbuka canggih terbaru kami: Gemma 4.
Caren Chang, David Chou • Waktu baca 3 menit
Terus dapatkan informasi
Dapatkan insight pengembangan Android terbaru yang dikirim ke kotak masuk Anda setiap minggu.