Francisco Franco iz intervjua Franco Kernel, 1. dio

Prvi dio intervjua s Franciscom Francom, programerom Franco Kernela i drugih aplikacija za mnogo različitih uređaja.

Nedavno sam imao zadovoljstvo intervjuirati čovjeka koji stoji iza jednog od najpopularnijih Android kernela ikada, Franco kernela. Trenutačno je kernel dostupan na mnogo različitih uređaja, uključujući razne Nexus & OnePlus uređaje i Google Pixel / Pixel XL.

U ovom dijelu govorimo o putovanju Francisca Franca u razvoj kernela i njegovom mišljenju o promjenama kroz koje je Android prošao tijekom godina.


Ja sam Adam Conway ovdje na XDA kako bih intervjuirao Francisca Franca, programera Franco kernela! Želite li se predstaviti?

Naravno, moje ime je Francisco, kao što ste upravo rekli, i pretpostavljam da sam na XDA već milijun godina! Radio sam svakakve stvari. jezgre, aplikacije, au posljednje vrijeme malo više zabušavam na kernelima jer nakon nekog vremena postane zamorno, ali još uvijek sam pun snage na većini svojih uređaja.

U redu, pretpostavljam da bi mnogi ljudi bili upoznati s vašim radom, ali mnogi ljudi ne bi bili upoznati sa stvarnom osobom koja stoji iza tog rada. Pretpostavljam da stvarno imate ikakvog iskustva prije kernela? Kao bilo koja diploma informatike ili nešto slično prije?

Uvijek sam bio strastven prema računalima, kao i svako dijete tijekom odrastanja, pretpostavljam. Nakon što sam napunio 18 godina, odlučio sam ići na sveučilište kao i svi drugi, i mislim da sam to pohađao informatika ili tako nešto, ali nakon otprilike godinu dana, shvatio sam da to nije ono što me zapravo zanima oko. Nakon te godine moja su očekivanja počela padati jer su sve bile priče, a ništa, a ja jesam počinjem se osjećati dosadno - ne zato što sam bio bolji od bilo koga drugoga, bio sam samo prosječan - već zbog stvarnih disciplina nisu bili točno što sam htio. Pa sam razgovarao s roditeljima i oni su bili svjesni da nisam baš sretan zbog toga. Tijekom Božića 2010. dobio sam svoj prvi Android telefon. LG P500, to je jeftin telefon, vrlo jeftin, ali znao sam da radi na Linuxu, a moja omiljena disciplina na sveučilištu bila je računalna arhitektura ili tako nešto, operativni sustavi. I učili smo malo o ljusci i razgovarali malo o Linux kernelu, i što bio je dio kernela i sve veze u kernelu, i stvarni operativni sustav, i to bio je fascinantan za mene. A onda sam zajedno s prijateljem počeo obnavljati Linux kernel za svoj stari laptop. Srušili smo svoja prijenosna računala 100 puta radeći to, ali smo naučili kroz proces. A onda sam se počeo igrati sa svojim LG-em, i pretpostavljam da je prva stvar koju sam napravio bilo da sam pokušao malo više poboljšati performanse jer je taj uređaj zapravo bio prilično loš. Dakle, najbolje što sam mogao učiniti bilo je jednostavno proći kroz standardne parametre Linux kernela za stvarne upravljanje memorijom i slično, i pokušajte pronaći nešto malo bolje od onoga što je već bilo tamo. Tada sam se malo zabavio.

