- Google membawakan pengoptimuman berpandukan profil AutoFDO terus ke dalam kernel Android untuk mengurangkan overhed CPU dan penggunaan tenaga.
- Corak pelaksanaan dunia sebenar daripada 100 aplikasi yang paling banyak digunakan membimbing pengkompil untuk mengutamakan laluan kod panas dan menyahutamakan laluan kod sejuk.
- Ujian awal menunjukkan sekitar 2.1% masa but lebih pantas dan kira-kira 4.3% pelancaran aplikasi sejuk lebih pantas, dengan peningkatan tambahan dalam kecekapan latar belakang.
- AutoFDO sedang dilancarkan dalam cabang LTS kernel Android android16-6.12 dan android15-6.6 dan dirancang untuk dikembangkan ke Android 17 dan seterusnya.

Android menerima satu siri perubahan senyap dan rendah yang bertujuan untuk membuatkan telefon terasa lebih pantas sambil memanjangkan hayat bateri sedikit lagiDaripada ciri-ciri baharu yang menarik, Google memberi tumpuan kepada bagaimana teras sistem pengendalian membuat keputusan setiap milisaat di sebalik hud.
Di tengah-tengah usaha ini terdapat teknik yang dipanggil AutoFDO, singkatan untuk Pengoptimuman Berarah Maklum Balas Automatik digunakan pada kernel AndroidDengan membentuk semula cara kernel dikompilasi berdasarkan data penggunaan sebenar, Google cuba mengurangkan kerja CPU yang terbuang, mengurangkan overhed latar belakang dan memberikan peranti sedia ada peningkatan daya tindak balas yang sederhana tetapi ketara.
Apa yang sebenarnya dilakukan oleh AutoFDO dalam kernel Android
Semasa binaan biasa, pengkompil perlu membuat beribu-ribu keputusan mikro tentang cara menyusun dan menala kodIa meneka cabang mana yang mungkin, fungsi mana yang harus digariskan, bagaimana arahan harus disusun dalam ingatan dan sebagainya, sebahagian besarnya berdasarkan petunjuk statik dan heuristik generik.
Masalahnya ialah tekaan ini tidak selalunya selari dengan apa yang sebenarnya berlaku apabila telefon anda sedang digunakan. Kernel, yang boleh menjelaskan sekitar 40% daripada jumlah masa CPU dalam Android, mungkin menghabiskan kitaran pada laluan kod yang jarang digunakan manakala laluan kod yang kerap digunakan tidak dioptimumkan seagresif yang mungkin.
AutoFDO membalikkan pendekatan ini dengan memberi makan kepada pengkompil profil yang dibina daripada corak pelaksanaan sebenarDaripada bergantung terutamanya pada teori, proses binaan dipandu oleh cara kod sebenarnya bertindak pada peranti, membolehkan binari kernel dibentuk di sekitar beban kerja harian.
Bagi pengguna, ini tidak dipaparkan sebagai tetapan atau menu baharu. Ia kelihatan secara halus sebagai reaksi yang sedikit lebih pantas semasa melancarkan aplikasi atau but semula telefon, dan mengurangkan masa CPU yang digunakan untuk keputusan latar belakang yang tidak pernah dilihat secara langsung oleh pengguna.

