- Google tuo AutoFDO-profiiliohjatut optimoinnit suoraan Android-ytimeen vähentääkseen suorittimen kuormitusta ja energiankulutusta.
- Sadan eniten käytetyn sovelluksen reaalimaailman suoritusmallit ohjaavat kääntäjää suosimaan kuumia koodipolkuja ja jättämään kylmät koodipolut huomiotta.
- Alustavat testit osoittavat noin 2.1 % nopeampia käynnistysaikoja ja noin 4.3 % nopeampia sovellusten käynnistyksiä kylmänä, ja taustalla suoritettavan toiminnan tehokkuus paranee edelleen.
- AutoFDO on tulossa Android-ytimen LTS-haaroissa android16-6.12 ja android15-6.6, ja sen on tarkoitus laajentua Android 17:ään ja uudempiin.
Android saa sarjan hiljaisia, matalan tason muutoksia, joiden tarkoituksena on saada puhelimet tuntumaan... nopeampi ja pidentää akun käyttöikää hiemanUusien, näyttävien ominaisuuksien sijaan Google keskittyy siihen, miten käyttöjärjestelmän ydin tekee päätöksiä millisekunnin välein konepellin alla.
Tämän pyrkimyksen keskiössä on tekniikka nimeltä AutoFDO, lyhenne sanoista Automaattinen palautteeseen perustuva optimointi sovellettuna Android-ytimeenMuotoilemalla ytimen kääntämistä uudelleen todellisten käyttötietojen perusteella Google pyrkii vähentämään hukkaan heitettyä suorittimen työtä, karsimaan taustakuormitusta ja antamaan olemassa oleville laitteille vaatimattoman mutta huomattavan parannuksen reagointikykyyn.
Mitä AutoFDO oikeastaan tekee Android-ytimessä
Normaalin koonnin aikana kääntäjän on tehtävä tuhansia mikropäätöksiä koodin järjestämisestä ja virittämisestäSe arvaa mitkä haarat ovat todennäköisiä, mitkä funktiot tulisi sijoittaa riville, miten käskyt tulisi asettaa muistiin ja niin edelleen, pääasiassa staattisten vihjeiden ja yleisten heuristiikkojen perusteella.
Ongelmana on, että nämä arvaukset eivät aina vastaa sitä, mitä todella tapahtuu, kun puhelinta käytetään. Ydin, joka voi ottaa huomioon noin 40 % Androidin suorittimen kokonaisajasta, voi käyttää syklejä harvoin käytettyihin koodipolkuihin, kun taas usein käytettyjä ei optimoida niin aggressiivisesti kuin voitaisiin.
AutoFDO kääntää tämän lähestymistavan syöttämällä kääntäjälle todellisista suoritusmalleista rakennettuja profiilejaSen sijaan, että luotettaisiin pääasiassa teoriaan, käännösprosessia ohjaa koodin todellinen käyttäytyminen laitteilla, jolloin ytimen binääritiedostoa voidaan muokata jokapäiväisten työkuormien mukaan.
Käyttäjille tämä ei näy uutena asetuksena tai valikkona. Se näyttää hienovaraisesti hieman nopeammat reaktiot sovelluksia käynnistettäessä tai puhelinta uudelleenkäynnistettäessäja koska vähemmän prosessoriaikaa kuluu taustapäätöksiin, joita käyttäjät eivät koskaan näe suoraan.