Mislim da to nisam prije rekao u prijašnjim intervjuima, ali tada je taj uređaj koristio stari sustav datoteka nazvan YAFFS - to znači još jedan bljesak Datotečni sustav, ali bilo je prilično sporo kada smo pokušali montirati kao swap disk s RAM-om, pa se ne sjećam pojedinosti, ali radili smo svašta drugačije eksperimentirali s tim i na kraju smo postavili Dalvik na vrh RAM-a memorije koji se morao ponovno graditi pri svakom ponovnom pokretanju jer, kao što znate, RAM nestaje svakih vrijeme da se ponovno pokrenemo. Ali učinilo je otvaranje aplikacija i pokretanje benchmarkova dosta bržim pa smo bili zadovoljni. Pa sam nakon toga počeo ići malo dublje, i pokušati kompajlirati LG-jev kernel izvore za uređaj, i napravio sam razne loše prosudbe i svakakve pogreške - Wi-Fi mreža, što god - sve što možete zamisliti od nekoga tko nema iskustvo. Ovo je bilo zabavno, naučio sam puno. Pretpostavljam da sam nakon godinu ili šest mjeseci [] toga radio bio malo više usredotočen i znao sam malo bolje što moram preuzeti. To je ono što svi želimo na kraju dana. Nakon toga uspio sam dobiti neke donacije i prijeći na druge uređaje. Pretpostavljam Nexus S, zatim Galaxy Nexus i onda sam nakon tog razdoblja uspio izbaciti svoju prvu aplikaciju. Pretpostavljam da sam imao puno sreće i mogao sam si financirati kupnju novih uređaja, a onda je sve eksplodiralo. Pa pretpostavljam da na kraju dana sve dugujem, ne bih rekao XDA, ali platforma koje nam pruža XDA.

I zajednica koja stoji iza toga i sve to.

Da da, mislim na platformu, to je zajednica i pravi forumi. Za sve koji slušaju, ovo nije plaćeni sponzor ili tako nešto, nisam plaćen da to kažem, to je samo istina!

Nema videa, ljudi ne vide da ti je pištolj uperen u glavu, u redu je.

Hahaha, da, ali netko će reći da sam plaćen da to kažem pa ću samo reći! Ali da, da, to je bila izvrsna platforma za mene da napravim super stvari, naučim puno, sve sam tamo naučio radeći uglavnom greške, au učenju još uvijek rješavam svoj dio problema. Uništio sam svoj Xiaomi Redmi Note 3, uh, bootloader je upravo uništen. Tako da ga moram ponovno spojiti sa svojim Windows računalom koje se nalazi tamo straga i moram sve ponovno flashirati, a ovdje stoji otprilike tri mjeseca. Dobivam razne vrste mržnje od svih što ne obraćam pozornost na taj uređaj, pa i dalje radim [pogreške] pretpostavljam, pa Čak i nakon svih ovih godina, još uvijek ima stvari za naučiti i bio sam vrlo sretan što sam prošao ovo putovanje i bilo je super.

Pa, pretpostavljam s obzirom da ste počeli s... LG P500 je to bio?

Da da.

Prije koliko godina je to bilo? Jer to je moralo biti oko izvornih verzija Androida, zar ne? Oko Froya ili tako nešto?

Da, to je isporučeno s Froyom i nadograđeno je na Gingerbread nekoliko mjeseci kasnije. Taj uređaj mislim da je 2010., početak 2011., vjerojatno i ranije. Znam da je moj račun na XDA kreiran u prosincu 2010., ali sam uređaj imao prije. Pa pretpostavljam da je vjerojatno u to vrijeme, da.

Kako je Android od tada evoluirao u pogledu performansi? Na primjer, kako se promijenilo vaše pisanje kernela tada i njihovo pisanje sada? I pretpostavljam kakvo je vaše mišljenje o promjenama.

Što se kernela tiče, mislim da smo evoluirali sa stvarnim Linux kernelom i svim promjenama koje je tim za Android zapravo želio implementirati za određeno izdanje Androida, tako da oni diktiraju većinu posebnih značajki koje će kernel imati, na temelju onoga što žele otpremiti. Ali pretpostavljam da stvarna izvedba, više jezgri zapravo puno pomažu jer tada niste imali pravi način za to premjestite ovu nit (sic), ili zamislite mrežne zahtjeve kroz pozadinsku nit, ili barem u stvarnom vremenu narezivanje navoja. Mislim da je to bila najveća promjena tijekom godina, imati više načina da rasporedite svoj posao, a ne da se Android samo usporava jer svi pokušavaju zgrabiti ono malo udjela CPU-a. Više od svega mislim na više jezgri i stvarnu stvarnu višenitnost podržanu Linuxom. Mislio sam da je to [bila] najveća promjena.

Ah dobro, pa kakvo je vaše mišljenje o HMP naspram EAS? Budući da je EAS očito samo nov i koristi se samo na nekoliko uređaja -- kao što koristite Google Pixel, zar ne?

