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

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équemment 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 hiérarchique appelé la mémoire désagrégée. Dans ce contexte, les nœuds au sein d'un cluster peuvent accéder directement à la mémoire des autres nœuds, 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 nœuds 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 nœuds impossible. Dans les faits, le cluster est divisé en deux groupes de nœuds, des nœuds de calculs, qui accueillent les applications, et des nœuds mémoires, qui servent de stockage distant, plus performants que le disque. Dans ce contexte, plusieurs projets de recherche ont montré que l'exécution 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'exécution du ramasse miette vers les nœuds mémoires, dans lesquels la majorité des objets est stockée. Cependant, nous avons mesuré que l'exécution d'un GC sur le nœud 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 à éviter ce coût de synchronisation à l'aide d'un nouveau ramasse miette appelé TeleGC. TeleGC est localisé sur le nœud 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 nœud 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'agrège 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é.

Publication Details

Journal
theses.fr (ABES)
Published
2025-12-11
Primary Topic
Parallel Computing and Optimization Techniques
Type
article
Field-Weighted Citation Impact
0.00
Controls
|||
ALL TIME
JAN
FEB
MAR
APR
MAY
JUN
JUL
AUG
SEP
OCT
article

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

theses.fr (ABES)
Parallel Computing and Optimization Techniques
article

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

article en

Abstract

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équemment 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 hiérarchique appelé la mémoire désagrégée. Dans ce contexte, les nœuds au sein d'un cluster peuvent accéder directement à la mémoire des autres nœuds, 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 nœuds 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 nœuds impossible. Dans les faits, le cluster est divisé en deux groupes de nœuds, des nœuds de calculs, qui accueillent les applications, et des nœuds mémoires, qui servent de stockage distant, plus performants que le disque. Dans ce contexte, plusieurs projets de recherche ont montré que l'exécution 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'exécution du ramasse miette vers les nœuds mémoires, dans lesquels la majorité des objets est stockée. Cependant, nous avons mesuré que l'exécution d'un GC sur le nœud 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 à éviter ce coût de synchronisation à l'aide d'un nouveau ramasse miette appelé TeleGC. TeleGC est localisé sur le nœud 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 nœud 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'agrège 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é.

theses.fr (ABES)
Openalex Percentile: Top 35%
Parallel Computing and Optimization Techniques
AI Navigator

Ask Laika to Summarize, Analyze, and Connect papers live on the map.

Summarize Papers & Methodologies

Extract key findings, datasets, and comparative methods across publications.

Benchmark Rankings & Visual Analytics

Rank top research institutions, authors, funders, topics, and journals by Field-Weighted Citation Impact (FWCI) and paper volume with instant charts.

Connect Distant Disciplines

Bridge topological clusters on the map to find hidden collaborative intersections.