A Support for Persistent Memory in Java - TEL - Thèses en ligne Accéder directement au contenu
Thèse Année : 2023

A Support for Persistent Memory in Java

Intégration de la mémoire persistante dans Java

Résumé

Recently released non-volatile main memory (NVMM), as fast and durable memory, dramatically increases storage performance over traditional media (SSD, hard disk).A substantial and unique property of NVMM is byte-addressability -- complex memory data structures, maintained with regular load/store instructions,can now resist machine power-cycles, software faults or system crashes.However, correctly managing persistence with the fine grain of memory instructions is laborious, with increased risk of compromising data integrity and recovery at any misstep.Programming abstractions from software libraries and support from language runtime and compilers are necessary to avoid memory bugs that are exacerbated with persistence.In this thesis, we address the challenges of supporting persistent memory in managed language environments by introducing J-NVM, a framework to efficiently access NVMM in Java.With J-NVM, we demonstrate how to design an efficient, simple and complete interface to weave NVMM-devised persistence into object-oriented programming,while remaining unobtrusive to the language runtime itself.In detail, J-NVM offers a fully-fledged interface to persist plain Java objects using failure-atomic sections.This interface relies internally on proxy objects that intermediate direct off-heap access to NVMM.The framework also provides a library of highly-optimized persistent data types that resist reboots and power failures.We evaluate J-NVM by implementing a persistent backend for Infinispan, an industrial-grade data store.Our experimental results, obtained with a TPC-B like benchmark and YCSB, show that J-NVM is consistently faster than other approaches at accessing NVMM in Java.
L'arrivée de la mémoire non-volatile (NVMM) sur le marché propose une alternative rapide et durable pour le stockage de données, avec des performances considérablement accrues par rapport aux supports traditionnels, à savoir SSD et disques durs. La NVMM est adressable à la granularité de l'octet, une caractéristique unique qui permet de maintenir des structures de données complexes par le biais d'instructions mémoires standards, tout en étant résistante aux pannes système et logiciels. Néanmoins, gérer correctement la persistance des données est bien plus compliquée que de simples manipulations mémoire. De plus, chaque bug en NVMM peut désormais compromettre l'intégrité des données ainsi que leur récupération, et il faut donc prendre grand soin quant à sa programmation. Ainsi, de nouvelles abstractions de programmation pour la persistance et l'intégration dans les langages et compilateurs sont nécessaires afin de faciliter l'usage de la mémoire non-volatile. Cette thèse se penche sur ce problème général. Nous expliquons comment intégrer la mémoire persistante dans les langages de programmation managés, et présentons J-NVM, un Framework pour accéder efficacement à la NVMM en Java. Avec J-NVM, nous montrons comment concevoir une interface d'accès simple, complète et efficace qui lie les spécificités de la persistance sur NVMM avec la programmation orientée objet. En particulier, J-NVM offre des fonctionnalités pour rendre durable des objets Java avec des sections de code atomiques en cas de panne. J-NVM est construit sans apporter de modifications à l'environnement d'exécution de Java, ce qui favorise sa portabilité aux divers environnements d'exécution de Java. En interne, J-NVM s'appuie sur des objets mandataires qui réalisent des accès directs à la NVMM, gérée comme une mémoire hors-tas. Ce canevas fournit également une bibliothèque de structures de données optimisées pour la NVMM qui restent cohérentes à la suite de redémarrages ou d'arrêts impromptus. Au cours de cette thèse, nous évaluons J-NVM en réimplémentant la couche de stockage d'Infinis pan, une base de données open-source de niveau industriel. Les résultats obtenus avec les benchmarks TPC-B et YCSB, montrent que J-NVM est systématiquement plus rapide que les autres approches existant à l'heure actuelle pour accéder à la NVMM en Java.
Fichier principal
Vignette du fichier
101547_LEFORT_2023_depot_final.pdf (1.92 Mo) Télécharger le fichier
Origine : Version validée par le jury (STAR)

Dates et versions

tel-04161004 , version 1 (13-07-2023)

Identifiants

  • HAL Id : tel-04161004 , version 1

Citer

Anatole Lefort. A Support for Persistent Memory in Java. Computer science. Institut Polytechnique de Paris, 2023. English. ⟨NNT : 2023IPPAS001⟩. ⟨tel-04161004⟩
148 Consultations
451 Téléchargements

Partager

Gmail Facebook X LinkedIn More