Object-Oriented Recovery for Non-volatile Memory

被引:13
作者
Cohen N. [1 ]
Aksun D.T. [1 ]
Larus J.R. [1 ]
机构
[1] EPFL, Lausanne
关键词
C++; Non-volatile memory; NVM; Object-oriented programming; Programming model;
D O I
10.1145/3276523
中图分类号
学科分类号
摘要
New non-volatile memory (NVM) technologies enable direct, durable storage of data in an application's heap. Durable, randomly accessible memory facilitates the construction of applications that do not lose data at system shutdown or power failure. Existing NVM programming frameworks provide mechanisms to consistently capture a running application's state. They do not, however, fully support object-oriented languages or ensure that the persistent heap is consistent with the environment when the application is restarted. In this paper, we propose a new NVM language extension and runtime system that supports object-oriented NVM programming and avoids the pitfalls of prior approaches. At the heart of our technique is object reconstruction, which transparently restores and reconstructs a persistent object's state during program restart. It is implemented in NVMReconstruction, a Clang/LLVM extension and runtime library that provides: (i) transient fields in persistent objects, (ii) support for virtual functions and function pointers, (iii) direct representation of persistent pointers as virtual addresses, and (iv) type-specific reconstruction of a persistent object during program restart. In addition, NVMReconstruction supports updating an application's code, even if this causes objects to expand, by providing object migration. NVMReconstruction also can compact the persistent heap to reduce fragmentation. In experiments, we demonstrate the versatility and usability of object reconstruction and its low runtime performance cost. © 2018 Copyright held by the owner/author(s).
引用
收藏
相关论文
共 51 条
  • [1] Akinaga H., Shima H., Resistive random access memory (RERAM) based on metal oxides, Proc. IEEE, 98, 12, pp. 2237-2251, (2010)
  • [2] Andrews T., The ONTOS object database, Data Manag, (1992)
  • [3] Andrews T., Harris C., Combining language and database advances in an object-oriented development environment, Object Oriented Program. Syst. Lang. Appl. - OOPSLA'87, pp. 430-440, (1987)
  • [4] Arulraj J., Pavlo A., Let's talk about storage & recovery methods for non-volatile memory database systems, 2015 Int. Conf. Manag. Data., pp. 707-722, (2015)
  • [5] Atkinson M., Morrison R., Orthogonally persistent object systems, The VLDB Journal, 4, 3, pp. 319-402, (1995)
  • [6] Atkinson M.P., Bailey P.J., Chisholm K.J., Cockshott P.W., Morrison R., An approach to persistent programming, Comput. J., 26, 4, pp. 360-365, (1983)
  • [7] Bailey K.A., Hornyack P., Ceze L., Gribble S.D., Levy H.M., Exploring storage class memory with key value stores, 1st Work. Interact. NVM/FLASH with Oper. Syst. Workload. - INFLOW'13, pp. 1-8, (2013)
  • [8] Bensoussan A., Clingen C.T., Daley R.C., The Multics virtual memory: Concepts and design, Commun. ACM, 15, 5, pp. 308-318, (1972)
  • [9] Bhandari K., Chakrabarti D.R., Boehm H.J., Makalu: Fast recoverable allocation of non-volatile memory, 21st Object Oriented Program. Syst. Lang. Appl. - OOPSLA 20116, pp. 677-694, (2016)
  • [10] Chakrabarti D.R., Boehm H.J., Bhandari K., AtlaS: Leveraging Locks for Non-volatile Memory Consistency, 19st Conf. Object Oriented Program. Syst. Lang. Appl. - OOPSLA 2014, pp. 433-452, (2014)