Francisco Franco dell'intervista a Franco Kernel, parte 1

Parte 1 di un'intervista con Francisco Franco, lo sviluppatore di Franco Kernel e altre applicazioni per molti dispositivi diversi.

Recentemente ho avuto il piacere di intervistare l'uomo dietro uno dei kernel Android più popolari di sempre, il Franco Kernel. Attualmente, il kernel è disponibile su molti dispositivi diversi, inclusi vari dispositivi Nexus e OnePlus e Google Pixel / Pixel XL.

In questa parte parliamo del viaggio di Francisco Franco nello sviluppo del kernel e della sua opinione sui cambiamenti che Android ha subito nel corso degli anni.


Sono Adam Conway qui su XDA per intervistare Francisco Franco, sviluppatore del Franco Kernel! Vuoi presentarti?

Certo, mi chiamo Francisco, come hai appena detto, e credo di essere su XDA già da 1 milione di anni! Ho fatto ogni genere di cose. Kernel, app, e ultimamente ho rallentato un po' di più con i kernel perché dopo un po' diventa noioso, ma sono ancora a pieno regime sulla maggior parte dei miei dispositivi.

Ok, quindi immagino che molte persone abbiano familiarità con il tuo lavoro, ma molte persone non abbiano familiarità con la persona reale dietro il tuo lavoro. Quindi immagino che tu abbia davvero qualche tipo di esperienza passata prima dei kernel? Come qualsiasi laurea in informatica o qualcosa del genere in anticipo?

Sono sempre stato appassionato di computer, come ogni bambino durante la crescita immagino. Dopo che ho compiuto 18 anni ho deciso di andare all'università come tutti gli altri, e penso che stavo prendendo informatica o qualcosa del genere ma dopo circa un anno ho capito che non era quello che mi appassionava veramente Di. Dopo quell'anno le mie aspettative cominciavano a calare perché erano tutte chiacchiere e nessuna azione, e lo ero cominciavo ad annoiarmi - non perché fossi migliore di chiunque altro, ero solo nella media - ma per le discipline vere e proprie non lo erano esattamente quello che volevo. Quindi ho parlato con i miei genitori e loro sapevano che non ero molto felice di questo. Nel Natale del 2010 ho ricevuto il mio primo telefono Android. Un LG P500, è un telefono economico, molto economico, ma sapevo che girava Linux, e la mia disciplina preferita all'università era l'architettura informatica o qualcosa del genere, i sistemi operativi. E stavamo imparando un po' di shell e parlando un po' del kernel Linux e cosa faceva parte del kernel e di tutta la connettività nel kernel, e del sistema operativo vero e proprio, e quello era affascinante per me. E poi ho iniziato a ricostruire il kernel Linux per il mio vecchio laptop insieme ad un amico. Abbiamo fatto crashare i nostri laptop circa 100 volte, ma abbiamo imparato attraverso il processo. E poi ho iniziato a giocare con il mio LG, e immagino che la prima cosa che ho fatto sia stata provare a spingere un po' di più le prestazioni perché quel dispositivo era in realtà piuttosto scadente. Quindi la cosa migliore che potevo fare era semplicemente esaminare i parametri standard del kernel Linux per quelli effettivi gestione della memoria e cose del genere, e provare a trovare qualcosa di leggermente migliore di quello che era già Là. Mi sono divertito un po' allora.

