Des chercheurs coréens viennent de présenter un travail qui devrait augmenter les performances de la mémoire flash sous Android tout en augmentant la durée de vie des puces en charge du stockage. Prenant le nom de WALDIO, l’idée est de réduire le nombre de lectures et d’écritures dans la mémoire flash causé par le système de fichier journalisé EXT4.

Toshiba eMMC 5.1

Sous Android, le système de fichier EXT4 est journalisé, ce qui signifie qu’un journal des opérations est tenu à jour afin de pouvoir corriger les éventuelles erreurs en cas de coupure de courant, par exemple. La base de données SQLite est utilisée sous Android pour journaliser le système de fichiers et protéger l’intégrité des données. Mais le combo EXT4 et SQLite handicape fortement les performances de la mémoire flash jouant le rôle de stockage, puisqu’à chaque manipulation de journalisation, la mémoire flash est occupée. Il est toutefois possible d’optimiser la journalisation et c’est ce qu’a réalisé une équipe de chercheurs coréens dans le but de réduire les opérations d’entrées et sorties pesant sur les performances de la mémoire flash.

L’optimisation de la journalisation

Ainsi, les chercheurs utilisent une méthode nommée WALDIO pour Write-Ahead Logging Direct IO en lieu et place de l’actuelle WAL (Write-Ahead Logging). Trois modifications majeures du système actuel ont été effectuées : une préallocation des blocs à écrire au sein de la base de données, un redesign de la base de données afin d’aligner la taille des blocs logiques (4 Ko) avec celle des blocs physiques de la mémoire flash (4 ou 8 Ko par page) et enfin l’agrégation des tâches afin de monopoliser la mémoire flash une seule fois au lieu d’y avoir accès à de multiples reprises. Ainsi, l’écriture au sein de la base de données SQLite des opérations de journalisation prend moins de temps, augmentant mécaniquement les performances. Cerise sur le gâteau, la méthode des chercheurs permet de réduire la quantité de données à écrire, augmentant alors la durée de vie des puces de mémoire flash, impactée par les nombreuses opérations d’écriture.

Group Sync WALDIOL’agrégation des données (via un frame buffer) permet de réduire les opérations d’écriture

Des performances en hausse

La nouvelle méthode de journalisation WALDIO permettrait, selon les chercheurs, d’augmenter les performances synthétiques dans les benchmarks avec un rapport de 5,1 par rapport au mode WAL (par défaut sous Android) et un rapport de 2,7 par rapport au mode LS-MVTB (Multi-Version B-tree with Lazy Split) qui est la méthode de journalisation SQLite la plus rapide à ce jour. Elle a d’ailleurs été créée par certains chercheurs à l’origine du mode WALDIO. Les tests ont été réalisés sur un Galaxy S5 ainsi qu’un Galaxy S4.

Peformances WALDIOLes performances des différentes méthodes de journalisation

Une meilleure durée de vie pour la mémoire

Les chercheurs ajoutent que les opérations d’écriture sont six fois moins nombreuses avec WALDIO qu’en mode WAL. Une très bonne nouvelle, lorsque l’on sait que la journalisation sous Android est responsable d’environ 70 % des écritures sur la mémoire flash alors que les cellules de mémoire flash supportent mal les nombreuses écritures sur le long terme. Avec cette nouvelle journalisation, il n’y a plus d’inquiétude à avoir sur la durée de vie des puces de mémoire flash, et notamment les nouvelles puces TLC annoncées par Samsung qui devraient permettre d’augmenter largement les capacités des smartphones tout en abaissant les coûts grâce à l’utilisation de 3 bits par cellule (réduisant mécaniquement l’endurance des puces comparée à des puces de 2 voire 1 bits par cellule).

WALDIO syncMoins de données écrites = meilleure durée de vie

 

Une arrivée sous AOSP ?

Il reste maintenant à savoir si Google souhaite intégrer cette nouvelle journalisation directement à AOSP ou si les chercheurs comptent proposer leurs découvertes aux constructeurs via un patch (payant ?).