- Google menghadirkan optimasi berbasis profil AutoFDO langsung ke dalam kernel Android untuk mengurangi beban CPU dan penggunaan energi.
- Pola eksekusi dunia nyata dari 100 aplikasi yang paling banyak digunakan memandu kompiler untuk memprioritaskan jalur kode yang sering dieksekusi dan mengurangi prioritas jalur kode yang jarang dieksekusi.
- Pengujian awal menunjukkan waktu booting sekitar 2.1% lebih cepat dan peluncuran aplikasi baru sekitar 4.3% lebih cepat, dengan peningkatan tambahan dalam efisiensi latar belakang.
- AutoFDO sedang diluncurkan di cabang kernel Android LTS android16-6.12 dan android15-6.6 dan direncanakan akan diperluas ke Android 17 dan seterusnya.
Android menerima serangkaian perubahan kecil dan diam-diam yang bertujuan untuk membuat ponsel terasa lebih responsif. lebih responsif sekaligus memperpanjang masa pakai baterai sedikit lebih lama.Alih-alih fitur-fitur baru yang mencolok, Google berfokus pada bagaimana inti sistem operasi membuat keputusan setiap milidetik di balik layar.
Inti dari upaya ini adalah teknik yang disebut AutoFDO, singkatan dari Optimasi Otomatis Berbasis Umpan Balik diterapkan pada kernel Android.Dengan mengubah cara kernel dikompilasi berdasarkan data penggunaan nyata, Google berupaya mengurangi pemborosan kerja CPU, memangkas beban kerja latar belakang, dan memberikan peningkatan responsivitas yang sederhana namun terasa pada perangkat yang sudah ada.
Apa yang sebenarnya dilakukan AutoFDO di kernel Android?
Selama proses kompilasi normal, kompiler harus melakukan ribuan keputusan mikro tentang cara mengatur dan menyetel kodeIa menebak cabang mana yang mungkin, fungsi mana yang harus di-inline, bagaimana instruksi harus disusun dalam memori, dan sebagainya, sebagian besar berdasarkan petunjuk statis dan heuristik generik.
Masalahnya adalah perkiraan ini tidak selalu sesuai dengan apa yang sebenarnya terjadi saat ponsel Anda digunakan. Kernel, yang dapat memperhitungkan sekitar 40% dari total waktu CPU di Android, dapat menghabiskan siklus pada jalur kode yang jarang digunakan sementara jalur yang sering digunakan tidak dioptimalkan seagresif yang seharusnya.
AutoFDO membalik pendekatan ini dengan memberikan input ke kompiler. profil yang dibangun dari pola eksekusi nyataAlih-alih bergantung terutama pada teori, proses pembuatan dipandu oleh bagaimana kode tersebut benar-benar berperilaku pada perangkat, sehingga memungkinkan biner kernel dibentuk sesuai dengan beban kerja sehari-hari.
Bagi pengguna, ini tidak muncul sebagai pengaturan atau menu baru. Ini muncul secara halus sebagai... reaksi yang sedikit lebih cepat saat meluncurkan aplikasi atau memulai ulang ponsel, dan dengan berkurangnya waktu CPU yang terbuang untuk keputusan latar belakang yang tidak pernah dilihat langsung oleh pengguna.

