-
-
-
-
-
-
-
HomeSite map
SoC/Offres d'emplois/Stages/2012-2013/ALSOC/ALMOS: Evaluation de la scalabilité de plusieurs allocateurs mémoire pour la LibC Print page

Proposition de stage LIP6

Année 2013

 

ALMOS : Intégration et évaluation de la scalabilité de plusieurs allocateurs mémoire pour la LibC

 

CONTEXTE

Ce stage s’inscrit dans le cadre du projet Européen SHARP piloté par BULL, dont les partenaires français sont THALES, le LIP6 et le CEA/LETI. Ce projet vise la définition et l’implémentation d’une architecture de processeur many-cores utilisable dans des ordinateurs de type serveur, c'est-à-dire une architecture matérielle supportant la mémoire virtuelle, et fournissant un mécanisme de cohérence des caches garantie par le matériel. 

ALMOS (Advanced Locality Management Operating System) [1] est un système d'exploitation ouvert (open source) et dédié aux architectures many-cores de type cc-NUMA. Le développement d’ALMOS a démarré au LIP6 lors d’un premier projet Européen conjointement avec TSAR [2]. Il a été retenu pour piloter l'accélérateur de calcul TSAR dans le cadre du projet Européen SHARP. Le noyau distribué en mémoire partagée d’ALMOS dispose d’un certain nombre de mécanismes permettant de renforcer la localité des accès mémoire des tâches et de fournir une gestion scalable des ressources matérielles (cores et mémoires).

Une première version de l’architecture TSAR, comportant 1024 cœurs a été modélisée en langage SystemC avec un style de modélisation « au cycle près ». ALMOS a été déployé sur cette architecture et différents benchmarks fortement parallèles ont été exécutés en utilisant le simulateur de TSAR. Jusqu’à présent, la scalabilité de l’allocateur mémoire au niveau de la LibC d’ALMOS ne posait pas de problème, car les applications utilisées effectuent la quasi-majorité de leurs allocations mémoire dans la phase d'initialisation. Le traitement effectué, dans la phase parallèle de ces applications, ne nécessite pas (ou peu) d’allocations dynamiques de mémoire virtuel. Dans l’objectif de poursuivre la recherche sur la scalabilité des couches applicatives dans le contexte des many-cores ayant plusieurs centaines de cores, l’étude de la scalabilité de la fonction d’allocation dynamique de mémoire, au niveau de la LibC, représente une priorité pour le projet ALMOS.

 

OBJECTIF

Préserver le parallélisme d’une application consiste à minimiser, voire éliminer, toutes sortes de contentions. Non seulement dans l’application elle-même, mais aussi aux différents niveaux sous-jacents. Ces niveaux incluent l’architecture matérielle, le noyau du système d’exploitation, les bibliothèques et exécutifs (run-time) du système d’exploitation où un grand nombre de services sont offerts aux tâches de l’application. Le problème de la scalabilité de l’allocateur mémoire de la LibC est un problème d’actualité. Il est souligné d’avantage avec l’émergence des architectures à plusieurs dizaines voire centaine de cores. Lors de ces 6 dernières années, différents allocateurs mémoire pour la LibC ont été proposés : PTMalloc3 [3], TCMalloc [4], NEDMalloc [5], JEMalloc [6], StreamFlow [7], SFMalloc [8] et SSMalloc [9]. La plupart de ces allocateurs mémoire ont été évalués en utilisant des machines ayant une dizaine de cores seulement. Les allocateurs mémoire SFMalloc (2011) et SSMalloc (2012) sont les plus récents. L’évaluation de la scalabilité de ces deux allocateurs a été menée sur une machine AMD Opteron de 48 cores [9]. L’objectif de ce stage est d’évaluer la scalabilité des plusieurs allocateurs mémoire existant sur deux cibles disponibles au LIP6 : la première est Linux/AMD ayant 64 cores. La deuxième est ALMOS/TSAR avec une configuration allant jusqu’à 512 cores.

 

TRAVAIL PROPOSÉ

Les allocateurs visés sont en priorité StreamFlow, SFMalloc et SSMalloc. L’évaluation de la scalabilité des allocateurs se fera en utilisant des benchmarks de références déjà disponibles. Mener cette études de performances sur la cible Linux/AMD ne doit pas présenter de difficulté particulière. Concernant la cible ALMOS/TSAR, l’étude de performances doit être précédée par une phase de portage des trois allocateurs en question.

 

Le stage se déroulera selon les étapes suivantes :

1. Étudier le fonctionnement de chacun des trois allocateurs (i.e : les publications connexes).

2. Prendre connaissance du fonctionnement et caractéristiques des benchmarks à utiliser.

3. Prendre connaissance de la démarche d’évaluation de performances à mener.

4. Prendre en main l'environnement de développement pour la cible ALMOS/TSAR.

5. Évaluer les performances des trois allocateurs sur la cible Linux/AMD.

6. Porter les trois allocateurs sur la cible ALMOS/TSAR.

7. Évaluer les performances des trois allocateurs sur la cible ALMOS/TSAR.

8. Comparer les résultats obtenus et conclure quant à l’efficacité de chacun des allocateurs.

 

ENCADREMENT

Ce stage sera encadré par Ghassan Almaless : ghassan.almaless(at)lip6(.)fr

 

RÉFÉRENCES

[1] Advanced Locality Management Operating System, https://www.almos.fr/trac/almos

[2] Tera-Scale ARchitecture, https://www-soc.lip6.fr/trac/tsar

[3] PTMalloc3, http://www.malloc.de/

[4] TCMalloc, http://goog-perftools.sourceforge.net/doc/tcmalloc.html

[5] NEDMalloc, http://www.nedprod.com/programs/portable/nedmalloc/

[6] JEMalloc, http://www.canonware.com/jemalloc/index.html

[7] StreamFlow, http://people.cs.vt.edu/~scschnei/streamflow/

[8] SFMalloc, http://aces.snu.ac.kr/Center_for_Manycore_Programming/SFMalloc.html

[9] SSMalloc, http://ipads.se.sjtu.edu.cn/doku.php?id=pub:projects:ssmalloc

 

LIP6 LIP6-SoC LIP6 CNRS UPMC