Un groupe de recherche co-dirigé par Emery Berger, professeur d'informatique à l'UMass Amherst, a développé un système qu'ils appellent Mesh qui peut automatiquement réduire ces demandes de mémoire. Crédit :UMass Amherst
Les applications telles que les navigateurs Web ou les applications pour smartphone utilisent souvent beaucoup de mémoire. Pour remédier à ce, un groupe de recherche co-dirigé par Emery Berger, professeur d'informatique à l'Université du Massachusetts Amherst, a développé un système qu'ils appellent Mesh qui peut automatiquement réduire ces demandes de mémoire. Berger présente ce travail aujourd'hui au Cppcon, la conférence C++ à Aurora, Colorado.
Berger et ses collègues du College of Information and Computer Science (CICS) s'attendent à ce que Mesh ait un impact substantiel sur le monde informatique, des applications mobiles aux ordinateurs de bureau en passant par les centres de données, parce que personne n'avait auparavant été capable de compacter la mémoire dans des applications écrites ou exécutées sur des langages largement utilisés comme le C, C++, ou Objectif C, la langue utilisée pour les applications iOS.
Comme l'expliquent les auteurs, les programmes écrits dans des langages de type C peuvent souffrir d'une grave fragmentation de la mémoire, où la mémoire est brisée, un peu comme une mauvaise planche Tetris, Berger dit, il y a donc beaucoup d'espaces vides entre les deux. "C'est comme ça que la mémoire se perd, » précise-t-il. « Imaginez un tableau Tetris où vous pourriez l'arrêter et le réorganiser à tout moment, cela rendrait le jeu beaucoup plus facile, parce que vous pouvez toujours faire sortir l'espace vide. Mais vous ne pouvez pas le faire en C, tout comme vous ne pouvez pas le faire dans Tetris."
Le maillage comble efficacement ces lacunes en tirant parti d'une fonctionnalité matérielle appelée "mémoire virtuelle" prise en charge par presque tous les ordinateurs modernes. "L'astuce est de trouver des morceaux de mémoire qui peuvent être entrelacés, un peu comme lorsque les engrenages s'emboîtent, " explique Berger. Lorsque Mesh trouve ces morceaux, il peut récupérer la mémoire de l'un des morceaux en combinant les deux morceaux en un seul. "Ce processus de maillage fonctionne parce que nous ne changeons les choses que dans la mémoire "physique". Du point de vue du programme, qui ne peut voir que la mémoire « virtuelle », rien n'a changé. C'est puissant car nous pouvons le faire automatiquement pour n'importe quelle application."
L'équipe rapporte que les résultats à ce jour ont été extrêmement prometteurs; par exemple, l'utilisation de Mesh réduit automatiquement les besoins en mémoire du navigateur Web Firefox de 16 %. Pour Redis, un serveur de structure de données open source populaire, Le maillage réduit les demandes de mémoire de près de 40 %.
L'équipe CICS Mesh comprend le professeur Emery Berger, un expert en gestion de mémoire qui a conçu l'algorithme sur lequel est basé le gestionnaire de mémoire de Mac OS X, professeur Andrew McGregor, un spécialiste de la conception et de l'analyse d'algorithmes, et les candidats au doctorat Bobby Powers et David Tench. Powers est un doctorant de quatrième année qui est également ingénieur en infrastructure chez Stripe, et Tench est un doctorant de cinquième année spécialisé dans les algorithmes randomisés.
Dans un domaine où la "fragmentation catastrophique" a longtemps été considérée comme inévitable, leur logiciel est un grand pas en avant, soulignent les auteurs. "C'est quelque chose que tout le monde pensait impossible, " note McGregor. " Après qu'Emery ait eu son aperçu clé, nous avons pu l'analyser théoriquement et concevoir un algorithme efficace pour mettre en œuvre l'idée. Contre près de 50 ans de sagesse conventionnelle, c'est formidable que nous ayons maintenant une solution à cet important problème qui fonctionne non seulement en théorie, mais c'est pratique."
Plus tôt cette année, Berger a présenté les détails techniques lors de la conférence ACM SIGPLAN Programming Language Design and Implementation (PLDI '19) à Phoenix. En réponse au papier, Le programmeur Microsoft et ingénieur distingué Miguel de Icaza a tweeté que Mesh est un "travail vraiment inspirant, avec un impact profond. Une belle idée pleinement développée. Quelle contribution incroyable à l'industrie."