AVIS DE SOUTENANCE de Monsieur Adam CHADER

L’Ecole doctorale : Ecole Doctorale de l’Institut Polytechnique de Paris

et le Laboratoire de recherche SAMOVAR – Services rĂ©partis, Architectures, ModĂ©lisation, Validation, Administration des RĂ©seaux

présentent

l’AVIS DE SOUTENANCE de Monsieur Adam CHADER

AutorisĂ© Ă  prĂ©senter ses travaux en vue de l’obtention du Doctorat de l’Institut Polytechnique de Paris, prĂ©parĂ© Ă  TĂ©lĂ©com SudParis en :

Informatique

« Collecter de très grands tas avec téléGC »

le JEUDI 11 DéCEMBRE 2025 à 10h30

Ă 

Amphithéâtre 3
19, place Marguerite Perey 91120 Palaiseau
https://webconf.imt.fr/frontend/rooms/e2b-mut-25i-kmp/join

Membres du jury :

M. GaĂ«l THOMAS, Directeur de recherche, Inria Saclay, FRANCE – Directeur de thèse
M. Mathieu BACOU, MaĂ®tre de confĂ©rences, TĂ©lĂ©com SudParis, FRANCE – Co-encadrant de thèse
M. Pierre SENS, Professeur, Sorbonne UniversitĂ©, FRANCE – Rapporteur
M. Daniel HAGIMONT, Professeur, UniversitĂ© de Toulouse, FRANCE – Rapporteur
M. Guillermo  POLITO, ChargĂ© de recherche, Inria Lille , FRANCE – Examinateur
Mme Sara BOUCHENAK, Professeure, INSA Lyon , FRANCE – Examinatrice

« Collecter de très grands tas avec téléGC »

présenté par Monsieur Adam CHADER

Résumé :