Penso di non averlo mai detto nelle interviste precedenti, ma allora quel dispositivo utilizzava un vecchio file system chiamato YAFFS - che significa Yet Another Flash File System, ma era piuttosto lento quando abbiamo provato a montarlo come un disco di swap con supporto RAM, quindi non ricordo i dettagli, ma abbiamo fatto ogni sorta di cose diverse abbiamo fatto degli esperimenti e alla fine abbiamo montato il Dalvik sopra la memoria RAM che doveva essere ricostruita ad ogni riavvio perché, come sai, la RAM va via ogni volta che riavviamo. Ma ha reso l'apertura delle applicazioni e l'esecuzione dei benchmark molto più veloci, quindi siamo rimasti soddisfatti. Quindi, dopo ciò, ho iniziato ad andare un po' più in profondità, e ho provato a compilare i sorgenti del kernel LG per il dispositivo, e ho fatto un sacco di cose cattive giudizi e tutti i tipi di errori - rete Wi-Fi, qualunque cosa - tutto ciò che puoi immaginare da qualcuno senza esperienza. È stato divertente, ho imparato molto. Immagino che dopo un anno o sei mesi [di] ciò fossi un po' più concentrato e sapevo un po' meglio cosa dovevo ottenere per i download. Questo è quello che tutti noi vogliamo alla fine della giornata. Successivamente, sono riuscito a ricevere alcune donazioni e a passare ad altri dispositivi. Immagino il Nexus S, poi il Galaxy Nexus e poi, dopo quel periodo, sono riuscito a far uscire la mia prima app. Credo di essere stato molto fortunato e di essere riuscito a finanziarmi acquistando nuovi dispositivi, e da lì è esploso. Quindi immagino che alla fine devo tutto a, non direi XDA ma la piattaforma che XDA ci fornisce.

E la comunità che c'è dietro e tutto il resto.

Sì sì, intendo la piattaforma, ovvero la comunità e i forum veri e propri. Per chiunque mi ascolti, questo non è uno sponsor pagato o qualcosa del genere, non sono stato pagato per dirlo, è semplicemente vero!

Non c'è nessun video, la gente non vede la pistola puntata alla tua testa, va tutto bene.

Hahaha, sì, ma qualcuno dirà che sono pagato per dirlo, quindi lo dirò e basta! Ma sì, sì, è stata una piattaforma meravigliosa per me per costruire cose interessanti, imparare molto, ho imparato tutto lì, per lo più facendo errori e nell'apprendimento faccio ancora la mia giusta dose di problemi. Ho distrutto il mio Xiaomi Redmi Note 3, uh, il bootloader è appena stato distrutto. Quindi devo collegarlo di nuovo al mio computer Windows che è seduto lì dietro e devo eseguire il reflash di tutto ed è rimasto qui per circa tre mesi. Sto ricevendo ogni sorta di odio da parte di tutti perché non presto attenzione a quel dispositivo, e quindi continuo a fare [errori], immagino, quindi anche dopo tutti questi anni c'è ancora qualcosa da imparare e sono stato molto fortunato ad aver intrapreso questo viaggio ed è stato Eccezionale.

Beh, immagino che visto che hai iniziato con... LG P500 era?

Yeah Yeah.

Quanti anni fa è successo? Perché deve essere successo con le versioni originali di Android, giusto? Intorno a Froyo o qualcosa del genere?

Sì, è stato fornito con Froyo ed è stato aggiornato a Gingerbread un paio di mesi dopo. Penso che quel dispositivo fosse del 2010, inizio 2011, probabilmente prima. So che il mio account su XDA è stato creato nel dicembre 2010, ma avevo già il dispositivo. Quindi immagino che probabilmente in quel periodo, sì.

Come si è evoluto Android in termini di prestazioni da allora? Ad esempio, come è cambiato per te scrivere i kernel allora e scriverli adesso? E suppongo quali siano le tue opinioni sui cambiamenti.

Per quanto riguarda il kernel, penso che ci siamo evoluti con l'attuale kernel Linux e tutti i cambiamenti che il team Android voleva effettivamente implementare per una determinata versione di Android, quindi dettano la maggior parte delle funzionalità speciali che avrà il kernel, in base a ciò che desiderano da spedire. Ma immagino che le prestazioni effettive, più core in realtà aiutino molto perché allora non avevi alcun modo reale per farlo sposta questo thread (sic) o immagina le richieste di rete attraverso un thread in background, o almeno in tempo reale filettatura. Penso che questo sia stato il cambiamento più grande nel corso degli anni, avere più modi per distribuire il proprio lavoro e non far rallentare Android perché tutti cercano di accaparrarsi quel po' di condivisione della CPU. Più di ogni altra cosa penso che il multi-core e il vero multi-threading siano supportati da Linux. Pensavo che [fosse] il cambiamento più grande.

