Ako imate Android telefon koji počinje imati problema s otvaranjem zahtjevnih aplikacija, možda razmišljate o kupovini novog telefona. Međutim, Google radi na velikom poboljšanju sistema kako bi mnogi trenutni uređaji radili glatko, a da pritom ne morate potrošiti ni peni. Ovo poboljšanje se zove AutoFDO i radi direktno na jezgru operativnog sistema.
Ova nova funkcija nije samo jednostavno ažuriranje interfejsa ili neka blještava nova funkcija. To je napredna optimizacija primijenjena na Android kernel , srce koje koordinira sve između hardvera i aplikacija. Zahvaljujući AutoFDO-u, sistem inteligentnije donosi interne odluke. To se prevodi u nešto brži, responzivniji telefon sa boljom potrošnjom baterije.
Šta je AutoFDO i zašto je toliko važan za Android?
AutoFDO je skraćenica za "Automatic Feedback-Driven Optimization " (Automatska optimizacija vođena povratnim informacijama), tehniku koju Google integriše u Android kako bi bolje iskoristio performanse CPU-a. Umjesto da se oslanja isključivo na pretpostavke ili generička pravila prilikom kompajliranja koda, sistem koristi podatke o korištenju iz stvarnog svijeta kako bi reorganizovao način izvršavanja zadataka.
Jednostavno rečeno, AutoFDO je sistem optimizacije zasnovan na uzorcima ponašanja iz stvarnog svijeta . Kompajler prikuplja informacije o tome kako telefon radi tokom pokretanja uobičajenih aplikacija. Odatle, preuređuje kod kako bi procesor radio efikasnije. Na ovaj način, kernel favorizuje putanje izvršavanja koje se najčešće koriste u svakodnevnim zadacima.
Do sada je Android već koristio tehnike optimizacije poput PGO (Profile Guided Optimization) zasnovane na instrumentaciji. AutoFDO je njegova prirodna i sofisticiranija evolucija jer izbjegava potrebu za modifikacijom koda samo radi njegovog mjerenja i, prije svega, mnogo bolje odražava kako stvarni korisnici koriste telefon, a ne samo ono što je testirano u laboratoriji s umjetnim opterećenjima.
Prema riječima LLVM Android tima, cilj ovog ažuriranja je smanjenje opterećenja CPU-a na kernelu, koji može potrošiti i do 40% procesorske snage tokom određenih zadataka. Olakšanjem ovog dijela sistema, resursi se oslobađaju za sve ostalo.
Kako je tradicionalno kompiliranje funkcioniralo na Androidu
U klasičnom sistemu kompajliranja, kompajleri se oslanjaju na heuristike i statičke znakove kako bi donosili odluke: koje funkcije ugraditi, koje grane uslovnog izraza su vjerovatnije, kako poredati određene instrukcije itd. To su pravila koja obično funkcionišu "dobro generalno", ali se ne poklapaju uvijek sa onim što se dešava na stvarnom uređaju.
Svaki put kada koristite telefon, procesor se suočava s hiljadama sitnih internih odluka u sekundi . Mora odabrati kojim dijelovima koda dati prioritet, kojim putem krenuti kada postoji nekoliko alternativa, kako upravljati prijelazom između funkcija i koje podatke držati lako dostupnima u keš memoriji. Sva ova nevidljiva obrada troši vrijeme procesora. I, naravno, i energiju.
Problem je u tome što kada se ove odluke zasnivaju isključivo na teorijama ili sintetičkim dokazima, kompajler može dati pogrešna predviđanja. To znači da kernel može biti loše optimizovan za upotrebu u stvarnom svijetu , trošeći dio procesorske snage čipa na rijetko korištene putanje izvršavanja, dok zanemaruje one koje se koriste svakodnevno.
U svijetu sve moćnijih mobilnih telefona, ovi problemi mogu izgledati mali, ali se akumuliraju. U konačnici, zbir ovih neefikasnih odluka postaje prilično primjetan. Posljedice: nešto sporije vrijeme pokretanja, aplikacije kojima je potrebno malo više vremena za otvaranje i baterija koja se prazni brže nego što je poželjno, posebno na starijim uređajima.
Google već neko vrijeme implementira ovakva poboljšanja u izvršne datoteke i biblioteke sistema . Sada, prelazak na kernel predstavlja značajnu promjenu. To je kao prelazak sa sređivanja ladice na reorganizaciju cijele kuće. Utjecaj na ukupne performanse je veći jer utiče na sve što prolazi kroz operativni sistem.
Kako AutoFDO optimizuje kernel sa podacima o upotrebi u stvarnom svijetu
Ključna razlika između AutoFDO-a i prethodnih pristupa je u tome što se oslanja na obrasce izvršavanja prikupljene od samog procesora dok sistem radi. Umjesto "zamišljanja" kako će se kod koristiti, direktno posmatra šta se dešava na mobilnom uređaju.
Da bi to uradio, Google prati historiju grananja CPU-a . Drugim riječima, prati koje je odluke o grananju i putanje izvršavanja procesor zapravo slijedio tokom rada sistema i aplikacija. Ovo praćenje se vrši korištenjem standardnih LLVM profila uzorkovanja, koji omogućavaju snimanje i vrućih dijelova (onih koji se izvršavaju vrlo često) i hladnih dijelova (onih koji se rijetko koriste).
Koristeći ove podatke, inženjeri kreiraju laboratorijsko okruženje u kojem repliciraju reprezentativna radna opterećenja na osnovu 100 najpopularnijih aplikacija . Tamo simuliraju svakodnevnu upotrebu: otvaranje, zatvaranje i prebacivanje između aplikacija za društvene mreže, razmjenu poruka, pregledavanje, video, lagane igre itd., baš kao što bi to učinio svaki prosječni korisnik.
Nakon što se profili generiraju, Android kernel se rekompajlira uključujući ove informacije. Kompajler tada može donositi mnogo preciznije odluke o optimizaciji , dajući prioritet kodu koji se zapravo koristi i preuređujući ili sažimajući manje kritične dijelove. Rezultat je sistem koji je preciznije podešen za ponašanje uređaja u stvarnom svijetu.
Nadalje, AutoFDO-ov sistem profiliranja ima jasne prednosti u odnosu na tradicionalnu instrumentaciju. Prikupljanje podataka je mnogo diskretnije i fleksibilnije . Profili se mogu prikupljati s razvojnih uređaja ili čak korisničkih terminala bez mijenjanja pravila kompajliranja, a ovi profili odražavaju autentične obrasce korištenja, a ne ad hoc, sintetičke scenarije.

