Première partie d'une interview avec Francisco Franco, le développeur de Franco Kernel et d'autres applications pour de nombreux appareils différents.
J'ai récemment eu le plaisir d'interviewer l'homme derrière l'un des noyaux Android les plus populaires de tous les temps, le Franco Kernel. Actuellement, le noyau est disponible sur de nombreux appareils différents, notamment divers appareils Nexus et OnePlus et Google Pixel / Pixel XL.
Dans cette partie, nous parlons du parcours de Francisco Franco dans le développement du noyau et de son opinion sur les changements qu'Android a subis au fil des années.
Je suis Adam Conway ici sur XDA pour interviewer Francisco Franco, développeur du Franco Kernel! Voulez-vous vous présenter?
Bien sûr, je m'appelle Francisco, comme vous venez de le dire, et je suppose que je suis sur XDA depuis déjà 1 million d'années! J'ai fait toutes sortes de choses. Graines, applications, et dernièrement, je me relâche un peu plus sur les noyaux parce que cela devient fastidieux au bout d'un moment, mais je suis toujours à fond sur la plupart de mes appareils.
D'accord, donc je suppose que beaucoup de gens connaissent votre travail, mais beaucoup de gens ne connaissent pas la véritable personne derrière ce travail. Donc je suppose que avez-vous vraiment une quelconque expérience antérieure aux noyaux? Comme n’importe quel diplôme en informatique ou quelque chose comme ça auparavant ?
J'ai toujours été passionné par les ordinateurs, comme n'importe quel enfant en grandissant, je suppose. Après avoir eu 18 ans, j'ai décidé d'aller à l'université comme tout le monde, et je pense que je prenais l'informatique ou quelque chose comme ça, mais après environ un an, j'ai pensé que ce n'était pas vraiment ce qui me passionnait à propos de. Après cette année, mes attentes commençaient à diminuer parce que tout n'était que paroles et aucune action, et j'étais je commençais à m'ennuyer - non pas parce que j'étais meilleur que les autres, j'étais juste moyen - mais les disciplines elles-mêmes n'étaient pas exactement ce que je voulais. Alors j'en ai parlé à mes parents, et ils savaient que je n'étais pas très content de ça. À Noël 2010, j'ai reçu mon premier téléphone Android. Un LG P500, c'est un téléphone économique, très bon marché, mais je savais qu'il fonctionnait sous Linux, et ma discipline préférée à l'université était l'architecture informatique ou quelque chose du genre, les systèmes d'exploitation. Et nous apprenions un peu le shell et parlions un peu du noyau Linux, et de quoi. faisait partie du noyau et de toute la connectivité dans le noyau et dans le système d'exploitation lui-même, et cela était fascinant pour moi. Et puis j'ai commencé à reconstruire le noyau Linux de mon ancien ordinateur portable avec un ami. Nous avons fait planter nos ordinateurs portables environ 100 fois en faisant cela, mais nous avons appris tout au long du processus. Et puis j'ai commencé à jouer avec mon LG, et je suppose que la première chose que j'ai faite a été d'essayer d'augmenter un peu les performances parce que cet appareil était en fait assez merdique. Donc la meilleure chose que je pouvais faire était simplement de passer en revue les paramètres standard du noyau Linux pour le gestion de la mémoire et tout ça, et essayez juste de trouver quelque chose d'un peu mieux que ce qui était déjà là. Je me suis un peu amusé alors.
Je pense que je ne l'ai pas dit auparavant lors d'interviews précédentes, mais à l'époque, cet appareil utilisait un ancien système de fichiers appelé YAFFS - cela signifie Yet Another Flash. Système de fichiers, mais c'était assez lent lorsque nous avons essayé de monter comme un disque d'échange sauvegardé sur RAM, donc je ne me souviens pas des détails, mais nous avons fait toutes sortes de choses différentes. Nous avons expérimenté cela et nous avons fini par monter le Dalvik au-dessus de la mémoire RAM qui devait être reconstruite à chaque redémarrage car, comme vous le savez, la RAM disparaît à chaque redémarrage. le moment où nous redémarrons. Mais cela a rendu l’ouverture des applications et l’exécution des tests beaucoup plus rapides, donc nous étions satisfaits. Après cela, j'ai commencé à aller un peu plus loin et à essayer de compiler les sources du noyau de LG pour l'appareil, et j'ai fait toutes sortes de erreurs. jugements et toutes sortes d'erreurs - réseau Wi-Fi, peu importe - tout ce que vous pouvez imaginer de la part de quelqu'un sans expérience. C'était amusant, j'ai beaucoup appris. Je suppose qu'après un an ou six mois [de] faire cela, j'étais un peu plus concentré et je savais un peu mieux ce que j'avais pour obtenir les téléchargements. C'est ce que nous voulons tous en fin de compte. Après cela, j’ai réussi à récolter quelques dons et à passer à d’autres appareils. Je suppose que le Nexus S, puis le Galaxy Nexus et après cette période, j'ai réussi à sortir ma première application. Je suppose que j'ai eu beaucoup de chance et que j'ai pu me financer en achetant de nouveaux appareils, et à partir de là, tout a explosé. Donc je suppose qu'en fin de compte, je dois tout à, je ne dirais pas XDA mais la plateforme que XDA nous fournit.
Et la communauté derrière tout ça et tout ça.
Oui oui, je veux dire la plateforme, c'est la communauté et les forums proprement dits. Pour tous ceux qui écoutent, ce n’est pas un sponsor rémunéré ou quoi que ce soit, je ne suis pas payé pour dire ça, c’est juste vrai !
Il n’y a pas de vidéo, les gens ne voient pas l’arme pointée sur votre tête, ça va.
Hahaha, ouais mais quelqu'un dira que je suis payé pour dire ça alors je vais juste le dire! Mais oui, oui, ça a été une merveilleuse plateforme pour moi de créer des trucs sympas, d'apprendre beaucoup, j'ai tout appris là-bas en faisant principalement des erreurs et en apprenant, je fais encore ma part de problèmes. J'ai détruit mon Xiaomi Redmi Note 3, euh, le bootloader vient d'être détruit. Je dois donc le reconnecter à mon ordinateur Windows qui se trouve là-bas et tout reflasher et il est là depuis environ trois mois. Je reçois toutes sortes de haine de la part de tout le monde parce que je ne fais pas attention à cet appareil, et donc je fais encore des [erreurs], je suppose, donc même après toutes ces années, il y a encore des choses à apprendre et j'ai eu beaucoup de chance d'avoir vécu ce voyage et ça a été génial.
Eh bien, je suppose que vu que vous avez commencé avec le... LG P500, c'était ça ?
Yeah Yeah.
C'était il y a combien d'années? Parce que cela devait concerner les versions originales d’Android, n’est-ce pas? Autour de Froyo ou quelque chose comme ça ?
Oui, cela a été livré avec Froyo et il a été mis à niveau vers Gingerbread quelques mois plus tard. Je pense que cet appareil date de 2010, début 2011, probablement plus tôt. Je sais que mon compte sur XDA a été créé en décembre 2010 mais j'avais l'appareil au préalable. Donc je suppose que c'est probablement à cette époque, ouais.
Comment Android a-t-il évolué en termes de performances depuis lors? Par exemple, comment cela a-t-il changé pour vous en écrivant des noyaux à l'époque et en les écrivant maintenant? Et je suppose quelles sont vos opinions sur les changements.
En ce qui concerne le noyau, je pense que nous avons évolué avec le noyau Linux actuel et tous les changements que l'équipe Android souhaitait réellement apporter. implémenter pour une certaine version d'Android, ils dictent donc la plupart des fonctionnalités spéciales du noyau, en fonction de ce qu'ils veulent envoyer. Mais je suppose que les performances réelles, plus de cœurs, aident beaucoup, car à l'époque, vous n'aviez aucun moyen réel de le faire. déplacez ce fil (sic), ou imaginez des requêtes réseau via un fil d'arrière-plan, ou au moins en temps réel filetage. Je pense que cela a été le plus grand changement au fil des ans, avoir plus de moyens de répartir votre travail et ne pas laisser Android ralentir parce que tout le monde essaie de récupérer ce petit peu de part de processeur. Plus que tout, je pense au multicœur et au véritable multithreading soutenu par Linux. Je pensais que c'était le plus gros changement.
Ah d'accord, alors quelle est votre opinion sur HMP vs EAS? Parce que, de toute évidence, l'EAS n'est que nouveau et n'est utilisé que dans quelques appareils - comme vous utilisez un Google Pixel, n'est-ce pas ?
Oui, j'utilise actuellement un Galaxy S8, mais j'ai aussi un Pixel. Je ne connais pas les deux dans ces [beaucoup] détails, ce sont simplement des implémentations différentes de la façon dont un périphérique multicluster devrait agir en fonction de ce qui se passe sur le périphérique à certains moments. Faire fonctionner deux clusters différents avec deux consommations électriques différentes, c'est assez difficile. Vous devez répondre aux attentes des tâches qui montent et descendent, et il y a une latence impliquée là-dedans et HMP a été la première véritable implémentation d'un une véritable architecture multicluster pour ARM, car si je me souviens bien, avant que HMP ne soit utilisé dans le monde réel, Samsung avait un premier implémentation dans laquelle vous utilisiez soit les quatre premiers cœurs, comme des cœurs à faible consommation, soit quatre cœurs hautes performances, mais ils ne fonctionnaient jamais à le même temps. Mais ensuite, avec le HMP, les cœurs étaient prêts à être utilisés à tout moment et les tâches étaient simplement déplacées d'un cluster à un autre et vice versa et cela a fonctionné. mais vous n'aviez pas beaucoup d'informations de la part du planificateur pour montrer cela au gouverneur afin de décider quel type de fréquence serait utilisé à ce moment-là. moment précis, donc vous deviez faire face, par exemple, à essayer de comprendre ce qui se passe dans [environ] 20 secondes, puis en fonction de ce qui s'est passé là-bas, vous décidez quoi faire faire. EAS, il s'agit plutôt de comprendre ce qui va se passer dans le futur et de décider en temps réel en fonction de la puissance de sortie de chaque cœur, puis c'est un tas de calculs et de choses compliquées dans le arrière-plan
Comme les modèles énergétiques et ainsi de suite pour sauvegarder tout cela.
Oui, je suppose, c'est assez compliqué, je ne connais pas tous les détails, j'ai lu un tas de documents mais c'est assez compliqué et il ne s'agit pas seulement d'allumer un interrupteur et de l'avoir prêt à l'emploi. Je reçois souvent cette question: pouvez-vous implémenter EAS sur le téléphone XYZ? Mes réponses sont toujours "Il ne s'agit pas de tourner un bouton, ce n'est pas comme ça, il a fallu toute une équipe de Googleurs et de gars de Linaro pour mettre en œuvre ça et tu dois déplacer des trucs, faire des trucs, tester des trucs et c'est tout simplement trop de travail et en quelque sorte aveugle" et… ouais. C'est dur.
Il faut donc savoir exactement ce que l’on fait, ce n’est pas le travail d’un seul homme ?
Ouais, vous devez savoir ce que vous faites, n'importe qui peut choisir les correctifs et les fusionner, mais tester réellement et s'assurer qu'il fonctionne correctement et vous auriez besoin d'une machine appropriée pour détecter la consommation d'énergie de chaque composant et il y a un tas de tables sur le noyau où vous pouvez écrire la puissance de chaque cœur, et sur cette base, le code décidera quoi faire faire. C'est assez compliqué. Je ne pense pas que ce soit une solution définitive à tous les problèmes, mais c’est certainement la meilleure que nous ayons actuellement.
Donc vous voyez ça comme une amélioration ?
Ouais, bien sûr, à des kilomètres, à des kilomètres. C'est une nette amélioration par rapport à HMP ou à toute autre architecture, car si vous pouvez comprendre ce qui va se passer dans le futur, vous pouvez réagir beaucoup plus rapidement. à toute demande ou à tout ce qui se passe sur l'appareil, c'est pourquoi le Google Pixel est si rapide et si fluide, car tout se passe presque en temps réel. Il s’agit de déplacer les fréquences de haut en bas, ce qui constitue le moyen le plus simple d’atteindre les attentes en matière de performances.
J'imagine que si l'EAS est davantage adopté à l'avenir, comment voyez-vous que cela affectera votre propre développement en ce qui concerne les noyaux? Resterez-vous fidèle au HMP ou opterez-vous pour des modèles énergétiques déjà publiés? Par exemple sur le OnePlus 3, [les développeurs ROM] réutilisent le modèle énergétique du Google Pixel pour l'EAS. Vous verriez-vous faire quelque chose comme ça ?
Je ne le ferai probablement pas, si l'appareil n'est pas livré avec EAS pour commencer, je ne le mettrai probablement pas en œuvre d'une manière ou d'une autre, car comme je l'ai dit, c'est un processus assez long et personne chez XDA ne le sait mieux que tous ces ingénieurs, donc nous essayons simplement de jouer à Dieu, je suppose.
Sur ce point, en parlant de l’avenir d’Android et des noyaux, quelle est votre opinion sur la récente version d’Android Oreo? Pensez-vous que les changements sont bons? Avez-vous examiné l'un des nouveaux commits du noyau ?
Il n'y a pas eu autant de changements côté noyau sur le Nexus 6P et le Nexus 5X, juste de petites corrections ici et là. Sur Google Pixel, ils répétaient sur la mise en œuvre d'EAS et ont passé du temps à améliorer la section du classeur, car désormais le classeur, avec Project Treble, c'est comme diviser différents packages, ils doivent donc passer par 50 ou 100 correctifs différents pour améliorer le classeur et le séparer en différents processus. A part ça, c'était juste un travail normal pour une grosse sortie. Lorsqu'il y a une nouvelle version de plate-forme, vous ne touchez généralement pas beaucoup au noyau, car jouer avec le noyau, vous avez en fait besoin de beaucoup de contrôle qualité, si vous changez parfois une chose, vous entendez que cela affecte quelque chose dans une autre sous-système. C'est ce qu'ils font habituellement, c'est pourquoi vous n'avez pas de changement de version du noyau entre les mises à niveau de la plate-forme. C'est juste beaucoup de travail. Cela n'en vaut généralement pas la peine, mais oui, il s'agissait principalement de dossiers, d'un peu de planificateur et des correctifs de sécurité habituels. Je les ai tous parcourus, mais rien ne m'a vraiment retenu l'esprit. Mon attention s'est uniquement portée sur le classeur.
Ah d'accord, donc juste les trucs standards en fait.
Ouais, ils sont assez compliqués et ne me demandez pas de détails !
C'est un sujet complètement différent, quelle est votre opinion sur F2FS par rapport à ext4? Parce que vous verriez que beaucoup de gens diront que F2FS est instable et que cela cause des problèmes,Je me demande juste ce que vous en pensez.
Je ne connais pas non plus les détails car les systèmes de fichiers sont assez complexes, il y a beaucoup de pièces mobiles ici et là. Je vais juste citer un ingénieur de Google qui dit que d'après son test, F2FS ne fonctionne pas plus vite que ext4, et en plus quand ils testaient des trucs pour Google Pixel, F2FS ne fournissait pas de support pour… Je pense que c'était le cryptage de blocs de fichiers, tandis que ext4 pour le support il. Cela signifie donc: supprimez-le. Il faut penser à deux choses, ext4 est développé depuis environ 20 ans avec de nombreux ingénieurs très intelligents de différentes entreprises et ils savent ce qu'ils font. F2FS a été, si je me souviens bien, implémenté par Samsung. Il s'agit d'un système de fichiers relativement nouveau, donc des choses aussi compliquées prennent du temps à s'améliorer et à itérer, à mesure que vous peut le voir grâce au système de fichiers Apple qui vient de sortir sur iOS, et ils vont faire de même pour Mac Système d'exploitation. Les choses prennent du temps, il faut une grande équipe pour faire ces choses correctement. Je suis un grand partisan du principe « si ça marche, n'y touchez pas » et de ce que nous avons en ce moment: ça marche, et je ne pense pas que cela vous pose des problèmes de performances, donc je ne vois aucune raison de le faire. jouer avec ça.
Ah ok, c'est assez juste! Qu'en est-il de Carte SDFS être commuté depuis FUSE? Quelle serait votre opinion là-dessus ?
Cela s'est produit parce que l'ancien système de fichiers FUSE était l'une des pires choses qui se soient produites sur Android. Les performances étaient horribles, il y avait beaucoup d’appels système entre le noyau et l’espace utilisateur et maintenant avec SDCardFS, c’est fait correctement. C'est un système de fichiers normal pour gérer cela, encore une fois, je ne connais pas les détails car c'est une chose très compliquée, mais ce que j'ai lu, vu et entendu sur différents podcasts de l'équipe Android, cela a essentiellement résolu tous les problèmes avec l'ancien système. C'était assez horrible, la performance était horrible.
Découvrez la partie 2 en cliquant sur ce bouton !