Ah okay, allora qual è la tua opinione su HMP vs EAS? Perché ovviamente EAS è nuovo e viene utilizzato solo in pochi dispositivi, come usi Google Pixel, giusto?

Sì, attualmente sto utilizzando un Galaxy S8, ma ho anche un Pixel. Non li conosco entrambi in modo [molto] dettagliato, sono solo diverse implementazioni di come un dispositivo multi-cluster dovrebbe agire in base a ciò che accade sul dispositivo in determinati momenti. Gestire due cluster diversi con due consumi energetici diversi è piuttosto difficile. Devi soddisfare le aspettative dei compiti che si spostano su e giù, e c'è una latenza coinvolta in questo e HMP è stata la prima vera implementazione di un vera architettura multi-cluster per ARM, perché se ricordo bene, prima che HMP fosse utilizzato nel mondo reale, Samsung aveva un'architettura iniziale implementazione in cui utilizzavi i primi quattro core, come core a basso consumo, o quattro core ad alte prestazioni ma non funzionavano mai a lo stesso tempo. Ma poi con l'HMP i core erano pronti per essere utilizzati in qualsiasi momento e le attività si spostavano semplicemente da un cluster all'altro e viceversa e funzionava fuori, ma non avevi così tante informazioni dallo scheduler da mostrare al governatore per decidere effettivamente che tipo di frequenza sarebbe stata utilizzata in quel momento tempo specifico, quindi dovevi occuparti, ad esempio, di cercare di capire cosa succede in [circa] 20 secondi e poi, in base a quello che è successo lì, decidi cosa fare Fare. EAS, si tratta più di capire cosa accadrà in futuro e decidere in tempo reale in base a ciò la potenza di ciascun core, e poi ci sono un mucchio di calcoli e cose complicate nel sfondo

Come i modelli energetici e così via per sostenere il tutto.

Sì, immagino di sì, è piuttosto complicato, non conosco tutti i dettagli, ho letto un sacco di documenti, ma è piuttosto complicato e non si tratta semplicemente di accendere un interruttore e averlo pronto per l'uso. Ricevo spesso questa domanda: puoi implementare EAS sul telefono XYZ. Le mie risposte sono sempre “Non è una questione di girare una manopola, non è così, c'è voluto un intero team di Googler e ragazzi di Linaro per implementare quello e devi spostare le cose, fare cose, testare cose e questo è semplicemente troppo lavoro e in un certo senso andare avanti cieco" e... sì. È difficile.

Quindi devi sapere esattamente cosa stai facendo, non è un lavoro da un solo uomo?

Sì, devi sapere cosa stai facendo, chiunque può scegliere le patch e unirle, ma testarle effettivamente e assicurarti che funzioni correttamente e avresti bisogno di una macchina adeguata per rilevare il consumo energetico di ciascun componente e ci sono un sacco di tabelle nel kernel in cui puoi scrivere la potenza di ciascun core e in base a ciò il codice deciderà cosa Fare. È piuttosto complicato. Non penso che sia una soluzione definitiva per tutti i problemi, ma è sicuramente la migliore che abbiamo in questo momento.

Quindi lo vedi come un miglioramento?

Sì, certo, miglia miglia miglia di distanza. È un netto miglioramento rispetto a HMP o qualsiasi altra architettura, perché se riesci a capire cosa accadrà in futuro puoi reagire molto più velocemente a qualsiasi richiesta o qualunque cosa accada sul dispositivo, ecco perché Google Pixel è così veloce e fluido, perché tutto avviene quasi in tempo reale. Muovere le frequenze su e giù è il modo più semplice per soddisfare le aspettative di prestazione.

Immagino che, con questo, se in futuro ci sarà più adozione di EAS, come ritieni che ciò influenzerà il tuo sviluppo per quanto riguarda i kernel? Resteresti ancora con l’HMP o andresti con i modelli energetici già rilasciati? Ad esempio, su OnePlus 3, [gli sviluppatori ROM] stanno riutilizzando il modello energetico di Google Pixel per EAS. Potresti vederti fare qualcosa del genere?

