skip to main content
research-article
Open Access
Artifacts Available
Artifacts Evaluated & Functional

Object-oriented recovery for non-volatile memory

Published:24 October 2018Publication History
Skip Abstract Section

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.

Skip Supplemental Material Section

Supplemental Material

a153-cohen.webm

References

  1. H. Akinaga and H. Shima. 2010. Resistive Random Access Memory (ReRAM) Based on Metal Oxides. Proc. IEEE 98, 12 (Dec 2010), 2237–2251.Google ScholarGoogle Scholar
  2. Tim Andrews. 1992. The ONTOS object database. In Data Manag. 91 - DM91. Ashgate Publishing. http://dl.acm.org/citation. cfm?id=144139 Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle Scholar
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  10. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  12. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. Nachshon Cohen and Erez Petrank. 2013. Limitations of partial compaction. In 34th Program. Lang. Des. Implement. - PLDI’13, Vol. 48. ACM, 309. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Krzysztof Czurylo and Andy Rudoff. 2014. NVML: NVM Library. https://github.com/pmem/nvmlGoogle ScholarGoogle Scholar
  17. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. Sanjay Ghemawat and Jeff Dean. 2011. LevelDB.Google ScholarGoogle Scholar
  21. 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 ScholarGoogle Scholar
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  25. 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 ScholarGoogle Scholar
  26. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  27. 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 ScholarGoogle Scholar
  28. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  29. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  30. Charles Lamb, Gordon Landis, Jack Orenstein, and Dan Weinreb. 1991. The ObjectStore Database System. Commun. ACM 34, 10 (Oct. 1991), 50–63. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  32. 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 ScholarGoogle Scholar
  33. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  34. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  35. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  36. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  37. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  38. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  39. Oracle Corporation. 2017. NVM Direct Library. http://www.oracle.com/technetwork/oracle-labs/ open-nvm-download-2440119.htmlGoogle ScholarGoogle Scholar
  40. Team PaX. 2003. PaX address space layout randomization (ASLR).Google ScholarGoogle Scholar
  41. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  42. J. M. Robson. 1971. An Estimate of the Store Size Necessary for Dynamic Storage Allocation. J. ACM 18, 3 (jul 1971), 416–423. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  44. 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 ScholarGoogle Scholar
  45. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  46. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  47. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  48. 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 ScholarGoogle Scholar
  49. 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 ScholarGoogle ScholarCross RefCross Ref
  50. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  51. 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 ScholarGoogle Scholar

Index Terms

  1. Object-oriented recovery for non-volatile memory

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!