Francisco Franco din interviul Franco Kernel partea 1

Partea 1 a unui interviu cu Francisco Franco, dezvoltatorul Franco Kernel și alte aplicații pentru multe dispozitive diferite.

Recent, am avut plăcerea de a-l intervieva pe bărbatul din spatele unuia dintre cele mai populare nuclee Android, Franco Kernel. În prezent, nucleul este disponibil pe multe dispozitive diferite, inclusiv pe diverse dispozitive Nexus și OnePlus și pe Google Pixel / Pixel XL.

În această parte, vorbim despre călătoria lui Francisco Franco în dezvoltarea kernelului și părerea sa despre schimbările pe care le-a suferit Android de-a lungul anilor.


Sunt Adam Conway aici pe XDA pentru a-l intervieva pe Francisco Franco, dezvoltatorul Franco Kernel! Vrei să te prezinți?

Sigur, numele meu este Francisco, așa cum tocmai ai spus, și cred că sunt pe XDA deja de 1 milion de ani! Am făcut tot felul de lucruri. sâmburi, aplicații, iar în ultimul timp m-am slăbit puțin mai mult pe nuclee pentru că devine obositor după un timp, dar încă sunt plin de forță pe majoritatea dispozitivelor mele.

Bine, deci cred că mulți oameni ar fi familiarizați cu munca ta, dar mulți oameni nu ar fi familiarizați cu persoana reală din spatele lucrării. Deci, cred că aveți într-adevăr vreun fel de experiență anterioară înainte de nuclee? Ca vreo diplomă de informatică sau ceva de genul ăsta înainte?

Întotdeauna am fost pasionat de computere, ca orice copil când am crescut, cred. După ce am împlinit 18 ani și am decis să merg la universitate ca toți ceilalți, și cred că am luat informatică sau așa ceva, dar după un an și ceva, mi-am dat seama că nu era ceea ce eram de fapt pasionat despre. După acel an, așteptările mele au început să scadă, pentru că era vorba doar de vorbă și nicio acțiune, și am fost am început să mă plictisesc - nu pentru că aș fi fost mai bun decât oricine altcineva, eram doar medie - ci disciplinele actuale nu au fost exact ceea ce mi-am dorit. Așa că am vorbit cu părinții mei și ei erau conștienți că nu eram foarte fericit în asta. În timpul Crăciunului anului 2010, am primit primul meu telefon Android. Un LG P500, ăsta e un telefon de buget, foarte ieftin, dar știam că rulează Linux, iar disciplina mea preferată la universitate era arhitectura computerelor sau așa ceva, sistemele de operare. Și am învățat puțin despre shell și am vorbit puțin despre nucleul Linux și ce a făcut parte din nucleu și toată conectivitatea din nucleu, și sistemul de operare real și asta a fost fascinant pentru mine. Și apoi am început să reconstruiesc nucleul Linux pentru vechiul meu laptop împreună cu un prieten. Ne-am prăbușit laptopurile de 100 de ori făcând asta, dar am învățat prin proces. Și apoi am început să mă joc cu LG-ul meu și cred că primul lucru pe care l-am făcut a fost să încerc să măresc puțin mai multă performanță, deoarece acel dispozitiv era de fapt destul de prost. Deci, cel mai bun lucru pe care l-am putut face a fost să parcurg parametrii standard de kernel Linux pentru cei actuali gestionarea memoriei și alte chestii și încercați să găsiți ceva puțin mai bun decât ceea ce era deja Acolo. M-am distrat un pic atunci.