Daripada tekaan statik kepada profil pelaksanaan dunia sebenar
Secara tradisinya, pengoptimuman berpandukan profil bergantung pada binari berinstrumen yang mengumpul data semasa larian khas. Itu berkesan, tetapi ia boleh mengganggu dan mungkin tidak mencerminkan bagaimana orang ramai sebenarnya menggunakan telefon mereka setiap hariAutoFDO mengambil laluan yang lebih ringan berdasarkan persampelan.
Google menggunakan profil pensampelan untuk menangkap Sejarah cabang CPU dan laluan arahan semasa Android menjalankan beban kerja yang realistikSampel-sampel ini mendedahkan bahagian kernel yang "panas" (kerap dijalankan) dan yang "sejuk" (jarang disentuh), tanpa perlu membina semula semuanya dengan instrumentasi yang berat.
Khususnya untuk kernel, data disintesis dalam persekitaran makmal. Jurutera memainkan semula beban kerja perwakilan yang merangkumi 100 aplikasi Android paling popular daripada suit ujian keserasian. Campuran ini direka bentuk untuk meniru penggunaan sebenar: membuka dan menutup aplikasi, bertukar antara aplikasi, penyegerakan latar belakang dan komunikasi antara proses.
Setelah dikumpulkan, jejak mentah akan melalui proses pengumpulan dan pembersihanData daripada berbilang larian dan peranti digabungkan, ditukar kepada format profil LLVM AutoFDO standard dan ditapis supaya hanya simbol dan fungsi yang berkaitan sahaja yang kekal. Fungsi sejuk selalunya dipangkas daripada profil supaya ia kembali kepada heuristik pengkompil konvensional dan bukannya memesongkan pengoptimuman.
Profil yang dikurasi ini kemudiannya membimbing binaan kernel baharu. Dengan maklumat yang tepat tentang laluan kod yang paling penting, pengkompil boleh menyebariskan rutin kritikal dengan lebih agresif, menyusun kod panas agar mesra cache dan mengurangkan penekanan terhadap cabang yang jarang digunakan. Hasilnya ialah kernel yang lebih sejajar dengan beban kerja yang sebenarnya dilihat oleh telefon Android.
Sejauh manakah Android boleh mencapai kelajuan dan kecekapan yang lebih tinggi?
Angka awal daripada ujian dalaman Google adalah sederhana tetapi ketara. Dengan AutoFDO digunakan pada kernel, masa but peranti bertambah baik sebanyak kira-kira 2.1%Itu tidak akan menjadikan telefon yang perlahan laju, tetapi ia boleh mengurangkan sedikit masa menunggu setiap kali anda memulakan semula.
Keuntungannya sedikit lebih ketara apabila membuka aplikasi dari keadaan "sejuk" — iaitu, apabila ia belum berada dalam memori. Di sini, AutoFDO memberikan kira-kira Pengurangan 4.3% dalam masa pelancaran sejuk, amat berguna untuk aplikasi yang lebih berat yang bergantung pada komponen asli dan perkhidmatan kernel.
Di bawah metrik yang jelas tersebut, Google juga menyatakan penambahbaikan dalam bidang yang kurang ketara tetapi masih penting: penjadualan latar belakang yang lebih lancar, lonjakan CPU yang lebih sedikit untuk tugasan kernel rutin dan pengendalian operasi peringkat sistem yang lebih lancar secara amnya. Semua ini menyumbang kepada perasaan bahawa peranti lebih responsif, walaupun sukar untuk menunjukkan satu perubahan dramatik pun.
Oleh kerana kernel boleh menggunakan sebahagian besar daripada jumlah kapasiti CPU, keuntungan peratusan satu digit pun diterjemahkan kepada sumber bebas yang boleh digunakan oleh aplikasi dan UI sistemPada masa yang sama, mengurangkan kerja CPU yang tidak perlu pasti membantu kecekapan kuasa, jadi bateri mendapat sedikit kelegaan tanpa sebarang perubahan perkakasan.
Google berhati-hati untuk meletakkan faedah ini sebagai tambahan. Pengguna tidak seharusnya mengharapkan transformasi yang berlaku setiap hari, tetapi sebaliknya penambahbaikan yang berterusan dalam cara Android dirasai dan bertindak dari semasa ke semasa, terutamanya apabila berbilang pengoptimuman sedemikian digabungkan merentasi keluaran.
Mengekalkan kestabilan sambil mengubah cara kernel dibina
Kebimbangan berulang dengan sebarang pengoptimuman berpandukan profil adalah sama ada ia berisiko melanggar tingkah laku yang dijangkakan atau memperkenalkan pepijat halusDalam kes AutoFDO, Google menekankan bahawa teknik tersebut mengubah cara pengkompil mengutamakan dan menyusun atur kod, bukan logik kernel itu sendiri.
Pendekatan ini digambarkan sebagai "konservatif secara lalai". Ini bermakna fungsi yang tidak diwakili dengan baik dalam data profil kesetiaan tinggi adalah diserahkan kepada strategi pengoptimuman standard dan bukannya dibentuk semula secara agresif. Laluan yang sejuk atau jarang dilaksanakan pada dasarnya bertindak seperti dalam binaan tradisional, yang mengurangkan kemungkinan regresi dalam senario yang tidak jelas.
Sebelum profil diterima, ia menjalani beberapa pemeriksaan. Jurutera menganalisis kandungan profil — fungsi panas, kiraan sampel dan saiz keseluruhan — dan membandingkannya dengan versi sebelumnya. Imej kernel baharu kemudiannya dibina, dan penanda aras dijalankan untuk memastikan peningkatan prestasi adalah konsisten dan bahawa latensi atau daya pemprosesan tidak menjadi lebih teruk secara tidak dijangka dalam beban kerja utama.
Ini bukan penggunaan AutoFDO pertama Google. Teknik ini telah digunakan secara meluas untuk pustaka teras Android, komponen ChromeOS dan juga infrastruktur pelayan dalamanPengalaman terdahulu bertindak sebagai jaringan keselamatan, menunjukkan bahawa gaya pengoptimuman itu sendiri sudah matang, walaupun penerapannya pada kernel Android agak baharu.
Kesimpulannya ialah integrasi kernel AutoFDO direka bentuk untuk mengekalkan kestabilan fungsi sambil tetap mencapai kecekapan tambahanBagi pengguna akhir, perubahan ini bertujuan untuk tidak kelihatan dari segi kebolehpercayaan, tetapi secara senyap-senyap bermanfaat dari segi prestasi.
Cara profil disegarkan semula dan dilancarkan dari semasa ke semasa
Satu profil statik akan cepat menjadi basi Android, aplikasi dan corak penggunaan berkembangUntuk memastikan AutoFDO berkesan, Google menganggap penjanaan profil sebagai proses berterusan dan bukannya tugas sekali sahaja.
Profil untuk Imej Kernel Generik (GKI) dijana semula sebelum setiap keluaran kernel LTS baharuBeban kerja yang dikemas kini berdasarkan versi semasa 100 aplikasi teratas dimainkan semula, data disampel semula dan profil dibina semula dan disahkan. Saluran paip yang sedang berjalan ini membantu memastikan binaan kernel yang lebih baharu menjejaki cara orang ramai sebenarnya menggunakan Android pada ketika itu.
Menariknya, Google menyatakan bahawa beban kerja yang dihasilkan oleh makmal menunjukkan sekitar 85% persamaan kepada corak pelaksanaan yang ditangkap daripada armada peranti dalaman. Tahap pertindihan itu menunjukkan bahawa pendekatan yang disintesis cukup hampir dengan tingkah laku dunia sebenar untuk berguna bagi membimbing pengoptimuman, di samping lebih mudah dikawal dan dikemas kini.
Oleh kerana profil ini mengikuti format LLVM AutoFDO standard, ia dipasang terus ke dalam alat analisis sedia ada seperti llvm-profdataPasukan kejuruteraan boleh memeriksa fungsi panas, mengkaji corak panggilan dan mengesahkan bahawa usaha pengoptimuman sedang dibelanjakan di tempat yang benar-benar penting.
Melalui pelbagai lelaran, kitaran pemprofilan dan pembinaan semula yang berulang ini menjadikan AutoFDO mekanisme penalaan berterusan untuk kernel, bukannya satu tweak yang dikunci pada satu versi Android.
AutoFDO merentasi susunan dan alatan Android
Peralihan kepada AutoFDO dalam kernel dibina berdasarkan kerja yang telah berlaku di tempat lain dalam susunan Android untuk beberapa waktu. Sokongan AutoFDO adalah dimasukkan ke dalam sistem binaan Android yang digunakan oleh AOSP, terutamanya untuk modul asli yang bergantung pada definisi binaan gaya pelan tindakan.
Bagi kebanyakan pustaka dan binari yang sensitif terhadap prestasi dalam AOSP, profil telah dikumpulkan daripada telefon dan tablet sebenar. Ini Profil AutoFDO yang sedia ada dipaparkan bersebelahan dengan sumbernya dan boleh diaktifkan hanya dengan menogol bendera binaan yang sepadan, jadi pembuat peranti yang menjejaki AOSP mewarisi pengoptimuman dengan teliti dengan kerja tambahan yang minimum.
Rangka kerja pemprofilan Android boleh mengumpulkan data merentasi pelbagai seni bina CPU, termasuk x86, x86_64, ARM dan ARM64Selagi beban kerja mewakili, profil yang dicipta pada satu seni bina kadangkala boleh disesuaikan dengan seni bina yang lain, yang memudahkan penggunaan merentasi barisan peranti heterogen.
Pembangun yang memerlukan pengoptimuman yang lebih tersuai — contohnya, apabila menambah komponen asli mereka sendiri atau mengubah suai komponen sedia ada — digalakkan untuk kumpulkan profil terus daripada peranti pembangunan atau ujianAlatan seperti simpleperf dan utiliti berkaitan membantu menangkap sampel yang diperlukan tanpa mengganggu operasi biasa dengan ketara.
Pendek kata, AutoFDO bukan sekadar helah kernel. Ia sesuai dengan strategi yang lebih luas di mana Bahagian paling penting Android dikompilasi semula secara berterusan dengan panduan daripada data penggunaan sebenar, dan bukannya bergantung sepenuhnya pada andaian statik tentang prestasi.
Di mana dan bila penambahbaikan kernel ini akan berlaku
Google memperkenalkan binaan kernel berasaskan AutoFDO pertama kali dalam cabang sokongan jangka panjang (LTS) kernel Android, khususnya android16-6.12 dan android15-6.6. Cawangan-cawangan ini berfungsi sebagai garis dasar bagi banyak pengeluar, yang kemudiannya melapisi perubahan dan pelarasan khusus peranti mereka sendiri di bahagian atas.
Syarikat itu juga telah menggariskan rancangan untuk melanjutkan penggunaan AutoFDO kepada versi GKI masa hadapan seperti android17-6.18Memandangkan peranti baharu dihantar bersama kernel ini — dan apabila telefon sedia ada menerima kemas kini yang menarik pangkalan LTS yang lebih baharu — lebih ramai pengguna sepatutnya mula mendapat manfaat daripada ciri yang diperhalusi ini.
Menjelang masa hadapan, Google sedang meneroka cara untuk luaskan liputan AutoFDO melangkaui binari vmlinux utamaIni termasuk membawa pengoptimuman berpandukan profil kepada modul GKI dan, akhirnya, modul vendor yang dibina dengan Kit Pembangunan Pemacu. Ini akan membolehkan rakan kongsi perkakasan menggunakan teknik pemprofilan yang sama kepada pemacu mereka sendiri, menyebarkan manfaatnya lebih mendalam ke dalam ekosistem.
Visi jangka panjang adalah bahawa binaan berkuasa AutoFDO menyentuh bahagian kernel dan modulnya yang semakin meningkat, daripada kod penjadualan teras kepada komponen khusus perantiApabila jejak itu berkembang, kesan kumulatif terhadap daya tindak balas dan kecekapan boleh menjadi lebih ketara, walaupun setiap perubahan individu adalah halus.
Semua ini menambahkan perubahan yang senyap tetapi bermakna dalam cara Android ditala pada tahap terendah. Dengan membiarkan corak pelaksanaan dunia sebenar membimbing pengkompil, Google menyasarkan telefon yang terasa sedikit lebih pantas, membazirkan lebih sedikit kitaran CPU dan menjadikannya penggunaan setiap miliampere-jam bateri yang sedikit lebih baik — semuanya tanpa pengguna perlu menukar peranti atau menyemak tetapan.