Abstract
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.
Supplemental Material
- H. Akinaga and H. Shima. 2010. Resistive Random Access Memory (ReRAM) Based on Metal Oxides. Proc. IEEE 98, 12 (Dec 2010), 2237–2251.Google Scholar
- Tim Andrews. 1992. The ONTOS object database. In Data Manag. 91 - DM91. Ashgate Publishing. http://dl.acm.org/citation. cfm?id=144139 Google Scholar
Digital Library
- Timothy Andrews and Craig Harris. 1987. Combining language and database advances in an object-oriented development environment. In Object Oriented Program. Syst. Lang. Appl. - OOPSLA ’87. ACM, 430–440. Google Scholar
Digital Library
- Joy Arulraj and Andrew Pavlo. 2015. Let’s Talk About Storage & Recovery Methods for Non-Volatile Memory Database Systems. In 2015 Int. Conf. Manag. Data. 707–722. Google Scholar
Digital Library
- Malcolm Atkinson and Ronald Morrison. 1995. Orthogonally Persistent Object Systems. The VLDB Journal 4, 3 (July 1995), 319–402. http://dl.acm.org/citation.cfm?id=615224.615226 Google Scholar
Digital Library
- M. P. Atkinson, P. J. Bailey, K. J. Chisholm, P. W. Cockshott, and R. Morrison. 1983. An Approach to Persistent Programming. Comput. J. 26, 4 (1983), 360–365.Google Scholar
- Katelin A. Bailey, Peter Hornyack, Luis Ceze, Steven D. Gribble, and Henry M. Levy. 2013. Exploring storage class memory with key value stores. In 1st Work. Interact. NVM/FLASH with Oper. Syst. Workload. - INFLOW ’13. ACM, 1–8. Google Scholar
Digital Library
- A. Bensoussan, C. T. Clingen, and R. C. Daley. 1972. The Multics virtual memory: concepts and design. Commun. ACM 15, 5 (may 1972), 308–318. Google Scholar
Digital Library
- Kumud Bhandari, Dhruva R. Chakrabarti, and Hans-J. Boehm. 2016. Makalu: fast recoverable allocation of non-volatile memory. In 21st Object Oriented Program. Syst. Lang. Appl. - OOPSLA 20116. ACM, 677–694. Google Scholar
Digital Library
- Dhruva R Chakrabarti, Hans-J. Boehm, and Kumud Bhandari. 2014. Atlas: Leveraging Locks for Non-volatile Memory Consistency. In 19st Conf. Object Oriented Program. Syst. Lang. Appl. - OOPSLA 2014. ACM, 433–452. Google Scholar
Digital Library
- Andreas Chatzistergiou, Marcelo Cintra, and Stratis D. Viglas. 2015. REWIND: Recovery Write-Ahead System for In-Memory Non-Volatile Data-Structures. Proc. VLDB Endow. 8, 5 (Jan. 2015), 497–508. Google Scholar
Digital Library
- Terry Ching, Hsiang Hsu, Helge Brügner, Indrajit Roy, Kimberly Keeton, and Patrick Eugster. 2017. NVthreads: Practical Persistence for Multi-threaded Applications. In 12th Eur. Conf. Comput. Syst. - EuroSys ’17. ACM, 468–482. Google Scholar
Digital Library
- Joel Coburn, Am Caulfield, and A Akel. 2011. NV-Heaps: making persistent objects fast and safe with next-generation, non-volatile memories. In 16th Archit. Support Program. Lang. Oper. Syst.- ASPLOS ’11. ACM, 105–118. Google Scholar
Digital Library
- Nachshon Cohen, Michal Friedman, and James R Larus. 2017. Efficient Logging in Non-Volatile Memory by Exploiting Coherency Protocols. Proc. ACM Program. Lang. - PACMPL OOPSLA, Article 67 (Oct. 2017), 24 pages. Google Scholar
Digital Library
- Nachshon Cohen and Erez Petrank. 2013. Limitations of partial compaction. In 34th Program. Lang. Des. Implement. - PLDI’13, Vol. 48. ACM, 309. Google Scholar
Digital Library
- Krzysztof Czurylo and Andy Rudoff. 2014. NVML: NVM Library. https://github.com/pmem/nvmlGoogle Scholar
- Izzat El Hajj, Thomas B. Jablin, Dejan Milojicic, and Wen-mei Hwu. 2017. SAVI objects: sharing and virtuality incorporated. In Object Oriented Program. Syst. Lang. Appl. - OOPSLA’17, Vol. 1. ACM, 1–24. Google Scholar
Digital Library
- Pascal Felber, Christof Fetzer, and Torvald Riegel. 2008. Dynamic performance tuning of word-based software transactional memory. In 13th Princ. Pract. Parallel Program. - PPoPP ’08. ACM, 237. Google Scholar
Digital Library
- Michal Friedman, Maurice Herlihy, Virendra Marathe, and Erez Petrank. 2018. A Persistent Lock-free Queue for Non-volatile Memory. In 23th Princ. Pract. Parallel Program. - PPoPP ’18. ACM, 28–40. Google Scholar
Digital Library
- Sanjay Ghemawat and Jeff Dean. 2011. LevelDB.Google Scholar
- E. R. Giles, K. Doshi, and P. Varman. 2015. SoftWrAP: A lightweight framework for transactional support of storage class memory. In 31st Mass Storage Systems and Technologies - MSST ’15. 1–14.Google Scholar
- Aakash Goel, Bhuwan Chopra, Ciprian Gerea, Dhruv Mátáni, Josh Metzler, Fahim Ul Haq, and Janet Wiener. 2014. Fast database restarts at facebook. In Int. Conf. Manag. Data - SIGMOD ’14. ACM, 541–549. Google Scholar
Digital Library
- Antony L. Hosking and Jiawan Chen. 1999. Mostly-copying reachability-based orthogonal persistence. In 14th Object Oriented Program. Syst. Lang. Appl. - OOPSLA ’99. ACM, 382–398. Google Scholar
Digital Library
- Antony L. Hosking and J. Eliot B. Moss. 1993. Protection traps and alternatives for memory management of an object-oriented language. In 14th Symp. Oper. Syst. Princ. - SOSP ’93. ACM, 106–119. Google Scholar
Digital Library
- M. Hosomi, H. Yamagishi, T. Yamamoto, K. Bessho, Y. Higo, K. Yamane, H. Yamada, M. Shoji, H. Hachino, C. Fukumoto, H. Nagao, and H. Kano. 2005. A novel nonvolatile memory with spin torque transfer magnetization switching: spin-ram. In IEEE Int. Devices Meet. IEEE, 459–462.Google Scholar
- Qingda Hu, Jinglei Ren, Anirudh Badam, and Thomas Moscibroda. 2017. Log-Structured Non-Volatile Main Memory. In Annu. Tech. Conf. - ATC 17. USENIX. http://jinglei.ren.systems/lsnvmm{_}atc17.pdf Google Scholar
Digital Library
- Joseph Izraelevitz, Hammurabi Mendes, and Michael L. Scott. 2016. Linearizability of Persistent Memory Objects Under a Full-System-Crash Failure Model. In 30th Int. Symp. Distrib. Comput. - ISDC ’16. 313–327.Google Scholar
- Alfons Kemper and Guido Moerkotte. 1994. Object-oriented Database Management: Applications in Engineering and Computer Science. Prentice-Hall, Inc., Upper Saddle River, NJ, USA. Google Scholar
Digital Library
- Aasheesh Kolli, Steven Pelley, Ali Saidi, Peter M. Chen, and Thomas F. Wenisch. 2016. High-Performance Transactions for Persistent Memories. In 21nd Archit. Support Program. Lang. Oper. Syst. - ASPLOS ’16. ACM, 399–411. Google Scholar
Digital Library
- Charles Lamb, Gordon Landis, Jack Orenstein, and Dan Weinreb. 1991. The ObjectStore Database System. Commun. ACM 34, 10 (Oct. 1991), 50–63. Google Scholar
Digital Library
- Benjamin C. Lee, Engin Ipek, Onur Mutlu, and Doug Burger. 2009. Architecting phase change memory as a scalable dram alternative. In 36th Int. Symp. Comput. Archit. - ISCA ’09. ACM, 2. Google Scholar
Digital Library
- Linux. 2014. DAX: Page cache bypass for filesystems on memory storage. https://www.kernel.org/doc/Documentation/ filesystems/dax.txthttps://lwn.net/Articles/618064/Google Scholar
- Mengxing Liu, Mingxing Zhang, Kang Chen, Xuehai Qian, Yongwei Wu, Weimin Zheng, and Jinglei Ren. 2017. DudeTM: Building Durable Transactions with Decoupling for Persistent Memory. In 22nd Archit. Support Program. Lang. Oper. Syst. - ASPLOS ’17. ACM, 329–343. Google Scholar
Digital Library
- Stephen Magill, Michael Hicks, Suriya Subramanian, and Kathryn S. McKinley. 2012. Automating object transformations for dynamic software updating. In Object Oriented Program. Syst. Lang. Appl. - OOPSLA ’12. ACM Press, New York, New York, USA, 265. Google Scholar
Digital Library
- Virendra J Marathe, Margo Seltzer, Steve Byan, and Tim Harris. 2017. Persistent Memcached: Bringing Legacy Code to Byte-Addressable Persistent Memory. In HotStorage ’17. USENIX. https://www.usenix.org/system/files/conference/ hotstorage17/hotstorage17-paper-marathe.pdf Google Scholar
Digital Library
- Amirsaman Memaripour, Anirudh Badam, Amar Phanishayee, Yanqi Zhou, Ramnatthan Alagappan, Karin Strauss, and Steven Swanson. 2017. Atomic In-place Updates for Non-volatile Main Memories with Kamino-Tx. In 12th Eur. Conf. Comput. Syst. - EuroSys ’17. ACM, 499–512. Google Scholar
Digital Library
- J. Eliot B. Moss. 1992. Working with persistent objects: to swizzle or not to swizzle. IEEE Trans. Soft. Eng. 18, 8 (1992), 657–673. Google Scholar
Digital Library
- Sanketh Nalli, Swapnil Haria, Mark D. Hill, Michael M. Swift, Haris Volos, and Kimberly Keeton. 2017. An Analysis of Persistent Memory Use with WHISPER. In 22nd Archit. Support Program. Lang. Oper. Syst. - ASPLOS ’17. ACM, 135–148. Google Scholar
Digital Library
- Oracle Corporation. 2017. NVM Direct Library. http://www.oracle.com/technetwork/oracle-labs/ open-nvm-download-2440119.htmlGoogle Scholar
- Team PaX. 2003. PaX address space layout randomization (ASLR).Google Scholar
- Moinuddin K. Qureshi, Vijayalakshmi Srinivasan, and Jude A. Rivers. 2009. Scalable High Performance Main Memory System Using Phase-change Memory Technology. In 36st Int. Symp. Comput. Archit. - ISCA ’09. ACM, 24–33. Google Scholar
Digital Library
- J. M. Robson. 1971. An Estimate of the Store Size Necessary for Dynamic Storage Allocation. J. ACM 18, 3 (jul 1971), 416–423. Google Scholar
Digital Library
- David Schwalb, Markus Dreseler, Matthias Uflacker, and Hasso Plattner. 2015. NVC-Hashmap: A Persistent and Concurrent Hashmap For Non-Volatile Memories. In 3rd VLDB Work. In-Memory Data Mangement Anal. - IMDM ’15. ACM, 1–8. Google Scholar
Digital Library
- Vivek Singhal, Sheetal V. Kakkad, and Paul R. Wilson. 1993. Texas: An Efficient, Portable Persistent Store. In Work. in Computing. Springer, London, 11–33.Google Scholar
- Valery Soloviev. 1992. An Overview of Three Commercial Object-oriented Database Management Systems: ONTOS, ObjectStore, and O2. SIGMOD Rec. 21, 1 (March 1992), 93–104. Google Scholar
Digital Library
- Haris Volos, Andres Jaan Tack, and Michael M. Swift. 2011. Mnemosyne: Lightweight Persistent Memory. In 16th Archit. Support Program. Lang. Oper. Syst. - ASPLOS ’11. ACM, 91–104. Google Scholar
Digital Library
- Seth J. White and David J. DeWitt. 1992. A Performance Study of Alternative Object Faulting and Pointer Swizzling Strategies. In 18th Very Large Data Bases – VLDB. Morgan Kaufmann Publishers Inc., 419–431. http://dl.acm.org/citation.cfm?id= 645918.672341 Google Scholar
Digital Library
- P.R. Wilson and S.V. Kakkad. 1992. Pointer swizzling at page fault time: efficiently and compatibly supporting huge address spaces on standard hardware. In 2nd Work. Object Orientat. Oper. Syst. IEEE Comput. Soc. Press, 364–377.Google Scholar
- H. . P. Wong, H. Lee, S. Yu, Y. Chen, Y. Wu, P. Chen, B. Lee, F. T. Chen, and M. Tsai. 2012. Metal-Oxide RRAM. Proc. IEEE 100, 6 (June 2012), 1951–1970.Google Scholar
Cross Ref
- Jun Yang, Qingsong Wei, Cheng Chen, Chundong Wang, Khai Leong Yong, and Bingsheng He. 2015. NV-Tree: Reducing Consistency Cost for NVM-based Single Level Systems. In 13th File and Storage Tech. - FAST ’15. USENIX, 167–181. https://www.usenix.org/conference/fast15/technical-sessions/presentation/yang Google Scholar
Digital Library
- Jie Zhou, Yanyan Shen, Sumin Li, and Linpeng Huang. 2016. Revisiting Hash Table Design for Phase Change Memory. In 3rd IEEE/ACM Big Data Comput. Appl. Technol. - BDCAT ’16. ACM, 227–236.Google Scholar
Index Terms
Object-oriented recovery for non-volatile memory
Recommendations
What Is Object-Oriented Programming?
The meaning of the term 'object oriented' is examined in the context of the general-purpose programming language C++. This choice is made partly to introduce C++ and partly because C++ is one of the few languages that supports data abstraction, object-...
A Practical Comparison of Two Object-Oriented Languages
The author compares two very different object-oriented programming languages, Flavors and C++, with respect to their merits and how design decisions in each language influence various aspects of programming. The fundamental difference between the two ...
Redesign the Memory Allocator for Non-Volatile Main Memory
Special Issue on Hardware and Algorithms for Learning On-a-chip and Special Issue on Alternative Computing SystemsThe non-volatile memory (NVM) has the merits of byte-addressability, fast speed, persistency and low power consumption, which make it attractive to be used as main memory. Commonly, user process dynamically acquires memory through memory allocators. ...






Comments