Cred că nu am spus asta înainte în interviurile anterioare, dar pe atunci acel dispozitiv folosea un sistem de fișiere vechi numit YAFFS - asta înseamnă Yet Another Flash Sistem de fișiere, dar a fost destul de lent când am încercat să montăm ca un disc de schimb cu suport RAM, așa că nu-mi amintesc detaliile, dar am făcut tot felul de diferite experimentăm cu asta și am ajuns să instalăm Dalvik deasupra memoriei RAM care trebuia reconstruită la fiecare repornire, deoarece, după cum știți, RAM dispare la fiecare repornire. când repornim. Dar a făcut deschiderea aplicațiilor și rularea benchmark-urilor destul de rapidă, așa că am fost fericiți. Deci, după aceea, am început să merg puțin mai adânc și să încerc să compilez sursele kernel-ului LG pentru dispozitiv și am făcut tot felul de rău judecăți și tot felul de greșeli - rețea Wi-Fi, orice - tot ceea ce vă puteți imagina de la cineva fără experienţă. A fost distractiv, am învățat multe. Bănuiesc că după un an sau șase luni [de] făcând asta, eram puțin mai concentrat și știam puțin mai bine ce aveam pentru a obține descărcări. Asta ne dorim cu toții la sfârșitul zilei. După aceea, am reușit să obțin niște donații și să trec pe alte dispozitive. Bănuiesc că Nexus S, apoi Galaxy Nexus și apoi, după acea perioadă, am reușit să scot prima mea aplicație. Cred că am fost foarte norocos și am putut să mă finanțez cumpărând dispozitive noi, iar de acolo a explodat. Deci, cred că la sfârșitul zilei îi datorez totul, nu aș spune XDA, dar platforma pe care ne-o oferă XDA.

Și comunitatea din spatele ei și toate astea.

Da da, mă refer la platformă, asta e comunitatea și forumurile propriu-zise. Pentru oricine ascultă, acesta nu este un sponsor plătit sau altceva, nu sunt plătit să spun asta, este pur și simplu adevărat!

Nu există niciun videoclip, oamenii nu văd arma îndreptată spre capul tău, e în regulă.

Hahaha, da, dar cineva va spune că sunt plătit să spun asta, așa că o voi spune! Dar da, da, a fost o platformă minunată pentru mine să construiesc lucruri grozave, să învăț multe, am învățat totul acolo făcând în mare parte greșeli și învățând încă îmi fac partea echitabilă de probleme. Mi-am distrus Xiaomi Redmi Note 3, uh, bootloader-ul tocmai a fost distrus. Așa că trebuie să-l conectez din nou la computerul meu cu Windows, care stă acolo în spate și trebuie să reflashez totul și a stat aici de vreo trei luni. Primesc tot felul de ură de la toată lumea că nu sunt atent la acel dispozitiv și, deci, încă mai fac [greșeli], cred, deci chiar și după toți acești ani, mai sunt lucruri de învățat și am fost foarte norocos că am trecut prin această călătorie și a fost minunat.

Ei bine, cred că, văzând cum ai început cu... LG P500 a fost?

Da da.

Cu câți ani în urmă a fost asta? Pentru că trebuie să fi fost în jurul versiunilor originale de Android, nu? În jurul lui Froyo sau ceva?

Da, a fost livrat cu Froyo și a fost actualizat la Gingerbread câteva luni după aceea. Aparatul acela cred că a fost 2010, începutul lui 2011, probabil mai devreme. Știu că contul meu de pe XDA a fost creat în decembrie 2010, dar aveam dispozitivul în prealabil. Deci, cred că probabil în acea perioadă, da.

Cum a evoluat Android în ceea ce privește performanța de atunci? Cum sa schimbat pentru tine să scrii nuclee pe atunci și să le scrii acum? Și presupun care sunt părerile tale despre schimbări.

În ceea ce privește kernelul, cred că am evoluat cu nucleul Linux actual și cu toate schimbările pe care echipa Android și-a dorit de fapt să le facă implementează pentru o anumită versiune Android, astfel încât ei dictează majoritatea caracteristicilor speciale pe care le va avea nucleul, în funcție de ceea ce doresc a expedia. Dar cred că performanța reală, mai multe nuclee ajută foarte mult pentru că atunci nu aveai nicio modalitate reală de a mutați acest fir de execuție (sic) sau imaginați-vă cererile de rețea printr-un thread de fundal sau cel puțin în timp real filetat. Cred că aceasta a fost cea mai mare schimbare de-a lungul anilor, având mai multe modalități de a vă răspândi munca și să nu aveți Android doar să încetinească pentru că toată lumea încearcă să obțină acea mică parte din CPU. Mai mult decât orice, cred că multi-core și real multi-threading real susținut de Linux. Am crezut că aceasta [a fost] cea mai mare schimbare.

Ah, bine, atunci ce părere aveți despre HMP vs EAS? Pentru că, evident, EAS este doar nou și este folosit doar pe câteva dispozitive -- așa cum folosești un Google Pixel, nu?