Dari tebakan statis hingga profil eksekusi dunia nyata
Secara tradisional, optimasi berbasis profil mengandalkan biner terinstrumentasi yang mengumpulkan data selama proses khusus. Cara ini berhasil, tetapi bisa mengganggu dan mungkin tidak mencerminkan kondisi sebenarnya. bagaimana orang sebenarnya menggunakan ponsel mereka sehari-hariAutoFDO mengambil jalur yang lebih ringan berdasarkan pengambilan sampel.
Google menggunakan profiler pengambilan sampel untuk menangkap Riwayat percabangan CPU dan jalur instruksi saat Android menjalankan beban kerja realistis.Sampel-sampel ini mengungkapkan bagian mana dari kernel yang "panas" (sering dieksekusi) dan bagian mana yang "dingin" (jarang diakses), tanpa harus membangun ulang semuanya dengan instrumentasi yang berat.
Khusus untuk kernel, data disintesis di lingkungan laboratorium. Para insinyur memutar ulang beban kerja representatif yang meliputi 100 aplikasi Android terpopuler dari rangkaian uji kompatibilitas. Campuran ini dirancang untuk meniru penggunaan nyata: membuka dan menutup aplikasi, beralih di antara aplikasi, sinkronisasi latar belakang, dan komunikasi antar proses.
Setelah dikumpulkan, data mentah tersebut kemudian melalui proses tertentu. proses agregasi dan pembersihanData dari berbagai proses dan perangkat digabungkan, dikonversi ke format profil LLVM AutoFDO standar, dan difilter sehingga hanya simbol dan fungsi yang relevan yang tersisa. Fungsi yang jarang digunakan sering kali dihilangkan dari profil sehingga kembali ke heuristik kompilator konvensional alih-alih mengganggu optimasi.
Profil yang telah dikurasi ini kemudian memandu proses pembuatan kernel baru. Dengan informasi akurat tentang jalur kode mana yang paling penting, kompiler dapat menyisipkan rutin-rutin penting secara lebih agresif, mengatur kode yang sering digunakan agar ramah terhadap cache, dan mengurangi penekanan pada cabang-cabang yang jarang digunakan. Hasilnya adalah kernel yang lebih sesuai dengan beban kerja yang sebenarnya dihadapi oleh ponsel Android..
Seberapa cepat dan efisienkah Android bisa menjadi?
Angka awal dari pengujian internal Google memang sederhana, tetapi nyata. Dengan AutoFDO yang diterapkan pada kernel, Waktu booting perangkat meningkat sekitar 2.1%.Itu tidak akan mengubah ponsel yang lambat menjadi sangat cepat, tetapi dapat mengurangi sedikit waktu tunggu setiap kali Anda memulai ulang.
Peningkatan performa sedikit lebih terasa saat membuka aplikasi dari kondisi "dingin" — yaitu, saat aplikasi belum berada di memori. Di sini, AutoFDO memberikan peningkatan sekitar... Pengurangan waktu peluncuran dingin sebesar 4.3%., sangat membantu khususnya untuk aplikasi yang lebih berat yang bergantung pada komponen asli dan layanan kernel.
Di balik metrik yang jelas tersebut, Google juga mencatat peningkatan di area-area yang kurang terlihat tetapi tetap penting: penjadwalan latar belakang yang lebih lancar, lebih sedikit lonjakan CPU untuk tugas kernel rutin, dan penanganan operasi tingkat sistem yang umumnya lebih efisien. Semua ini berkontribusi pada perasaan bahwa perangkat lebih responsif, meskipun sulit untuk menunjukkan satu perubahan dramatis tertentu.
Karena kernel dapat mengonsumsi sebagian besar kapasitas CPU total, bahkan peningkatan persentase satu digit pun dapat berarti Sumber daya yang dibebaskan dapat digunakan oleh aplikasi dan antarmuka pengguna sistem.Pada saat yang sama, mengurangi beban kerja CPU yang tidak perlu pasti membantu efisiensi daya, sehingga baterai pun lebih hemat tanpa perlu perubahan perangkat keras apa pun.
Google berhati-hati untuk memposisikan manfaat ini sebagai peningkatan bertahap. Pengguna tidak perlu mengharapkan transformasi yang drastis, melainkan perubahan yang bertahap. Penyempurnaan yang berkelanjutan dalam hal bagaimana Android terasa dan berperilaku seiring waktu., terutama ketika beberapa optimasi semacam itu digabungkan di berbagai rilis.
Menjaga stabilitas sambil mengubah cara kernel dibangun.
Kekhawatiran yang sering muncul terkait optimasi berbasis profil adalah apakah hal itu berisiko. melanggar perilaku yang diharapkan atau memperkenalkan bug yang sulit dideteksiDalam kasus AutoFDO, Google menekankan bahwa teknik ini memodifikasi cara kompiler memprioritaskan dan menyusun kode, bukan logika kernel itu sendiri.
Pendekatan ini digambarkan sebagai "konservatif secara default". Artinya, fungsi-fungsi yang tidak terwakili dengan baik dalam data profil berakurasi tinggi akan diabaikan. dibiarkan pada strategi optimasi standar Alih-alih diubah secara agresif, jalur yang dingin atau jarang dieksekusi pada dasarnya berperilaku seperti pada pembangunan tradisional, yang mengurangi kemungkinan regresi dalam skenario yang tidak jelas.
Sebelum profil diterima, profil tersebut menjalani beberapa pemeriksaan. Para insinyur menganalisis konten profil — fungsi-fungsi penting, jumlah sampel, dan ukuran keseluruhan — dan membandingkannya dengan versi sebelumnya. Kemudian, citra kernel baru dibangun, dan Pengujian kinerja dilakukan untuk memastikan peningkatan performa yang konsisten. dan bahwa latensi atau throughput tidak memburuk secara tak terduga pada beban kerja utama.
Ini bukan penggunaan AutoFDO pertama oleh Google. Teknik ini telah diterapkan secara luas untuk pustaka inti Android, komponen ChromeOS, dan bahkan infrastruktur server internal.Pengalaman sebelumnya tersebut bertindak sebagai jaring pengaman, menunjukkan bahwa gaya optimasi itu sendiri sudah matang, meskipun penerapannya pada kernel Android relatif baru.
Intinya adalah integrasi kernel AutoFDO dirancang untuk Mempertahankan stabilitas fungsional sambil tetap memaksimalkan efisiensi.Bagi pengguna akhir, perubahan ini dimaksudkan agar tidak terlihat dalam hal keandalan, tetapi memberikan manfaat secara diam-diam dalam hal kinerja.
Bagaimana profil diperbarui dan diluncurkan dari waktu ke waktu
Satu profil statis akan cepat menjadi usang karena Android, aplikasi, dan pola penggunaan terus berkembang.Agar AutoFDO tetap efektif, Google memperlakukan pembuatan profil sebagai proses berkelanjutan, bukan sebagai tugas sekali jalan.
Profil untuk Generic Kernel Image (GKI) dibuat ulang. sebelum setiap rilis kernel LTS baruBeban kerja yang diperbarui berdasarkan versi terbaru dari 100 aplikasi teratas diputar ulang, data diambil sampel ulang, dan profil direkonstruksi serta divalidasi. Pipeline bergulir ini membantu memastikan bahwa build kernel yang lebih baru melacak bagaimana orang benar-benar menggunakan Android pada saat itu.
Menariknya, Google mencatat bahwa Beban kerja yang dihasilkan di laboratorium menunjukkan kemiripan sekitar 85%. terhadap pola eksekusi yang diambil dari armada perangkat internal. Tingkat tumpang tindih tersebut menunjukkan bahwa pendekatan yang disintesis cukup mendekati perilaku dunia nyata sehingga berguna untuk memandu optimasi, sekaligus tetap lebih mudah dikendalikan dan diperbarui.
Karena profil-profil ini mengikuti format standar LLVM AutoFDO, maka profil-profil ini dapat langsung dipasang ke dalam sistem. alat analisis yang sudah ada seperti llvm-profdataTim teknik dapat memeriksa fungsi-fungsi yang sering digunakan, menganalisis pola panggilan, dan memverifikasi bahwa upaya optimasi dialokasikan ke tempat yang benar-benar penting.
Melalui beberapa iterasi, siklus pembuatan profil dan pembangunan ulang yang berulang ini mengubah AutoFDO menjadi sebuah mekanisme penyetelan berkelanjutan untuk kernel, bukan sekadar penyesuaian tunggal yang terbatas pada satu versi Android.
AutoFDO di seluruh tumpukan dan alat Android
Pergeseran ke AutoFDO di kernel didasarkan pada pekerjaan yang telah dilakukan di tempat lain dalam tumpukan Android selama beberapa waktu. Dukungan AutoFDO adalah terintegrasi ke dalam sistem build Android yang digunakan oleh AOSP., khususnya untuk modul native yang bergantung pada definisi build bergaya blueprint.
Untuk banyak pustaka dan biner yang sensitif terhadap performa di dalam AOSP, profil telah dikumpulkan dari ponsel dan tablet sungguhan. Profil-profil ini Profil AutoFDO siap pakai tersedia berdampingan dengan kode sumber. dan dapat diaktifkan hanya dengan mengubah flag build yang sesuai, sehingga para pembuat perangkat yang mengikuti AOSP dengan cermat mewarisi optimasi tersebut dengan sedikit usaha tambahan.
Kerangka kerja pembuatan profil Android dapat mengumpulkan data di berbagai arsitektur CPU, termasuk x86, x86_64, ARM dan ARM64Selama beban kerja representatif, profil yang dibuat pada satu arsitektur terkadang dapat diadaptasi ke arsitektur lain, yang menyederhanakan penerapan di berbagai jajaran perangkat yang heterogen.
Para pengembang yang membutuhkan optimasi yang lebih spesifik — misalnya, saat menambahkan komponen asli mereka sendiri atau memodifikasi komponen yang sudah ada — disarankan untuk mengumpulkan profil langsung dari perangkat pengembangan atau pengujianAlat-alat seperti simpleperf dan utilitas terkait membantu menangkap sampel yang diperlukan tanpa mengganggu operasi normal secara signifikan.
Singkatnya, AutoFDO bukan sekadar trik kernel. Ini merupakan bagian dari strategi yang lebih luas di mana Komponen-komponen terpenting Android terus-menerus dikompilasi ulang dengan panduan dari data penggunaan nyata., daripada hanya mengandalkan asumsi statis tentang kinerja.
Di mana dan kapan peningkatan kernel ini akan diterapkan?
Google memperkenalkan build kernel berbasis AutoFDO pertama kali di cabang dukungan jangka panjang (LTS) dari kernel AndroidSecara spesifik, android16-6.12 dan android15-6.6. Cabang-cabang ini berfungsi sebagai dasar bagi banyak produsen, yang kemudian menambahkan perubahan dan penyesuaian khusus perangkat mereka sendiri di atasnya.
Perusahaan tersebut juga telah menguraikan rencana untuk memperluas penggunaan AutoFDO ke versi GKI mendatang seperti android17-6.18Seiring dengan dirilisnya kernel-kernel ini pada perangkat baru — dan seiring dengan pembaruan yang diterima oleh ponsel yang sudah ada yang menyertakan basis LTS yang lebih baru — semakin banyak pengguna yang akan mulai merasakan manfaat dari perilaku yang lebih baik ini.
Ke depannya, Google sedang menjajaki berbagai cara untuk memperluas cakupan AutoFDO di luar biner vmlinux utamaHal itu mencakup penerapan optimasi berbasis profil pada modul GKI dan, pada akhirnya, modul vendor yang dibangun dengan Driver Development Kit. Ini akan memungkinkan mitra perangkat keras untuk menerapkan teknik pembuatan profil yang sama pada driver mereka sendiri, menyebarkan manfaatnya lebih luas ke dalam ekosistem.
Visi jangka panjangnya adalah agar build yang didukung AutoFDO menyentuh semakin banyak bagian dari kernel dan modul-modulnya, dari kode penjadwalan inti hingga komponen khusus perangkatSeiring dengan bertambahnya jejak tersebut, efek kumulatif pada daya tanggap dan efisiensi dapat menjadi lebih nyata, meskipun setiap perubahan individual bersifat halus.
Semua ini bermuara pada pergeseran yang tenang namun bermakna dalam cara Android disetel pada level terendah. Dengan membiarkan pola eksekusi dunia nyata memandu kompiler, Google bertujuan untuk menciptakan ponsel yang terasa sedikit lebih cepat, membuang lebih sedikit siklus CPU, dan menghasilkan kinerja yang lebih baik. Pemanfaatan setiap miliampere-jam baterai yang sedikit lebih baik. — semuanya tanpa pengguna harus mengganti perangkat atau mencari-cari pengaturan.