Système de fichiers incrémentiel par Google
Google a travaillé sur un nouveau type de système de fichiers qui permet l'exécution de fichiers binaires avant qu'un ensemble complet ne soit chargé. En prenant le développement d'applications Android comme exemple, vous devez actuellement attendre que l'intégralité du binaire soit transmise à l'émulateur ou à votre véritable appareil de test pour le débogage. Le système de fichiers incrémentiel raccourcit considérablement ce délai en permettant l'exécution du binaire avant que l'ensemble du package n'ait été transmis. Cela semble extrêmement complexe, et c'est ce que c'est, mais nous pouvons toujours y jeter un coup d'œil pour mieux comprendre ce qui sera très probablement une fonctionnalité par défaut dans Android 12 et versions ultérieures.
Un système de fichiers virtuel appelé « incfs »
La solution de système de fichiers virtuel de Google, qui dans sa première itération sera utilisée exclusivement pour les APK et les AAB chargés à partir du Play Store, est une couche qui se trouve au-dessus du système de fichiers réel. Pour mieux illustrer l'architecture, j'utilise des diapositives créées par Google pour une présentation technique. Vous pouvez trouver le lien dans l'addenda à la fin de cette page.
Pour en revenir au sujet, le système de fichiers incrémentiel de Google peut être considéré comme un cache, où les entités créées référencent directement des fichiers dans le système de fichiers réel. Le code lui-même est profondément intégré au système d'exploitation en tant que module du noyau - ce qui semble logique en raison de son placement de bas niveau dans l'architecture globale.
Avantage d'un système de fichiers virtuel
L'avantage d'un tel FS virtuel est que vous n'êtes pas limité aux limites d'un système de fichiers réel, où la lecture et l'exécution ultérieure d'un programme ne peuvent généralement avoir lieu que si l'ensemble complet est disponible - du premier au dernier octet. Avec le « système de fichiers incrémentiel », cette limitation est techniquement supprimée. Pourtant, une fonctionnalité aussi puissante s'accompagne d'un grand nombre d'aspects complexes à prendre en compte.
D'après un ingénieur de Google, un grand défi est la gestion correcte des opérations d'écriture. Le système de fichiers virtuel a son propre état concernant les lectures en attente, mais doit toujours maintenir l'intégrité des données des fichiers chargés.
Le défi est relevé en créant un index personnalisé dans le « incfs ». Chaque fichier réel est directement corrélé à une entité du système de fichiers virtuel, même lorsque le fichier d'origine est renommé.
Encore une abréviation appelée « ioctl »
Cette abréviation signifie "contrôle d'entrée/sortie" et conduit à la création d'un tel fichier d'index dans le système de fichiers incrémentiel de Google. "ioctl" vient du système d'exploitation et son explication technique est hors de portée pour cet article. Si vous voulez en savoir plus, il y a aussi un lien dans l'addendum.
Aussi assez intéressant : « incfs » a un mécanisme de journalisation intégré. Cette fonctionnalité sera utilisée pour déterminer les performances réelles de sa mise en œuvre pour d'autres améliorations.
Utilisation pratique
Le début de cette fonctionnalité a eu lieu en mai 2019, lorsque certains ingénieurs de Google ont commencé à apporter des modifications au noyau Linux. Le placer là leur a permis de l'utiliser simplement dans le projet Android Open Source (AOSP), la partie open source d'Android et la base principale de ce système d'exploitation, car AOSP est également construit sur le noyau Linux.
Les contributeurs Linux n'étaient pas si heureux, car des approches similaires pour améliorer un système de fichiers avaient déjà été faites, telles que FUSE ou OverlayFS. Pourtant, du point de vue de Google, ces implémentations n'étaient pas assez performantes sur les appareils Android bas de gamme. Cela a conduit au développement du système de fichiers incrémentiel.
Pour la première itération, il sera utilisé pour les jeux téléchargés depuis le Play Store à partir d'Android 12 afin de raccourcir le temps de lancement du jeu. Cette fonctionnalité vraiment géniale présuppose le système de fichiers incrémentiel, mais aussi une logique intégrée à Android pour déterminer comment démarrer réellement ces jeux tôt - sans aucun changement de la part du développeur, selon Google.