Da, în prezent folosesc un Galaxy S8, dar am și un Pixel. Nu le cunosc pe ambele în [multe] detalii, sunt doar implementări diferite ale modului în care un dispozitiv multi-cluster ar trebui să acționeze pe baza a ceea ce se întâmplă pe dispozitiv în anumite momente. Rularea a două clustere diferite cu două consumuri diferite de energie, este destul de greu. Trebuie să îndepliniți așteptările legate de miscarea în sus și în jos a sarcinilor și există o latență implicată acolo, iar HMP a fost prima implementare reală a unui arhitectură reală multi-cluster pentru ARM, pentru că, dacă îmi amintesc bine, înainte ca HMP să fie utilizat în lumea reală, Samsung a avut un implementare în care fie utilizați primele patru nuclee, cum ar fi nuclee de putere redusă, fie patru nuclee de înaltă performanță, dar nu rulau niciodată la acelasi timp. Dar apoi, cu HMP, nucleele au fost gata pentru a fi utilizate în orice moment, iar sarcinile doar s-au mutat de la un cluster la altul și invers și asta a funcționat. afară, dar nu ai avut atâtea informații de la programator pentru a arăta asta guvernatorului pentru a decide efectiv ce fel de frecvență va fi folosită la acel moment timp specific, așa că a trebuit să faci față, de exemplu, să încerci să înțelegi ce se întâmplă în [aproximativ] 20 de secunde și apoi, pe baza a ceea ce s-a întâmplat acolo, tu decizi ce să faci. do. EAS, este mai mult [despre] înțelegerea a ceea ce se va întâmpla în viitor și deciderea în timp real pe baza puterea de ieșire a fiecărui nucleu, și apoi este o grămadă de calcule și lucruri complicate în fundal

Cum ar fi modelele energetice și așa mai departe pentru a susține totul.

Da, cred că da, este destul de complicat, nu știu toate detaliile. Am citit o grămadă de documente, dar este destul de complicat și nu este doar să pornesc un comutator și să îl ai gata de utilizare. Înțeleg foarte mult această întrebare, puteți implementa EAS pe telefonul XYZ. Răspunsurile mele sunt întotdeauna „Nu se rotește un buton, nu este așa, a fost nevoie de o întreagă echipă de angajați Google și băieți de la Linaro pentru a implementa asta și trebuie să mutați lucrurile, să faceți lucruri, să testați lucruri și este prea multă muncă și un fel de a merge ORB" și... da. Este greu.

Așa că trebuie să știi exact ce faci, nu este o slujbă de un bărbat?

Da, trebuie să știți ce faceți, oricine poate alege patch-urile și le poate îmbina, dar testarea reală și asigurarea faptului că funcționează corect și că veți avea nevoie de o mașină adecvată pentru a detecta consumul de energie al fiecărei componente și există o grămadă de tabele pe nucleu în care puteți scrie puterea fiecărui nucleu și, pe baza acestuia, codul va decide ce să do. Este destul de complicat. Nu cred că este o soluție certă pentru toate problemele, dar este cu siguranță cea mai bună pe care o avem acum.

Deci îl vedeți ca pe o îmbunătățire?

Da, sigur, mile mile mile distanță. Este o îmbunătățire clară față de HMP sau orice altă arhitectură, pentru că dacă poți înțelege ce se va întâmpla în viitor, poți reacționa mult mai repede la orice cerere sau orice se întâmplă pe dispozitiv, de aceea Google Pixel este atât de rapid și atât de ușor, pentru că totul se întâmplă aproape în în timp real. Mișcă frecvențele în sus și în jos, ceea ce este cel mai simplu mod de a atinge așteptările de performanță.

Bănuiesc că, atunci, dacă există mai multă adoptare în viitorul EAS, cum vedeți că vă afectează propria dezvoltare în ceea ce privește nucleele? Ați rămâne cu HMP sau ați merge cu modele energetice deja lansate? De exemplu, pe OnePlus 3, [dezvoltatorii ROM] reutiliza modelul energetic de la Google Pixel pentru EAS. Te-ai putea vedea făcând așa ceva?

