Del 1 av et intervju med Francisco Franco, utvikleren av Franco Kernel og andre applikasjoner for mange forskjellige enheter.
Jeg har nylig hatt gleden av å intervjue mannen bak en av de mest populære Android-kjernene noensinne, Franco-kjernen. For øyeblikket er kjernen tilgjengelig på mange forskjellige enheter, inkludert ulike Nexus- og OnePlus-enheter og Google Pixel / Pixel XL.
I denne delen snakker vi om Francisco Francos reise inn i kjerneutvikling og hans mening om endringene Android har gjennomgått gjennom årene.
Jeg er Adam Conway her på XDA for å intervjue Francisco Franco, utvikleren av Franco-kjernen! Vil du presentere deg selv?
Jada, jeg heter Francisco, som du nettopp sa, og jeg antar at jeg har vært på XDA i 1 million år allerede! Har gjort alle mulige ting. kjerner, apper, og i det siste har jeg sløvet litt mer på kjerner fordi det blir slitsomt etter en stund, men jeg er fortsatt full styrke på de fleste enhetene mine.
Ok, så jeg antar at mange mennesker vil være kjent med arbeidet ditt, men mange mennesker vil ikke være kjent med den faktiske personen bak arbeidet. Så jeg antar at du virkelig har noen form for tidligere erfaring før kjerner? Som en hvilken som helst informatikkgrad eller noe sånt på forhånd?
Jeg har alltid vært lidenskapelig opptatt av datamaskiner, som alle barn under oppveksten antar jeg. Etter at jeg fylte 18 og bestemte meg for å gå på universitetet som alle andre, og jeg tror jeg tok informatikk eller noe, men etter et år eller så skjønte jeg at det ikke var det jeg egentlig var lidenskapelig opptatt av Om. Etter det året begynte forventningene mine å synke fordi det var snakk og ingen handling, og det var jeg begynner å kjede meg - ikke fordi jeg var bedre enn noen andre, jeg var bare gjennomsnittlig - men de faktiske disiplinene var ikke nøyaktig hva jeg ønsket. Så jeg snakket med foreldrene mine, og de var klar over at jeg ikke var særlig fornøyd med det. I løpet av julen 2010 fikk jeg min første Android-telefon. En LG P500, det er en budsjetttelefon, veldig billig, men jeg visste at den kjørte Linux, og favorittdisiplinen min på universitetet var datamaskinarkitektur eller noe, operativsystemer. Og vi lærte litt shell og snakket litt om Linux-kjernen, og hva var en del av kjernen og all tilkoblingen i kjernen, og selve operativsystemet, og det var fascinerende for meg. Og så begynte jeg å bygge om Linux-kjernen for den gamle bærbare datamaskinen min sammen med en venn. Vi krasjet de bærbare datamaskinene våre omtrent 100 ganger ved å gjøre det, men vi lærte gjennom prosessen. Og så begynte jeg å leke med min LG, og jeg antar at det første jeg gjorde var å prøve å presse litt mer ytelse fordi den enheten faktisk var ganske dårlig. Så det beste jeg kunne gjøre var å gå gjennom standard Linux-kjerneparametere for den faktiske minnehåndtering og sånt, og bare prøv å finne noe som er litt bedre enn det som allerede var der. Da hadde jeg det litt gøy.
Jeg tror jeg ikke har fortalt dette før i tidligere intervjuer, men den gang brukte enheten et gammelt filsystem kalt YAFFS - det betyr Yet Another Flash Filsystem, men det var ganske tregt da vi prøvde å montere som en RAM-støttet swap-disk, så jeg husker ikke detaljer, men vi gjorde alle mulige forskjeller eksperimenter med det, og vi endte opp med å montere Dalvik på toppen av minne-RAM-en som måtte bygges om hver omstart fordi, som du vet, forsvinner RAM hver gang gang vi starter på nytt. Men det gjorde å åpne applikasjoner og kjøre benchmarks ganske raskere, så vi var fornøyde. Så etter det begynte jeg å gå litt dypere og prøve å kompilere LGs kjernekilder for enheten, og jeg gjorde alt mulig dårlig vurderinger og alle slags feil - Wi-Fi-nettverk, uansett - alt du kan tenke deg fra noen uten erfaring. Dette var gøy, jeg lærte mye. Jeg antar at etter et år eller seks måneder var jeg litt mer fokusert, og jeg visste litt bedre hva jeg hadde for å få nedlastingene. Det er det vi alle ønsker på slutten av dagen. Etter det klarte jeg å få noen donasjoner og flytte opp til andre enheter. Jeg antar at Nexus S, deretter Galaxy Nexus og så etter den perioden klarte jeg å få ut min første app. Jeg antar at jeg har vært veldig heldig og jeg har vært i stand til å finansiere meg med å kjøpe nye enheter, og det blåste opp derfra. Så jeg antar at jeg på slutten av dagen skylder alt, jeg vil ikke si XDA men Plattformen som XDA gir oss.
Og samfunnet på en måte bak det og alt det der.
Ja ja, jeg mener plattformen, det er fellesskapet og de faktiske foraene. For alle som lytter, dette er ikke en betalt sponsor eller noe, jeg blir ikke betalt for å si dette, det er bare sant!
Det er ingen video, folk ser ikke pistolen rettet mot hodet ditt, det er greit.
Hahaha, ja, men noen vil si at jeg får betalt for å si dette, så jeg sier det bare! Men ja, ja, det har vært en fantastisk plattform for meg å bygge kule ting, lære mye, jeg har lært alt der ved for det meste å gjøre feil, og når jeg lærer, gjør jeg fortsatt min del av problemene. Jeg ødela min Xiaomi Redmi Note 3, eh, bootloaderen er nettopp ødelagt. Så jeg må koble den til igjen med Windows-datamaskinen min som sitter der bakerst, og må oppdatere alt, og den har stått her i omtrent tre måneder. Jeg får all slags hat fra alle at jeg ikke tar hensyn til den enheten, og derfor gjør jeg fortsatt [feil] antar jeg, så selv etter alle disse årene er det fortsatt ting å lære, og jeg har vært veldig heldig som har vært gjennom denne reisen, og det har vært Rått.
Vel, jeg antar at når du begynte med... LG P500 var det?
Jaja.
Hvor mange år siden var det? For det må ha vært rundt de originale versjonene av Android ikke sant? Rundt Froyo eller noe?
Ja, den ble levert med Froyo og den ble oppgradert til Gingerbread et par måneder etterpå. Den enheten tror jeg var 2010, begynnelsen av 2011, sannsynligvis tidligere. Jeg vet at kontoen min på XDA ble opprettet i desember 2010, men jeg hadde enheten på forhånd. Så jeg antar sannsynligvis rundt den tiden, ja.
Hvordan har Android utviklet seg ytelsesmessig siden den gang? Som hvordan har det endret seg for deg å skrive kjerner den gang og skrive dem nå? Og jeg antar hva dine meninger er om endringene.
Kjernemessig tror jeg vi har utviklet oss med den faktiske Linux-kjernen og alle endringene som Android-teamet faktisk ønsket å gjøre implementere for en bestemt Android-utgivelse, så de dikterer det meste av hvilke spesialfunksjoner kjernen vil ha, basert på hva de ønsker å sende. Men jeg antar faktisk ytelse, flere kjerner hjelper faktisk mye, for den gang hadde du ikke noen reell måte å gjøre det på flytt denne tråden (sic), eller forestill deg nettverksforespørsler gjennom en bakgrunnstråd, eller i det minste faktisk sanntid tråding. Jeg tror det var den største endringen gjennom årene, å ha flere måter å spre arbeidet på, og ikke ha Android bare tregere fordi alle prøver å ta den lille biten av CPU-andelen. Mer enn noe annet tror jeg multi-core og faktisk ekte multi-threading støttet av Linux. Jeg trodde det [var] den største endringen.
Ah okei, så hva er din mening om HMP vs EAS? Fordi åpenbart er EAS bare nytt og brukes bare på noen få enheter - som om du bruker en Google Pixel ikke sant?
Ja, for øyeblikket bruker jeg en Galaxy S8, men jeg har også en Pixel. Jeg vet ikke begge i så mange detaljer, de er bare forskjellige implementeringer av hvordan en multi-clustered enhet skal fungere basert på hva som skjer på enheten til bestemte tider. Å kjøre to forskjellige klynger med to forskjellige strømforbruk, det er ganske vanskelig. Du må møte forventningene til oppgaver som beveger seg opp og ned, og det er en latens involvert der og HMP var den første virkelige implementeringen av en ekte multi-clustered-arkitektur for ARM, for hvis jeg husker riktig, før HMP var i bruk i den virkelige verden, hadde Samsung en initial implementering der du enten brukte de fire første kjernene, som laveffektkjerner, eller fire høyytelseskjerner, men de kjørte aldri på samme tid. Men så etterpå med HMP var kjernene klare til å brukes når som helst og oppgavene ble bare flyttet fra en klynge til en annen og omvendt, og det fungerte ut, men du hadde ikke så mye informasjon fra planleggeren for å vise dette til guvernøren for å faktisk bestemme hva slags frekvens som skulle brukes på det spesifikk tid, så du måtte forholde deg til, for eksempel, å prøve å forstå hva som skjer på [omtrent] 20 sekunder og deretter, basert på det som skjedde der, bestemmer du hva du skal gjøre. EAS, det handler mer [om] å forstå hva som kommer til å skje i fremtiden og å bestemme i sanntid basert på kraftutgangene til hver kjerne, og så er det en haug med beregninger og kompliserte ting i bakgrunn
Som energimodeller og så videre for å sikkerhetskopiere det hele.
Ja, jeg antar det, det er ganske komplisert, jeg vet ikke alle detaljene jeg har lest en haug med dokumenter, men det er ganske komplisert og det er ikke bare å slå på en bryter og ha den klar til bruk. Jeg får det spørsmålet mye, kan du implementere EAS på XYZ-telefon. Svarene mine er alltid «Det er ikke å vri på en knott, det er ikke sånn, det tok et helt team med Googlere og gutter fra Linaro å implementere det og du må flytte rundt på ting, gjøre ting, teste ting og det er bare for mye arbeid og på en måte blind" og... ja. Det er vanskelig.
Så du må vite nøyaktig hva du gjør, det er ikke en enmannsjobb?
Ja, du må vite hva du gjør, hvem som helst kan velge oppdateringene og slå dem sammen, men faktisk testing og forsikre deg om at den fungerer riktig og at du trenger en skikkelig maskin for å oppdage strømforbruket til hver komponent, og det er en haug med tabeller på kjernen hvor du kan skrive kraften til hver kjerne, og basert på det vil koden bestemme hva som skal gjøre. Det er ganske komplisert. Jeg tror ikke det er en sikker løsning på alle problemene, men det er definitivt det beste vi har akkurat nå.
Så du ser det som en forbedring?
Ja visst, miles miles miles miles unna. Det er en klar forbedring fra HMP eller en hvilken som helst annen arkitektur, for hvis du kan forstå hva som kommer til å skje i fremtiden, kan du reagere mye raskere til enhver forespørsel eller hva som skjer på enheten, det er derfor Google Pixel er så rask og så jevn, fordi alt skjer nesten i sanntid. Det flytter frekvensene opp og ned, noe som er den enkleste måten å møte forventningene til ytelse.
Jeg antar at med det da, hvis det er mer adopsjon i fremtiden av EAS, hvordan ser du at det påvirker din egen utvikling når det gjelder kjerner? Ville du fortsatt holde deg til HMP eller ville du gått med allerede utgitte energimodeller? For eksempel på OnePlus 3 gjenbruker [ROM-utviklere] energimodellen fra Google Pixel for EAS. Kunne du sett deg selv gjøre noe sånt?
Jeg vil sannsynligvis ikke gjøre det, hvis enheten ikke leveres med EAS til å begynne med, vil jeg sannsynligvis ikke implementere den på noen måte eller form fordi som jeg sa, det er en ganske lang prosess, og ingen i XDA vet bedre enn alle disse ingeniørene, så vi prøver bare å spille Gud.
Når du snakker om fremtiden med Android og kjerner, hva er din mening om den nylige Android Oreo-utgivelsen? Synes du endringene er gode? Har du sett på noen av de nye kjernebekreftelsene?
Det var ikke så mange endringer på kjernesiden på Nexus 6P og Nexus 5X, bare små reparasjoner her og der. På Google Pixel itererte de på EAS-implementeringen, og de brukte litt tid på å forbedre permdelen, fordi nå permen, sammen med Project Diskant, det er som å dele forskjellige pakker, så de må gå gjennom 50 eller 100 forskjellige patcher for å forbedre bindemidlet og få det delt opp i forskjellige prosesser. Bortsett fra det var det bare vanlig arbeid for en stor utgivelse. Når det er en ny plattformutgivelse, roter du vanligvis ikke så mye med kjernen, fordi du roter med kjerne trenger du faktisk mye QA, hvis du noen ganger endrer en ting hører du at det påvirker noe i en annen delsystem. Det er det de vanligvis gjør, det er derfor du ikke har en kjerneversjonsbump mellom plattformoppgraderinger. Det er bare mye arbeid. Vanligvis ikke verdt det, men ja, det var for det meste perm-greier, litt av planleggeren og de vanlige sikkerhetsfiksene. Jeg gikk gjennom dem alle, men ingenting fanget meg egentlig. Min oppmerksomhet ble bare rettet mot permen.
Ah ok, så bare standard ting egentlig.
Ja, de er ganske kompliserte og ikke spør meg om detaljer!
Dette er et helt annet emne, hva er din mening om F2FS mot ext4? Fordi du vil se at mange vil si at F2FS er ustabil og sånt og forårsaker problemer,Jeg bare lurer på hva du synes om det.
Jeg vet heller ikke [om] detaljer fordi filsystemer er ganske vanskelige, det er mange bevegelige deler her og der. Jeg skal bare sitere en Google-ingeniør som sier at basert på testen deres, fungerer ikke F2FS raskere enn ext4, og på toppen av det når de testet ting for Google Pixel, F2FS ga ikke støtte for... Jeg tror det var filblokkkryptering, mens ext4 for støtte den. Så det alene betyr -- bare skrot det. Du må tenke på to ting, ext4 har blitt jobbet med i omtrent 20 år med mange veldig smarte ingeniører fra forskjellige selskaper og de vet hva de gjør. F2FS ble, hvis jeg husker feil, implementert av Samsung. Det er et ganske nytt filsystem, så ting som er så kompliserte som disse tar tid å forbedre og gjenta, som deg kan se fra Apple-filsystemet som nettopp ble utgitt på iOS, og de kommer til å gjøre det samme for Mac OS. Ting tar tid, du trenger et stort team for å gjøre disse tingene riktig. Jeg er en stor tilhenger av "hvis det fungerer, ikke rør det" og det vi har akkurat nå -- det fungerer, og jeg tror ikke det gir deg noen ytelsesproblemer, så jeg ser ingen grunn til å rote med det.
Ah ok, det er greit nok! Hva med SDCardFS blir byttet til fra FUSE? Hva vil din mening være om det?
Det skjedde fordi det eldre FUSE-filsystemet var noe av det verste som skjedde på Android. Ytelsen var forferdelig, det var mange systemanrop mellom kjernen og brukerområdet, og nå med SDCardFS er det gjort riktig. Det er et normalt filsystem å håndtere dette, igjen vet jeg ikke detaljene siden det er en veldig komplisert ting, men det jeg har lest og sett og hørt fra forskjellige podcaster fra Android-teamet er det i utgangspunktet løst alle problemene med den gamle system. Det var ganske forferdelig, prestasjonen var forferdelig.
Sjekk ut del 2 ved å klikke på denne knappen!