skip to main content
research-article
Open access

Object-oriented recovery for non-volatile memory

Published: 24 October 2018 Publication History

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.

Supplementary Material

WEBM File (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.
[2]
Tim Andrews. 1992. The ONTOS object database. In Data Manag. 91 - DM91. Ashgate Publishing. http://dl.acm.org/citation. cfm?id=144139
[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.
[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.
[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
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[15]
Nachshon Cohen and Erez Petrank. 2013. Limitations of partial compaction. In 34th Program. Lang. Des. Implement. - PLDI’13, Vol. 48. ACM, 309.
[16]
Krzysztof Czurylo and Andy Rudoff. 2014. NVML: NVM Library. https://github.com/pmem/nvml
[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.
[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.
[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.
[20]
Sanjay Ghemawat and Jeff Dean. 2011. LevelDB.
[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.
[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.
[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.
[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.
[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.
[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
[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.
[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.
[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.
[30]
Charles Lamb, Gordon Landis, Jack Orenstein, and Dan Weinreb. 1991. The ObjectStore Database System. Commun. ACM 34, 10 (Oct. 1991), 50–63.
[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.
[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/
[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.
[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.
[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
[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.
[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.
[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.
[39]
Oracle Corporation. 2017. NVM Direct Library. http://www.oracle.com/technetwork/oracle-labs/ open-nvm-download-2440119.html
[40]
Team PaX. 2003. PaX address space layout randomization (ASLR).
[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.
[42]
J. M. Robson. 1971. An Estimate of the Store Size Necessary for Dynamic Storage Allocation. J. ACM 18, 3 (jul 1971), 416–423.
[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.
[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.
[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.
[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.
[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
[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.
[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.
[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
[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.

Cited By

View all

Index Terms

  1. Object-oriented recovery for non-volatile memory

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image Proceedings of the ACM on Programming Languages
    Proceedings of the ACM on Programming Languages  Volume 2, Issue OOPSLA
    November 2018
    1656 pages
    EISSN:2475-1421
    DOI:10.1145/3288538
    Issue’s Table of Contents
    This work is licensed under a Creative Commons Attribution International 4.0 License.

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 24 October 2018
    Published in PACMPL Volume 2, Issue OOPSLA

    Permissions

    Request permissions for this article.

    Check for updates

    Badges

    Author Tags

    1. C++
    2. NVM
    3. non-volatile memory
    4. object-oriented programming
    5. programming model

    Qualifiers

    • Research-article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)181
    • Downloads (Last 6 weeks)18
    Reflects downloads up to 26 Jan 2025

    Other Metrics

    Citations

    Cited By

    View all

    View Options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Login options

    Full Access

    Figures

    Tables

    Media

    Share

    Share

    Share this Publication link

    Share on social media