Staattisista arvauksista tosielämän toteutusprofiileihin
Perinteisesti profiiliohjattu optimointi perustui instrumentoituihin binääritiedostoihin, jotka keräsivät dataa erikoisajojen aikana. Se toimii, mutta se voi olla tunkeilevaa eikä välttämättä heijasta miten ihmiset todellisuudessa käyttävät puhelimiaan päivittäinAutoFDO valitsee kevyemmän polun näytteenoton perusteella.
Google käyttää otantaprofilointityökalua tallentaakseen CPU:n haarautumishistoria ja käskypolut, kun Android suorittaa realistisia työkuormiaNämä esimerkit paljastavat, mitkä ytimen osat ovat "kuumia" (suoritetaan usein) ja mitkä "kylmiä" (harvoin kosketaan), ilman, että kaikkea tarvitsee rakentaa uudelleen raskaalla instrumentoinnilla.
Erityisesti ytimen osalta tiedot syntetisoidaan laboratorioympäristössä. Insinöörit toistavat edustavia työkuormia, jotka sisältävät 100 suosituinta Android-sovellusta yhteensopivuustestisarjasta. Tämä yhdistelmä on suunniteltu jäljittelemään todellista käyttöä: sovellusten avaamista ja sulkemista, niiden välillä vaihtamista, taustalla tapahtuvaa synkronointia ja prosessien välistä viestintää.
Kerättyjen raakajälkien läpi aggregointi- ja puhdistusprosessiUseiden ajojen ja laitteiden tiedot yhdistetään, muunnetaan LLVM AutoFDO -profiilin standardimuotoon ja suodatetaan siten, että vain asiaankuuluvat symbolit ja funktiot jäävät jäljelle. Kylmät funktiot karsitaan usein profiilista, jotta ne palaavat perinteisiin kääntäjän heuristiikkamenetelmiin optimoinnin vääristämisen sijaan.
Tämä kuratoitu profiili ohjaa sitten uuden ytimen rakentamista. Tarkkojen tietojen avulla siitä, mitkä koodipolut ovat tärkeimpiä, kääntäjä voi sisällyttää kriittisiä rutiineja aggressiivisemmin, järjestää kuuman koodin välimuistiystävälliseksi ja vähentää harvoin käytettyjen haarojen painotusta. Tuloksena on ydin, joka on paremmin linjassa Android-puhelimien todellisten työkuormien kanssa.
Kuinka paljon nopeammaksi ja tehokkaammaksi Android voi tulla?
Googlen sisäisten testien alustavat luvut ovat vaatimattomia, mutta konkreettisia. Kun AutoFDO on otettu käyttöön ytimessä, laitteen käynnistysaika paranee noin 2.1 %Se ei muuta hidasta puhelinta raketiksi, mutta se voi lyhentää hieman odotusaikaa joka kerta, kun käynnistät laitteen uudelleen.
Parannukset ovat hieman selvempiä avattaessa sovelluksia "kylmästä" tilasta – eli silloin, kun ne eivät ole vielä muistissa. Tässä AutoFDO tarjoaa noin 4.3 % lyhyempi kylmäkäynnistysaika, erityisen hyödyllinen raskaammille sovelluksille, jotka nojaavat natiiveihin komponentteihin ja kernel-palveluihin.
Näiden selkeiden mittareiden alla Google huomauttaa myös parannuksista osa-alueilla, jotka ovat vähemmän näkyvä, mutta silti tärkeä: sujuvampi taustaajoitukset, vähemmän suorittimen kuormituspiikkejä rutiininomaisissa ydintehtävissä ja yleisesti ottaen järjestelmätason toimintojen kevyempi käsittely. Kaikki tämä vaikuttaa siihen, että laite reagoi nopeammin, vaikka yksittäisen dramaattisen muutoksen osoittaminen olisi vaikeaa.
Koska ydin voi kuluttaa suuren osan suorittimen kokonaiskapasiteetista, jopa yhden numeron prosenttiosuuden kasvu tarkoittaa vapautettuja resursseja, joita sovellukset ja järjestelmän käyttöliittymä voivat käyttääSamaan aikaan tarpeettoman suorittimen kuormituksen vähentäminen auttaa väistämättä energiatehokkuudessa, joten akun kesto helpottuu jonkin verran ilman laitteistomuutoksia.
Google on varovainen asettaessaan nämä hyödyt vähittäisiksi. Käyttäjien ei pitäisi odottaa yön yli tapahtuvaa muutosta, vaan pikemminkin Androidin tuntuman ja käyttäytymisen tasainen hienosäätö ajan myötä, varsinkin kun useita tällaisia optimointeja pinoutuu eri julkaisuissa.
Vakauden säilyttäminen samalla, kun ytimen rakennustapaa muutetaan
Profiiliohjatun optimoinnin toistuva huolenaihe on, liittyykö siihen riskejä odotetun toiminnan rikkominen tai hienovaraisten virheiden tuominenAutoFDO:n tapauksessa Google korostaa, että tekniikka muokkaa kääntäjän koodin priorisointia ja asettelua, ei itse ytimen logiikkaa.
Lähestymistapaa kuvataan "oletusarvoisesti konservatiiviseksi". Tämä tarkoittaa, että funktiot, jotka eivät ole hyvin edustettuina korkean tarkkuuden profiilidatassa, ovat jätetty tavanomaisten optimointistrategioiden varaan sen sijaan, että sitä muokattaisiin aggressiivisesti. Kylmät tai harvoin toteutetut polut käyttäytyvät pohjimmiltaan samalla tavalla kuin perinteisessä koonnissa, mikä vähentää regressioiden mahdollisuutta epäselvissä tilanteissa.
Ennen kuin profiilit hyväksytään, ne käyvät läpi useita tarkistuksia. Insinöörit analysoivat profiilin sisällön – hot functionit, otosmäärät ja kokonaiskoon – ja vertaavat sitä aiempiin versioihin. Tämän jälkeen rakennetaan uusi ytimen kuva, ja vertailuarvoja suoritetaan sen varmistamiseksi, että suorituskyvyn parannukset ovat johdonmukaisia ja että latenssi tai läpimenoaika eivät odottamatta pahene keskeisissä työkuormissa.
Tämä ei ole Googlen ensimmäinen AutoFDO-käyttö. Tekniikkaa on jo otettu laajasti käyttöön Androidin ydinkirjastot, ChromeOS-komponentit ja jopa sisäinen palvelininfrastruktuuriTuo aiempi kokemus toimii turvaverkkona ja viittaa siihen, että optimointityyli itsessään on kypsä, vaikka sen soveltaminen Android-ytimeen on suhteellisen uutta.
Lopputuloksena on, että AutoFDO:n ytimen integrointi on suunniteltu siten, että säilyttää toiminnallisen vakauden ja samalla puristaa esiin ylimääräistä tehokkuuttaLoppukäyttäjille muutoksen on tarkoitus olla näkymätön luotettavuuden kannalta, mutta hiljaisesti hyödyllinen suorituskyvyn kannalta.
Profiilien päivittyminen ja käyttöönotto ajan myötä
Yksi staattinen profiili vanhenisi nopeasti, koska Android, sovellukset ja käyttötottumukset kehittyvätJotta AutoFDO pysyisi tehokkaana, Google käsittelee profiilin luomista jatkuvana prosessina eikä kertaluonteisena tehtävänä.
Yleisen ytimen kuvan (GKI) profiilit luodaan uudelleen ennen jokaista uutta LTS-ytimen julkaisuaPäivitetyt työkuormat, jotka perustuvat 100 suosituimman sovelluksen nykyisiin versioihin, toistetaan, dataa otetaan uudelleen näytteistä ja profiilit rekonstruoidaan ja validoidaan. Tämä jatkuva prosessi auttaa varmistamaan, että uudemmat ytimen koontiversiot seuraavat, miten ihmiset todellisuudessa käyttävät Androidia kyseisellä hetkellä.
Mielenkiintoista kyllä, Google huomauttaa, että laboratoriossa luodut työkuormat ovat noin 85 %:n samankaltaisia sisäisistä laitekannoista tallennettuihin suoritusmalleihin. Tämä päällekkäisyyden taso viittaa siihen, että syntetisoitu lähestymistapa on riittävän lähellä todellista käyttäytymistä ollakseen hyödyllinen optimoinnin ohjaamisessa, mutta silti helpompi hallita ja päivittää.
Koska nämä profiilit noudattavat LLVM AutoFDO -standardimuotoa, ne kytketään suoraan olemassa olevat analyysityökalut, kuten llvm-profdataSuunnittelutiimit voivat tarkastaa kuumia funktioita, perehtyä kutsumalleihin ja varmistaa, että optimointityötä käytetään siellä, missä sillä todella on merkitystä.
Useiden iteraatioiden aikana tämä toistuva profilointi- ja uudelleenrakennussykli muuttaa AutoFDO:n jatkuva viritysmekanismi ytimelle, yhden Android-versioon lukitun säädön sijaan.
AutoFDO Android-pinossa ja työkaluissa
Siirtyminen AutoFDO:hon ytimessä perustuu työhön, jota on tehty muualla Android-pinossa jo jonkin aikaa. AutoFDO-tuki on AOSP:n käyttämän Android-koontijärjestelmän sisäänrakennettuna, erityisesti natiivimoduuleille, jotka perustuvat suunnitelmatyyppisiin koontimääritelmiin.
Monille suorituskykyyn keskittyville AOSP:n kirjastoille ja binääreille on jo kerätty profiileja oikeilta puhelimilta ja tableteilta. Nämä Valmiit AutoFDO-profiilit ovat käytettävissä lähteen rinnalla ja se voidaan ottaa käyttöön yksinkertaisesti vaihtamalla vastaavien koontiasetusten asetuksia, joten AOSP:tä tarkasti seuraavat laitevalmistajat perivät optimoinnit minimaalisella lisätyöllä.
Androidin profilointikehys voi kerätä tietoja useilta suoritinarkkitehtuureilta, mukaan lukien x86, x86_64, ARM ja ARM64Niin kauan kuin työmäärä on edustava, yhdelle arkkitehtuurille luotua profiilia voidaan joskus mukauttaa toiseen, mikä yksinkertaistaa käyttöönottoa heterogeenisissä laitekokoonpanoissa.
Kehittäjiä, jotka tarvitsevat räätälöidympiä optimointeja – esimerkiksi omien natiivien komponenttien lisäämistä tai olemassa olevien muokkaamista – kannustetaan kerätä profiileja suoraan kehitys- tai testilaitteistaTyökalut, kuten simpleperf ja siihen liittyvät apuohjelmat, auttavat keräämään tarvittavat näytteet häiritsemättä merkittävästi normaalia toimintaa.
Lyhyesti sanottuna AutoFDO ei ole vain ytimen temppu. Se sopii laajempaan strategiaan, jossa Androidin tärkeimmät osat käännetään jatkuvasti uudelleen todellisen käyttödatan ohjeiden avulla.sen sijaan, että luotettaisiin pelkästään staattisiin oletuksiin suorituskyvystä.
Missä ja milloin nämä ytimen parannukset tulevat voimaan
Google esittelee ensimmäisenä AutoFDO-pohjaisia ytimen koontiversioita Android-ytimen pitkäaikaisen tuen (LTS) haarat, erityisesti android16-6.12 ja android15-6.6. Nämä haarat toimivat perustana monille valmistajille, jotka sitten lisäävät omat muutoksensa ja laitekohtaiset säädöt päälle.
Yhtiö on myös esittänyt suunnitelmia laajentaa AutoFDO:n käyttöä tulevat GKI-versiot, kuten android17-6.18Kun uudet laitteet toimitetaan näiden ytimien kanssa – ja kun olemassa olevat puhelimet saavat päivityksiä, jotka ottavat käyttöön uudemmat LTS-pohjat – useammat käyttäjät alkavat hyötyä parannetusta toiminnasta.
Tulevaisuutta ajatellen Google tutkii tapoja Laajenna AutoFDO-kattavuutta vmlinux-pääbinäärin ulkopuolelleTämä sisältää profiiliohjattujen optimointien tuomisen GKI-moduuleihin ja lopulta Driver Development Kitin avulla rakennettuihin valmistajien moduuleihin. Tämä antaisi laitteistokumppaneille mahdollisuuden soveltaa samoja profilointitekniikoita omiin ajureihinsa, levittäen hyötyjä syvemmälle ekosysteemiin.
Pitkän aikavälin visiona on, että AutoFDO-pohjaiset käännökset koskettavat yhä suurempaa osaa ytimestä ja sen moduuleista, ydinaikataulutuskoodista laitekohtaisiin komponentteihinJalanjäljen kasvaessa kumulatiivinen vaikutus reagointikykyyn ja tehokkuuteen voi tulla selvemmäksi, vaikka jokainen yksittäinen muutos olisi hienovarainen.
Kaikki tämä johtaa hiljaiseen mutta merkittävään muutokseen Androidin virityksessä alhaisimmilla tasoilla. Antamalla reaalimaailman suoritusmallien ohjata kääntäjää, Google pyrkii puhelimiin, jotka tuntuvat hieman nopeammilta, kuluttavat vähemmän prosessorisyklejä ja tekevät... hieman parempi hyötykäyttö jokaisesta akun milliampeeritunnista — kaikki tämä ilman, että käyttäjien tarvitsee vaihtaa laitetta tai kaivaa asetuksia läpi.