Da, trenutno koristim Galaxy S8, ali imam i Pixel. Ne znam oba u toliko [puno] detalja, to su samo različite implementacije načina na koji bi uređaj s više klastera trebao djelovati na temelju onoga što se događa na uređaju u određeno vrijeme. Pokretanje dva različita klastera s dvije različite potrošnje energije, prilično je teško. Morate ispuniti očekivanja od zadataka koji se kreću gore-dolje, a tu je uključena latencija, a HMP je bila prva prava implementacija prava arhitektura s više klastera za ARM, jer ako se dobro sjećam, prije nego što je HMP bio u stvarnoj upotrebi, Samsung je imao početni implementacija u kojoj ste ili koristili prve četiri jezgre, poput jezgri male snage, ili četiri jezgre visokih performansi, ali one nikad nisu radile na isto vrijeme. Ali nakon toga s HMP-om jezgre su bile spremne za upotrebu u bilo kojem trenutku, a zadaci su se samo premještali s jednog klastera na drugi i obrnuto i to je funkcioniralo van, ali niste imali toliko informacija od planera da ovo pokažete regulatoru da zapravo odluči koja će se frekvencija koristiti u tom trenutku određeno vrijeme, pa ste se morali suočiti s, kao, pokušajem da shvatite što se događa u [otprilike] 20 sekundi, a zatim na temelju onoga što se tamo dogodilo, odlučujete što čini. EAS, radi se više [o] razumijevanju što će se dogoditi u budućnosti i odlučivanju u stvarnom vremenu na temelju izlazne snage svake jezgre, a onda je to hrpa izračuna i kompliciranih stvari u pozadina

Poput energetskih modela i tako dalje za potporu svemu.

Da, pretpostavljam da je tako, prilično je komplicirano, ne znam sve pojedinosti, pročitao sam hrpu dokumenata, ali je prilično komplicirano i nije samo uključiti prekidač i imati to spremno za korištenje. Često dobivam to pitanje možete li implementirati EAS na XYZ telefon. Moji odgovori su uvijek "To nije okretanje gumba, nije tako, bio je potreban cijeli tim Googleovih zaposlenika i momaka iz Linara da implementiraju to i morate premještati stvari, raditi stvari, testirati stvari i to je jednostavno previše posla i na neki način slijep" i… da. Teško.

Dakle, morate točno znati što radite, nije to posao za jednog čovjeka?

Da, morate znati što radite, svatko može odabrati zakrpe i spojiti ih, ali za stvarno testiranje i provjeru da radi ispravno i trebat će vam odgovarajući stroj za otkrivanje potrošnje energije svake komponente i postoji hrpa tablica na kernelu gdje možete napisati snagu svake jezgre, i na temelju toga kod će odlučiti što čini. Prilično je komplicirano. Ne mislim da je to definitivno rješenje za sve probleme, ali je definitivno najbolje što trenutno imamo.

Dakle, vi to vidite kao poboljšanje?

Da, naravno, miljama miljama daleko. To je definitivno poboljšanje u odnosu na HMP ili bilo koju drugu arhitekturu, jer ako možete razumjeti što će se dogoditi u budućnosti, možete puno brže reagirati na bilo koji zahtjev ili bilo što što se događa na uređaju, zato je Google Pixel tako brz i tako gladak, jer se sve događa gotovo u stvarno vrijeme. To je pomicanje frekvencija gore-dolje što je najlakši način da se postignu očekivanja u pogledu performansi.

Pretpostavljam da s time, ako u budućnosti bude više usvajanja EAS-a, kako vidite da će to utjecati na vaš vlastiti razvoj u pogledu kernela? Biste li se i dalje držali HMP-a ili biste išli s već objavljenim energetskim modelima? Na primjer, na OnePlus 3, [ROM programeri] ponovno koriste energetski model iz Google Pixela za EAS. Možete li vidjeti sebe kako radite nešto takvo?

Vjerojatno to neću učiniti, ako se uređaj ne isporuči s EAS-om, vjerojatno ga neću implementirati ni na koji način ili u obliku jer kao što sam rekao, to je prilično dugotrajan proces i nitko u XDA ne zna bolje od svih ovih inženjera, tako da se samo pokušavamo igrati Boga, pretpostavljam.

