Towards Malleable Distributed Storage Systems: from Models to Practice Nathanaël Cheriere
Total Page:16
File Type:pdf, Size:1020Kb
Towards Malleable Distributed Storage Systems: From Models to Practice Nathanaël Cheriere To cite this version: Nathanaël Cheriere. Towards Malleable Distributed Storage Systems: From Models to Practice. Other [cs.OH]. École normale supérieure de Rennes, 2019. English. NNT : 2019ENSR0018. tel-02376032 HAL Id: tel-02376032 https://tel.archives-ouvertes.fr/tel-02376032 Submitted on 22 Nov 2019 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. THÈSE DE DOCTORAT DE L’ÉCOLE NORMALE SUPÉRIEURE DE RENNES COMUE UNIVERSITE BRETAGNE LOIRE Ecole Doctorale N°601 Mathèmatique et Sciences et Technologies de l’Information et de la Communication Spécialité : Informatique Par Nathanaël CHERIERE Towards Malleable Distributed Storage Systems: from Models to Practice Thèse présentée et soutenue à RENNES, le 5 novembre 2019 Unité de recherche : IRISA Rapporteurs avant soutenance : Toni Cortés, Associate Researcher, Universitat Politècnica de Catalunya Frédéric Desprez, Directeur de recherche, Inria - Grenoble Composition du jury : Présiden : François Taiani, Professeur des Universités, Université Rennes 1 Examinateurs : Toni Cortés, Associate Researcher, Universitat Politècnica de Catalunya Frédéric Desprez, Directeur de recherche, Inria - Grenoble Kate Keahey, Senior Research Scientist, Argonne National Laboratory Dir. de thèse : Gabriel Antoniu, Directeur de recherche, Inria - Rennes Co-dir. de thèse : Matthieu Dorier, Software Development Specialist, Argonne National Laboratory All models are wrong but some are useful - George Box ACKNOWLEDGMENTS I would like to start by thanking my reviewers, Toni Cortés and Frédéric Desprez, and the other members of the jury, Kate Keahey and François Taiani, for taking the time to evaluate this work. Many persons have made this work possible, starting from my PhD advisors: Matthieu Dorier, who provided among many things very helpful technical help and had an impressive response time, and Gabriel Antoniu who pushed me to publish and present my work in top conferences and gave me the freedom to follow my ideas. This work would also not have been possible without Shadi Ibrahim inviting me to the Kerdata team. I am also very grateful to Rob Ross for hosting me at Argonne National Laboratory and for the fruitful high level discussions. Many thanks to Stefan Wild and Sven Leyffer for the discussions about formalizing multi-objective problems and techniques to find exact solutions. I need to thank my good friends Luis and Lucy for tolerating my complaints and for all the awesome food and drinks we shared. I also want to thank my office-mates, Lokmam, Luis, Yacine, and Laurent for the time spent together and the long discussions about pretty much anything. I extend my thanks to all the members of Kerdata I have met, Orçun, Tien-Dat, Alex, Luc, Ovidiu, Hadi, Paul, Amelie and Pedro, who made Kerdata a comfortable place to be in. This PhD could not have been possible without the help of the team assisants Gaëlle, and Aurélie, as well as Elodie who helped with a lot of paperwork and with the missions. I cannot forget to thank my interns, Tom and Juliette, and my students Titouan, Santiago, Alexandre, and Nicolas who were a pleasure to advise and with whom I learned a lot. There are a lot more persons to thank, my parents, siblings, the friends from Argonne, from the JLESC, the Mochi team, random encounters in conferences... to all of you, thank you! RÉSUMÉ EN FRANÇAIS Contexte En juin 2016, Sunway Taihulight, le premier supercalculateur dépassant les 10 millions de cœurs, prit la première place du classement mondial des plus puissants supercalculateurs, le Top500 [1].1 Cette machine, installée au National Supercomputing Center à Wuxi (Chine), a pu atteindre 93 014,6 Tflops (93×1015 opérations en virgule flottante par seconde) en utilisant un total de 10 649 600 cœurs. À la même période, le nombre de serveurs utilisés par Amazon Web Services [2] était estimé à 1,3 millions [3]. Une telle puissance de calcul est utile dans de nom- breux domaines. En recherche, elle permet la simulation de phénomènes complexes comme la physique des particules, et aide à l’analyse de grandes quantités de données obtenues par observation et expérimentation. De nombreuses entreprises utilisent aussi les calculs inten- sifs pour fournir des services utiles dans la vie de tous les jours. Par exemple, les prévisions météorologiques ont été considérablement améliorées depuis 1950 grâce à l’utilisation de su- percalculateurs. En 1950, les scientifiques pouvaient prévoir la météo avec succès 24 heures à l’avance. Aujourd’hui, il est possible de prévoir la météo plusieurs semaines à l’avance grâce au calcul de modèles météorologiques très précis [4]. Les systèmes à large échelle utilisés pour exécuter ces applications nécessitant une grande puissance de calcul sont rarement dédiés à une seule application; la plupart du temps les ressources de la plateforme sont partagées entre plusieurs applications exécutées simultané- ment. Le partage de ressources de calcul est de fait un problème apparu en même temps que les ordinateurs eux-mêmes. Les plateformes de calcul sont souvent mutualisées en- tre plusieurs applications et utilisateurs principalement à cause de leur coût d’acquisition et d’entretien. Les ordinateurs centraux achetés par les universités dans les années 1960 et 1970 étaient partagées en allouant des plages horaires aux utilisateurs ou simplement en exécutant les applications dans l’ordre de leur soumission. John McCarthy présenta le concept d’utility computing en 1961 [5]. Il anticipait la possibilité d’accéder à de la puissance de calcul comme d’autres services comme l’eau et l’électricité. Une première mise en place de cette idée fut la création de grilles de calcul dans les années 1990 : les ressources de calcul de plusieurs insti- tutions furent mises en commun pour donner accès aux utilisateurs à un plus grand ensemble de ressources. Cette approche permet aussi la réduction du coût d’entretien de ces ressources en rassemblant et mutualisant des services essentiels tels que le support utilisateur. Le Cloud, développé dans les années 2000, est plus proche de la vision de McCarty : les utilisateurs peuvent louer des ressources à des entreprises et elles leur sont facturées selon l’utilisation. La gestion fine des ressources de plateformes partagées permet aux utilisateurs de réser- ver de nouvelles ressources quand elles sont nécessaires, et de les rendre à la plateforme au moment où elles ne sont plus utiles. Cette gestion élastique des ressources a de nombreux avantages pour les applications : celles-ci peuvent ajuster les ressources qu’elles utilisent à 1Il est classé troisième en Juin 2019. i leur charge de travail même si cette charge est imprévisible, à un coût optimal puisque seules les ressources nécessaires sont réservées. Cependant, cette gestion fine des ressources peut parfois être limitée par le stockage et la gestion de grandes quantités de données manipulées par certaines applications. L’avènement récent des Big Data a conduit à la création de nombreuses applications manipulant d’immenses quantités de données. Par exemple, certains ensembles de données utilisés pour entrainer des réseaux de neurones profonds dépassent 100 Tio [6]. La manipulation de telles quantités de données rend l’efficacité de leur gestion critique pour assurer une bonne performance de ces applications. En particulier, la co-location entre tâches et données est essentielle : en exécutant les tâches de calcul sur les nœuds (serveurs) qui stockent les données qui leur sont nécessaires, l’utilisation du réseau et la latence sont réduites. Cette technique a été popularisée par les systèmes utilisés pour le traitement des Big Data comme MapReduce [7], Hadoop [8], ou Spark [9]. Utiliser des systèmes de stockage de données co-localisés avec les applications empêche la gestion fine des ressources de calcul puisque la commission (ajout) et la décommission (retrait) de nœuds d’un système de stockage de données nécessite le transfert de grandes quantités de données pour garantir la disponibilité de ces données. Ces transferts sont habituellement supposés trop lents pour être utilisés dans le cadre d’une gestion fine de ressources. Cela force les applications basées sur la co-location des tâches et des données à seulement utiliser les ressources qui leur ont été allouées lors de leur lancement. Cette limitation n’est pas confinée au Cloud; les systèmes de stockage de données co-localisés avec les applications sont aussi mis en avant et développés pour les infrastructures de calcul hautes performances (HPC) [10, 11]. Inclure la malléabilité aux systèmes de stockages permettrait l’utilisation de systèmes de stockage co-localisés avec une gestion fine des ressources. La malléabilités est la possibil- ité pour un système distribué d’avoir des ressources commissionnées et décommissionnées pendant son exécution en suivant les ordres d’un gestionnaire de ressources. Un système de stockage distribué pourrait voir sa taille réajustée selon les besoins de l’application qui y ac- cède. Les systèmes de stockage existants n’ont pas été développés avec la malléabilité comme principe de conception puisque les transferts de données nécessaires pour les opérations de redimensionnement (la commission et la décommission) sont supposés lents. Cependant, les technologies réseaux et de stockage de données ont grandement été améliorées récem- ment(adoption des SSDs et NVRAM, réduction de leurs coût, amélioration de leur vitesse, de leur capacité, etc.). Il faut donc réévaluer ces anciennes hypothèses. Dans cette thèse, nous cherchons à développer une meilleure compréhension de la mal- léabilité des systèmes de stockage distribués et à résoudre certains des défis qui lui sont liés.