Probabil că nu voi face asta, dacă dispozitivul nu este livrat cu EAS pentru început, atunci probabil că nu îl voi implementa în niciun fel sau formă, deoarece După cum am spus, este un proces destul de lung și nimeni din XDA nu știe mai bine decât toți acești ingineri, așa că încercăm doar să jucăm Dumnezeu, cred.

În această notă, vorbind despre viitorul cu Android și kernel-uri, ce părere aveți atunci despre recenta lansare Android Oreo? Crezi că schimbările sunt bune? Te-ai uitat la vreunul dintre noile comiteri ale nucleului?

Nu au fost atât de multe modificări pe partea nucleului pe Nexus 6P și Nexus 5X, doar mici remedieri ici și colo. Pe Google Pixel, ei repetau implementarea EAS și au petrecut ceva timp îmbunătățind secțiunea de liant, deoarece acum liantul, împreună cu Project Treble, este ca și cum ar împărți diferite pachete, așa că trebuie să treacă prin 50 sau 100 de patch-uri diferite pentru a îmbunătăți liantul și a-l separa în diferite. proceselor. În afară de asta, a fost doar o muncă normală pentru o lansare mare. Când există o nouă lansare a platformei, de obicei nu te încurci atât de mult cu nucleul, pentru că te joci cu kernel, de fapt, aveți nevoie de mult QA, dacă uneori schimbați un lucru, auziți că afectează ceva în altul subsistem. Asta fac ei de obicei, de aceea nu aveți o problemă de versiune a nucleului între upgrade-urile platformei. Este doar multă muncă. De obicei, nu merită, dar da, au fost în mare parte chestii de liant, puțin din planificator și remedieri de securitate obișnuite. Le-am trecut prin toate, dar nimic nu mi-a atras mintea. Atenția mi-a fost adusă doar la liant.

Ah, bine, deci doar chestiile standard.

Da, sunt destul de complicate și nu-mi cere detalii!

Acesta este un subiect complet diferit, ce părere aveți despre F2FS față de ext4? Pentru că ați vedea că mulți oameni vor spune că F2FS este instabil și provoacă probleme,Mă întreb doar ce părere ai despre asta.

Nici nu știu [despre] detalii pentru că sistemele de fișiere sunt destul de grele, există o mulțime de părți mobile ici și colo. Voi cita doar un inginer Google care spune că, pe baza testului lor, F2FS nu funcționează mai repede decât ext4 și, pe deasupra, când testau lucruri pentru Google Pixel, F2FS nu a oferit suport pentru... Cred că a fost criptare bloc de fișiere, în timp ce ext4 pentru suporturi aceasta. Așa că doar asta înseamnă -- doar aruncați-o. Trebuie să te gândești la două lucruri, la ext4 se lucrează de aproximativ 20 de ani cu o mulțime de ingineri foarte inteligenți de la diferite companii și știu ce fac. F2FS a fost, dacă îmi amintesc bine, implementat de Samsung. Este un sistem de fișiere destul de nou, așa că lucruri la fel de complicate ca acestea necesită timp pentru a se îmbunătăți și repeta, ca și tine pot vedea din sistemul de fișiere Apple care tocmai a fost lansat pe iOS și vor face același lucru pentru Mac OS. Lucrurile necesită timp, ai nevoie de o echipă imensă care să facă aceste lucruri corect. Sunt un mare susținător al „dacă funcționează, nu-l atinge” și a ceea ce avem acum -- funcționează și nu cred că îți dă probleme de performanță, așa că nu văd un motiv pune cu el.

Ah, bine, e destul de corect! Ce ziceti SDcardFS fiind trecut la de la FUSE? Ce parere ai fi despre asta?

Acest lucru s-a întâmplat deoarece sistemul de fișiere mai vechi FUSE a fost unul dintre cele mai rele lucruri care s-au întâmplat pe Android. Performanța a fost oribilă, au existat o mulțime de apeluri de sistem între nucleu și spațiul utilizatorului și acum cu SDCardFS se face corect. Este un sistem de fișiere normal pentru a se ocupa de asta, din nou, nu știu detaliile, deoarece este un lucru foarte complicat, dar ceea ce am citite și văzute și auzite de la diferite podcasturi de la echipa Android este, practic, a rezolvat toate problemele cu vechiul sistem. A fost destul de oribil, performanța a fost oribilă.


Consultați partea 2 făcând clic pe acest buton!