S tim u vezi, kada govorimo o budućnosti s Androidom i kernelima, kakvo je vaše mišljenje o nedavnom izdanju Androida Oreo? Mislite li da su promjene dobre? Jeste li pogledali bilo koji od novih obveza kernela?

Nije bilo toliko promjena na strani kernela na Nexusu 6P i Nexusu 5X, samo mali popravci tu i tamo. Na Google Pixelu ponavljali su implementaciju EAS-a i proveli su neko vrijeme poboljšavajući odjeljak povezivača, jer sada povezivač, zajedno s projektom Treble, to je kao razdvajanje različitih paketa, tako da moraju proći kroz 50 ili 100 različitih zakrpa kako bi poboljšali vezivo i razdvojili ga na različite procesima. Osim toga, to je bio samo normalan posao za veliko izdanje. Kada postoji novo izdanje platforme, obično se ne petljate toliko s kernelom, jer petljanje s kernelu zapravo trebaš mnogo QA-a, ako ponekad promijeniš jednu stvar čuješ da to utječe na nešto u drugoj podsustav. To je ono što oni obično rade, zato nemate promjene verzije kernela između nadogradnji platforme. To je samo puno posla. Obično se ne isplati, ali da, radilo se uglavnom o povezivanju, nešto o rasporedu i uobičajenim sigurnosnim popravcima. Prošla sam ih sve, ali ništa mi nije zapelo za pamet. Pažnju mi ​​je privukao samo registrator.

Ah dobro, znači samo standardne stvari.

Da, prilično su komplicirani i nemojte me pitati za detalje!

Ovo je sasvim druga tema, kakvo je vaše mišljenje o F2FS u odnosu na ext4? Budući da ćete vidjeti da će puno ljudi reći da je F2FS nestabilan i slično i uzrokuje probleme,Samo se pitam kakav je tvoj stav o tome.

Ne znam ni [o] detaljima jer su datotečni sustavi prilično teški, tu i tamo ima puno pokretnih dijelova. Samo ću citirati Googleovog inženjera koji kaže da na temelju njihovog testa F2FS ne radi ništa brže od ext4, a povrh toga kada testirali su stvari za Google Pixel, F2FS nije pružao podršku za... mislim da je to bila enkripcija blokova datoteka, dok ext4 podržava to. Dakle, to samo po sebi znači - samo ga odbacite. Morate razmisliti o dvije stvari, na ext4 se radi već 20 godina s puno vrlo pametnih inženjera iz različitih tvrtki i oni znaju što rade. F2FS je, ako se dobro sjećam, implementirao Samsung. To je sasvim nov datotečni sustav tako da je za ovako komplicirane stvari potrebno vrijeme da se poboljšaju i ponavljaju, kao što ste vi mogu vidjeti iz Appleovog datotečnog sustava koji je upravo objavljen na iOS-u, a isto će učiniti i za Mac OS. Stvari zahtijevaju vrijeme, potreban vam je veliki tim da biste te stvari napravili ispravno. Veliki sam zagovornik "ako radi, ne diraj ga" i ono što trenutno imamo -- radi, i ne mislim da vam stvara probleme s izvedbom pa ne vidim razloga da petljati se s tim.

Ah, u redu, to je pošteno! O čemu? SDCardFS se prebacuje na s FUSE? Kakvo bi bilo vaše mišljenje o tome?

To se dogodilo jer je stariji datotečni sustav FUSE bio jedna od najgorih stvari koje su se dogodile na Androidu. Performanse su bile užasne, bilo je mnogo sistemskih poziva između kernela i korisničkog prostora, a sada sa SDCardFS-om sve je urađeno kako treba. To je normalan datotečni sustav za rješavanje ovoga, opet ne znam pojedinosti jer je to vrlo komplicirana stvar, ali ono što sam pročitao, vidio i čuo iz različitih podcastova od Android tima je, u osnovi je riješio sve probleme sa starim sustav. To je bilo prilično užasno, izvedba je bila užasna.


Provjerite 2. dio klikom na ovaj gumb!