Probabilmente non lo farò, se il dispositivo non viene fornito con EAS fin dall'inizio, probabilmente non lo implementerò in alcun modo o forma perché come ho detto è un processo piuttosto lungo e nessuno in XDA lo sa meglio di tutti questi ingegneri, quindi stiamo solo cercando di interpretare Dio, immagino.

A questo proposito, parlando del futuro di Android e dei kernel, qual è la tua opinione sul recente rilascio di Android Oreo? Pensi che i cambiamenti siano positivi? Hai dato un'occhiata a qualcuno dei nuovi commit del kernel?

Non ci sono state molte modifiche lato kernel sul Nexus 6P e sul Nexus 5X, solo piccole correzioni qua e là. Su Google Pixel stavano ripetendo l'implementazione di EAS e hanno dedicato del tempo a migliorare la sezione del raccoglitore, perché ora il raccoglitore, insieme a Project Treble, è come dividere pacchetti diversi, quindi devono passare attraverso 50 o 100 patch diverse per migliorare il raccoglitore e separarlo in diversi processi. A parte questo, era semplicemente un lavoro normale per una grande uscita. Quando c'è una nuova versione della piattaforma, di solito non si scherza molto con il kernel, perché scherzare con il file kernel in realtà hai bisogno di molto QA, se a volte cambi una cosa senti che influisce su qualcosa in un'altra sottosistema. Questo è quello che fanno di solito, ecco perché non si verifica un aumento della versione del kernel tra gli aggiornamenti della piattaforma. È solo un sacco di lavoro. Di solito non ne vale la pena, ma sì, si trattava principalmente di roba di raccoglitori, un po' di pianificazione e le solite correzioni di sicurezza. Li ho sfogliati tutti, ma niente mi ha davvero colpito. La mia attenzione è stata portata solo al raccoglitore.

Ah okay, quindi solo le cose standard in realtà.

Sì, sono piuttosto complicati e non chiedermi i dettagli!

Questo è un argomento completamente diverso, qual è la tua opinione su F2FS rispetto a ext4? Perché vedresti molte persone dire che F2FS è instabile e cose del genere e causano problemi,Mi stavo solo chiedendo quale ne pensi.

Neanche io conosco i dettagli perché i file system sono piuttosto difficili, ci sono molte parti mobili qua e là. Citerò semplicemente un ingegnere di Google che afferma che, in base al loro test, F2FS non funziona più velocemente di ext4, e per di più quando stavano testando cose per Google Pixel, F2FS non forniva supporto per... penso che fosse la crittografia del blocco dei file, mentre ext4 supporta Esso. Quindi questo da solo significa: basta buttarlo via. Devi pensare a due cose, su ext4 si sta lavorando da circa 20 anni con molti ingegneri molto intelligenti di diverse aziende e loro sanno cosa stanno facendo. F2FS è stato, se ricordo bene, implementato da Samsung. È un file system piuttosto nuovo, quindi cose complicate come queste richiedono tempo per essere migliorate e iterate, come te possono vedere dal file system Apple appena rilasciato su iOS e faranno lo stesso per Mac sistema operativo. Le cose richiedono tempo, hai bisogno di una grande squadra per fare queste cose correttamente. Sono un grande sostenitore del principio "se funziona, non toccarlo" e di ciò che abbiamo in questo momento: funziona e non penso che dia problemi di prestazioni, quindi non vedo motivo per farlo pasticciare con esso.

Ah okay, è abbastanza giusto! Che dire SDCardFS stai passando da FUSE? Quale sarebbe la tua opinione a riguardo?

Ciò è accaduto perché il vecchio file system FUSE era una delle cose peggiori accadute su Android. Le prestazioni erano orribili, c'erano molte chiamate di sistema tra il kernel e lo spazio utente e ora con SDCardFS tutto funziona correttamente. È un normale file system per gestire questo problema, ancora una volta non conosco i dettagli in quanto è una cosa molto complicata, ma quello che ho letto, visto e ascoltato da diversi podcast del team Android, sostanzialmente ha risolto tutti i problemi con il vecchio sistema. È stato davvero orribile, la performance è stata orribile.


Dai un'occhiata alla Parte 2 facendo clic su questo pulsante!