Direktne koristi: brže vrijeme pokretanja i aplikacije koje se otvaraju ranije
U početnim internim testovima, Google je primijetio da implementacija AutoFDO-a u kernel omogućava telefonu da se pokrene otprilike 2,1% brže . To nije dramatičan skok koji će vam dati osjećaj kao da imate potpuno novi telefon, ali rezultira malim smanjenjem vremena pokretanja svaki put kada uključite ili ponovo pokrenete uređaj.
Poboljšanja su još primjetnija kod takozvanog "hladnog pokretanja" aplikacija. To jest, kada prvi put otvorite aplikaciju nakon uključivanja telefona ili nakon što ga potpuno zatvorite. U ovom scenariju, vrijeme pokretanja aplikacije se smanjuje za oko 4,3% . Ovo je posebno primjetno kod aplikacija koje zahtijevaju mnogo resursa ili onih s mnogo izvornih komponenti.
Iako se ove brojke mogu činiti skromnima, važno je zapamtiti da je kernel odgovoran za značajan dio opterećenja CPU-a. Ako ova komponenta koristi do 40% procesorskog kapaciteta , svaka dobro ciljana optimizacija oslobađa resurse koji se mogu koristiti za poboljšanje ukupnih performansi, multitaskinga ili odziva na dodir.
Još jedan pozitivan efekat je smanjenje potrošnje energije povezane s internim procesima . Izbjegavanjem nepotrebnih kodnih putanja i minimiziranjem opterećenja uzrokovanog lošim donošenjem odluka, procesor manje radi na istoj stvari. To se prevodi u blago poboljšanje vijeka trajanja baterije, omogućavajući joj da traje malo duže u svakodnevnoj upotrebi.
Google je također otkrio dodatna poboljšanja u drugim metrikama performansi koje nisu toliko očigledne krajnjem korisniku, ali koje doprinose robusnijem iskustvu: manje skokova opterećenja, niža latencija u određenim sistemskim operacijama i donekle urednije upravljanje resursima "unutar haube".
Utjecaj na svakodnevno iskustvo: veća fluidnost bez promjene mobilnih uređaja
Iz perspektive korisnika, sav ovaj posao niskog nivoa prevodi se u veći osjećaj responzivnosti pri korištenju Androida . Interfejs je responzivniji, prelazi između ekrana i menija su glatkiji, a prebacivanje između aplikacija je neposrednije, posebno na modelima srednje klase i starijim uređajima.
Fokusiranjem optimizacije na najkritičnija područja koda, sistem prestaje da se zaglavljuje u određenim internim zadacima i oslobađa procesorsku snagu za ono što je zaista važno : otvaranje aplikacija, pregledavanje weba, korištenje kamere ili glatko prebacivanje između više aplikacija. Korisnik neće vidjeti radikalnu promjenu, ali će vidjeti kontinuirano poboljšanje koje čini da sve teče glatko.
Ova agilnost također koristi vijeku trajanja baterije. Procesor koji prestaje trošiti cikluse na beskorisne odluke smanjuje ukupno opterećenje i troši manje energije . Ovo je u skladu s drugim nedavnim Googleovim inicijativama, kao što su upozorenja na Google Playu o aplikacijama koje troše previše baterije ili resursa.
U praksi, krajnji cilj je da korisnici budu u mogućnosti da iskoriste punu snagu trenutnih čipova bez potrebe da mijenjaju svoje telefone jednostavno zbog stagnacije sistema. Tihe zakrpe koje integrišu AutoFDO u kernel su precizno dizajnirane da produže vijek trajanja modernih uređaja i daju drugi život onima koji su još uvijek savršeno upotrebljivi.
Srednjoročno, Google također namjerava proširiti ovaj isti pristup učenju u stvarnom svijetu na druge kritične komponente, poput kamera i mrežnih modema . Ako mogu optimizirati komunikaciju s ovim ključnim elementima, prednosti performansi i efikasnosti mogle bi se proširiti daleko izvan jezgra operativnog sistema.
AutoFDO unutar Android sistema za izgradnju
AutoFDO nije samo teorijska ideja. Integrisan je u sam Android sistem za izgradnju , uveden sa Androidom 12. Ovaj sistem podržava optimizaciju izvornih modula koji koriste "blueprint" pravila za izgradnju, omogućavajući da se AutoFDO omogući direktno u dijeljenim bibliotekama ili binarnim datotekama.
Za projekte koji su dio AOSP-a (Android Open Source Project), AutoFDO profili već postoje za većinu komponenti osjetljivih na performanse . Ovi profili su sastavljeni od stvarnih telefona i tableta, s reprezentativnim obrascima korištenja, i pohranjeni su u repozitoriju na putanji određenoj za uzorkovanje profila.
AutoFDO je omogućen po zadanim postavkama u AOSP-u , što znači da mnogi proizvođači koji koriste ovu kodnu bazu automatski imaju koristi od ovih optimizacija ako ih ne onemoguće. Da biste omogućili AutoFDO u određenom pravilu izgradnje, jednostavno dodajte odgovarajuće polje (na primjer, afdo: true) u biblioteku ili definiciju izvršne datoteke.
Android je sposoban prikupljati profile na različitim CPU arhitekturama , uključujući x86, x86_64, ARM i ARM64. U stvari, čak i ako je profil generiran za određenu arhitekturu, može se ponovo koristiti na drugima sve dok je obrazac korištenja reprezentativan. Ovo olakšava implementaciju optimizacija na širokom rasponu uređaja.
Za specifičnije slučajeve, kao što su dodatni projekti, lokalno modificirani kod ili vrlo specifični obrasci korištenja, Google preporučuje prikupljanje profila direktno s razvojnih uređaja ili korisničkih timova , korištenjem alata poput Profcollect-a ili upravljanjem Androidom s računara.
Prikupljanje i analiza AutoFDO profila
Android ekosistem koristi standardne LLVM AutoFDO profile , osiguravajući kompatibilnost s uobičajenim alatima za analizu. Ove profile je moguće pregledati pomoću uslužnih programa poput llvm-profdata, što vam omogućava da detaljno razumijete koje se funkcije i putanje koda najčešće izvršavaju.
Unutar AOSP kodnog stabla, Google uključuje specifične skripte, kao što je afdo_summary.sh, koje generiraju automatske sažetke najpopularnijih funkcija na osnovu prikupljenih podataka. Ove informacije su ključne za inženjerske timove koji žele dodatno precizirati način na koji se optimizacijski napori raspoređuju.
Za programere koji integriraju AutoFDO u vlastite verzije, ovaj proces pruža prilično jasnu sliku o tome gdje su koncentrirana uska grla i koji dijelovi koda zaslužuju više pažnje. Umjesto slijepe optimizacije, mogu provjeriti da li funkcije za koje su očekivali da su kritične zaista jesu. Ili, naprotiv, postoje neočekivana područja sistema koja nose veće opterećenje.
Još jedan zanimljiv aspekt je to što AutoFDO omogućava diskretno prikupljanje podataka , bez potrebe za ponovnim kompajliranjem s teškom instrumentacijom koja bi mogla promijeniti ponašanje sistema. Ovo omogućava dobijanje autentičnijih profila i smanjuje utjecaj na performanse tokom prikupljanja podataka.
Zahvaljujući ovim alatima i integraciji sa LLVM-om, AutoFDO postaje ključni dio Androidove strategije kontinuirane optimizacije . To nije statička funkcija, već dinamički sistem koji može fino podesiti kernel i druge komponente kako se obrasci korištenja mijenjaju i objavljuju nove verzije operativnog sistema.
Implementacija u Androidu 15, 16 i 17 i uloga proizvođača
Google je počeo uvoditi AutoFDO na LTS (Long Term Support) grane Android kernela , posebno na verzije android16-6.12 i android15-6.6. Ove grane služe kao osnova za proizvođače koji grade vlastite prilagođene interfejse i prilagođavaju sistem svom hardveru.
Kompanija je također potvrdila svoju namjeru da proširi tehniku na Android 17 s kernelom zasnovanim na Androidu 17-6.18 i dodatnim modulima koji će nastaviti koristiti prednosti AutoFDO-a. Kako se ove verzije budu stabilizirale, poboljšanja će biti ugrađena u nove telefone koji će biti pušteni na tržište. U mnogim slučajevima, ona će biti uvedena i na postojeće uređaje putem ažuriranja softvera.
Prema Googleu, kada se ove promjene u potpunosti implementiraju u Androidu 15 i 16 – i budu uključene po zadanim postavkama u Androidu 17 – korisnici će primijetiti nešto responzivniji interfejs, brže prebacivanje između aplikacija i malo efikasnije upravljanje baterijom. Nećete vidjeti radikalnu promjenu preko noći, već postepeno poboljšanje ukupnih performansi telefona.
U svakom slučaju, osnovna poruka je jasna: Google je posvećen temeljitoj optimizaciji onoga što već postoji , umjesto da jednostavno dodaje blještave funkcije ili zahtijeva sve moćniji hardver. AutoFDO je još jedan dio te strategije za maksimiziranje performansi.
Imajući sve ovo u vidu, jasno je da AutoFDO nije samo tehnička kuriozitet. To je ažuriranje niskog nivoa dizajnirano da Android učini bržim, efikasnijim i izdržljivijim bez ikakve intervencije korisnika. Iako se pojedinačna poboljšanja na prvi pogled mogu činiti malim, njihov kumulativni učinak na pokretanje sistema, vrijeme pokretanja aplikacija i potrošnju baterije pruža upravo pravu količinu glatkoće za svakodnevnu upotrebu. Ovo posebno važi za telefone koji još uvijek imaju dosta života u sebi, ali su počeli da se osjećaju tromo. Odlična ideja.