La mĂ©moire hiĂ©rachique (ou mĂ©moire Ă  plusieurs niveaux), est un paradigme de gestion des donnĂ©es qui a Ă©mergĂ© avec l’avènement de nouvelles technologies mĂ©moire (mĂ©moire persistente, disque, High Bandwith Memory (HBM), mĂ©moire programmable,…) et de nouveaux canaux de communication entre les mĂ©moires (Infiniband, CXL, NUMA, …). Dans cette abstraction, chaque niveaux mĂ©moire offre des latences diffĂ©rentes, et des capacitĂ©s de stockage plus ou moins Ă©levĂ©es. Pour profiter des propriĂ©tĂ©s diffĂ©rentes des mĂ©moires de manière optimale, l’objectif des chercheurs et dĂ©veloppeurs système est de dĂ©cider oĂą placer les donnĂ©es dans ces divers niveaux. Par exemple, il est plus efficace de placer les donnĂ©es accĂ©dĂ©es plus frĂ©quement dans les mĂ©moires plus rapides comme la DRAM (Dynamic Random Access Memory) ou les caches CPU, et les donnĂ©es les moins utilisĂ©es dans les niveaux plus lents comme le disque, ou la mĂ©moire distante. Notre Ă©tude se place dans un contexte prĂ©cis de mĂ©moire hierarchique appelĂ© la mĂ©moire dĂ©sagrĂ©gĂ©e. Dans ce contexte, les noeuds au sein d’un cluster peuvent accĂ©der directement Ă  la mĂ©moire des autres noeuds, sans interrompre leurs processeurs. Ce procĂ©dĂ© s’appelle RDMA (accès mĂ©moire direct Ă  distance), et permet, si la transparence est assurĂ©e par le système d’exploitation, de donner l’abstraction aux applications d’une mĂ©moire très grande, qui est en rĂ©alitĂ© la somme des mĂ©moires de tous les noeuds dans le cluster. Cependant, RDMA qui, par construction, n’implĂ©mente pas de cohĂ©rence de cache, rend l’Ă©change de donnĂ©e entre les CPUs des diffĂ©rents noeuds impossible. Dans les faits, le cluster est divisĂ© en deux groupes de noeuds, des noeuds de calculs, qui accueillent les applications, et des noeuds mĂ©moires, qui servent de stockage distant, plus performants que le disque. Dans ce contexte, plusieurs projets de recherche ont montrĂ© que l’execution d’une application accompagnĂ©e d’un ramasse miette (ou Garbage Collector (GC)), Ă©tait particulièrement affectĂ©e par l’utilisation de mĂ©moire dĂ©sagrĂ©gĂ©e. Cela est du au fait que les GC possèdent une très mauvaise localitĂ© d’accès, car ils parcourent toute la mĂ©moire pour trouver les objets Ă  libĂ©rer. La solution trouvĂ©e dans la littĂ©rature a Ă©tĂ© de dĂ©placer l’Ă©xĂ©cution du ramasse miette vers les noeuds mĂ©moires, dans lequels la majoritĂ© des objets est stockĂ©e. Cependant, nous avons mesurĂ© que l’execution d’un GC sur le noeud mĂ©moire dĂ©grade les performances significativement Ă  cause de la synchronisation entre le collecteur et l’application, car les faire communiquer est maintenant bien plus coĂ»teux. Notre contribution vise Ă  eviter ce coĂ»t de synchronisation Ă  l’aide d’un nouveau ramasse miette appelĂ© TeleGC. TeleGC est localisĂ© sur le noeud distant, cependant, contrairement aux prototypes concurrents, nous proposons d’utiliser l’absence de cohĂ©rence de cache Ă  notre avantage pour gĂ©nĂ©rer une capture de la mĂ©moire sur le noeud distant. En effet, si l’on garantit qu’aucune Ă©criture n’est effectuĂ©e sur une rĂ©gion de mĂ©moire, il est possible de la collecter de manière indĂ©pendante, sans synchronisation avec l’application pour garantir l’intĂ©gritĂ© de la mĂ©moire. Pour obtenir cette capture, nous avons dĂ©veloppĂ© la barrière de write-back, qui bloque et redirige les Ă©critures de la mĂ©moire locale vers la mĂ©moire distante pendant une collection. D’autre part, notre ramasse miette n’effectue pas de compaction, c’est Ă  dire n’aggrege pas les objets vivants restants, car cela implique une synchronisation d’autant plus importante entre le ramasse miette et l’application, très couteuse dans le contexte de dĂ©sagrĂ©gation. Pour palier Ă  la fragmentation qui se gĂ©nère alors, nous proposons une disposition de la mĂ©moire particulière, similaire Ă  celle de la machine virtuelle Python. Avec cette approche, notre prototype est capable de surpasser Ă  la fois les GCs en production de la JVM (Java Virtual Machine), et les implĂ©mentations de l’Ă©tat de l’art dans un contexte dĂ©sagrĂ©gĂ©.

Abstract :

Memory tiering has emerged in recent years as a good abstraction to account for the multiplicity of memory technologies (persistent memory, high bandwith memory (HBM), programmable memory, disk,…), and of memory communication technologies (NUMA, RDMA, CXL,…). A large portion of system research in this field has focused on transparent placement of memory in these multiple tiers that present different properties like latency and capacity. In our study, we focus on memory disaggregation, a memory tiering practice where nodes in a cluster can directly access memory in other special nodes called memory nodes. The access to these other remote memories is slower than to the local memory of the node, but allows to transparenly make application memory larger. The local memory is here used as a cache for the remote memory. In this context, several research projects have shown that the execution of a garbage collected (GC) application is greatly affected in terms of performance by the use of disaggregated memory. This is due to the fact that garbage collectors present very bad locality, as they need to parse the entire memory to determine which objects to collect. Thus, they perform poorly in the cache context that is disaggregation, and even pollute the cache, deteriorating the performance of the collected application even more. Contributions in the literature solve this problem by moving the garbage collector to the remote memory node. This way, all GC memory accesses are done directly, without transiting by the cache. Unfortunately, we measured that executing the GC on the memory node significantly degrades performance because of synchronization between the GC and the application as making them communicate is now costlier. Our contribution aims to avoid this synchronization with a garbage collector called TeleGC. TeleGC is located on the remote memory node, and removes the need for any synchronization by leveraging the absence of cache coherence between local and remote node in a disaggregated setting. Thanks to this, and with a new technique called write-back retention, we are able to obtain an immutable snapshot of the memory on the memory node during collection, which allows for safe collection without any synchronization. With this approach, we are able to outperform both production Java garbage collectors and the state of the art implementations in a disaggregated context.