skip to main content
10.1145/3314221.3314608acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

AutoPersist: an easy-to-use Java NVM framework based on reachability

Published:08 June 2019Publication History

ABSTRACT

Byte-addressable, non-volatile memory (NVM) is emerging as a revolutionary memory technology that provides persistency, near-DRAM performance, and scalable capacity. To facilitate its use, many NVM programming models have been proposed. However, most models require programmers to explicitly specify the data structures or objects that should reside in NVM. Such requirement increases the burden on programmers, complicates software development, and introduces opportunities for correctness and performance bugs.

We believe that requiring programmers to identify the data structures that should reside in NVM is untenable. Instead, programmers should only be required to identify durable roots - the entry points to the persistent data structures at recovery time. The NVM programming framework should then automatically ensure that all the data structures reachable from these roots are in NVM, and stores to these data structures are persistently completed in an intuitive order.

To this end, we present a new NVM programming framework, named AutoPersist, that only requires programmers to identify durable roots. AutoPersist then persists all the data structures that can be reached from the durable roots in an automated and transparent manner. We implement AutoPersist as a thread-safe extension to the Java language and perform experiments with a variety of applications running on Intel Optane DC persistent memory. We demonstrate that AutoPersist requires minimal code modifications, and significantly outperforms expert-marked Java NVM applications.

Skip Supplemental Material Section

Supplemental Material

p316-shull.webm

webm

82.6 MB

3314221.3314608.mp4

mp4

54.9 MB

References

  1. Data Nucleus. http://www.datanucleus.org/.Google ScholarGoogle Scholar
  2. H2 Database Engine. https://www.h2database.com.Google ScholarGoogle Scholar
  3. Intel Optane Technology. https://www.intel.com/content/www/us/en/architecture-and-technology/intel-optane-technology.html.Google ScholarGoogle Scholar
  4. NVM Programming Model v1.2. https://www.snia.org/sites/default/files/technical_work/final/NVMProgrammingModel_v1.2.pdf.Google ScholarGoogle Scholar
  5. PCollections. https://pcollections.org/.Google ScholarGoogle Scholar
  6. Persistent Memory Development Kit. http://pmem.io/pmdk/.Google ScholarGoogle Scholar
  7. Pmemkv: Key/Value Datastore for Persistent Memory. https://github.com/pmem/pmemkv.Google ScholarGoogle Scholar
  8. QuickCached. https://github.com/QuickServerLab/QuickCached.Google ScholarGoogle Scholar
  9. Intel 64 and IA-32 Architectures Software Developer's Manual. https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-\instruction-set-reference-manual-325383.pdf.Google ScholarGoogle Scholar
  10. 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 ScholarCross RefCross Ref
  11. Shoaib Akram, Jennifer B. Sartor, Kathryn S. McKinley, and Lieven Eeckhout. 2018. Write-rationing Garbage Collection for Hybrid Memories. In Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2018). ACM, New York, NY, USA, 62-77.Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Malcolm Atkinson, Ken Chisholm, and Paul Cockshott. 1982. PS-algol: An Algol with a Persistent Heap. SIGPLAN Not. 17, 7 (July 1982), 24-31. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Malcolm Atkinson and Mick Jordan. 2000. A Review of the Rationale and Architectures of PJama: A Durable, Flexible, Evolvable and Scalable Orthogonally Persistent Programming Platform. Technical Report. Mountain View, CA, USA. Google ScholarGoogle Scholar
  14. 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
  15. David F. Bacon, Perry Cheng, and V. T. Rajan. 2003. The Metronome: A Simpler Approach to Garbage Collection in Real-Time Systems. In On The Move to Meaningful Internet Systems 2003: OTM 2003 Workshops, OTM Confederated International Workshops, HCI-SWWA, IPW, JTRES, WORM, WMS, and WRSM 2003, Catania, Sicily, Italy, November 3-7, 2003, Proceedings. 466-478.Google ScholarGoogle Scholar
  16. Stephen Blackburn and John N. Zigman. 1999. Concurrency - The Fly in the Ointment?. In Proceedings of the 8th International Workshop on Persistent Object Systems (POS8) and Proceedings of the 3rd International Workshop on Persistence and Java (PJW3): Advances in Persistent Object Systems. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 250-258. http://dl.acm.org/citation.cfm?id=648123.747394. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Stephen M. Blackburn, Sharad Singhai, Matthew Hertz, Kathryn S. McKinley, and J. Eliot B. Moss. 2001. Pretenuring for Java. In Proceedings of the 16th ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications (OOPSLA '01). ACM, New York, NY, USA, 342-352. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Luc Bläser. 2007. Persistent Oberon: A Programming Language with Integrated Persistence. In Programming Languages and Systems, Zhong Shao (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 71-85. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Hans-J. Boehm and Dhruva R. Chakrabarti. 2016. Persistence Programming Models for Non-volatile Memory. In Proceedings of the 2016 ACM SIGPLAN International Symposium on Memory Management (ISMM 2016). ACM, New York, NY, USA, 55-67. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Dhruva R. Chakrabarti, Hans-J. Boehm, and Kumud Bhandari. 2014. Atlas: Leveraging Locks for Non-volatile Memory Consistency. In Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & Applications (OOPSLA '14). ACM, NewYork, NY, USA, 433-452. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Joel Coburn, Adrian M. Caulfield, Ameen Akel, Laura M. Grupp, Rajesh K. Gupta, Ranjit Jhala, and Steven Swanson. 2011. NV-Heaps: Making Persistent Objects Fast and Safe with Next-generation, Nonvolatile Memories. In Proceedings of the Sixteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XVI). ACM, New York, NY, USA, 105-118. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Nachshon Cohen, David T. Aksun, and James R. Larus. 2018. Object-oriented recovery for non-volatile memory. Proceedings of the ACM on Programming Languages, Vol. 2, OOPSLA (2018), 153:1-153:22. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Jeremy Condit, Edmund B. Nightingale, Christopher Frost, Engin Ipek, Benjamin Lee, Doug Burger, and Derrick Coetzee. 2009. Better I/O Through Byte-addressable, Persistent Memory. In Proceedings of the ACM SIGOPS 22nd Symposium on Operating Systems Principles (SOSP '09). ACM, New York, NY, USA, 133-146.Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Brian F. Cooper, Adam Silberstein, Erwin Tam, Raghu Ramakrishnan, and Russell Sears. 2010. Benchmarking Cloud Serving Systems with YCSB. In Proceedings of the 1st ACM Symposium on Cloud Computing (SoCC '10). ACM, New York, NY, USA, 143-154. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Joel E. Denny, Seyong Lee, and Jeffrey S. Vetter. 2016. NVL-C: Static Analysis Techniques for Efficient, Correct Programming of Non-Volatile Main Memory Systems. In Proceedings of the 25th ACM International Symposium on High-Performance Parallel and Distributed Computing (HPDC '16). ACM, New York, NY, USA, 125-136. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. David Detlefs, Christine Flood, Steve Heller, and Tony Printezis. 2004. Garbage-first Garbage Collection. In Proceedings of the 4th International Symposium on Memory Management (ISMM '04). ACM, New York, NY, USA, 37-48. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Edsger W. Dijkstra, Leslie Lamport, A. J. Martin, C. S. Scholten, and E. F. M. Steffens. 1978. On-the-fly Garbage Collection: An Exercise in Cooperation. Commun. ACM 21, 11 (Nov. 1978), 966-975. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. K. Doshi, E. Giles, and P. Varman. 2016. Atomic persistence for SCM with a non-intrusive backend controller. In 2016 IEEE International Symposium on High Performance Computer Architecture (HPCA). 77-89.Google ScholarGoogle Scholar
  29. Christine H. Flood, Roman Kennke, Andrew Dinn, Andrew Haley, and Roland Westrelin. 2016. Shenandoah: An Open-source Concurrent Compacting Garbage Collector for OpenJDK. In Proceedings of the 13th International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools (PPPJ '16). ACM, New York, NY, USA, Article 13, 9 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Ellis Giles, Kshitij Doshi, and Peter Varman. Hardware Transactional Persistent Memory. arXiv:cs.DC/1806.01108.Google ScholarGoogle Scholar
  31. Vaibhav Gogte, Stephan Diestelhorst, William Wang, Satish Narayanasamy, Peter M. Chen, and Thomas F. Wenisch. 2018. Persistency for Synchronization-free Regions. In Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2018). ACM, New York, NY, USA, 46-61. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. James Gosling, Bill Joy, Guy L. Steele, Gilad Bracha, and Alex Buckley. 2014. The Java Language Specification, Java SE 8 Edition (1st ed.). Addison-Wesley Professional. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Samuel Z. Guyer, Kathryn S. McKinley, and Daniel Frampton. 2006. Free-Me: A Static Analysis for Automatic Individual Object Reclamation. In Proceedings of the 27th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '06). ACM, New York, NY, USA, 364-375. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Antony L. Hosking and Jiawan Chen. 1999. PM3: An Orthogonal Persistent Systems Programming Language - Design, Implementation, Performance. In Proceedings of the 25th International Conference on Very Large Data Bases (VLDB '99). Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 587-598. http://dl.acm.org/citation.cfm?id=645925.671503. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Terry Ching-Hsiang Hsu, Helge Brügner, Indrajit Roy, Kimberly Keeton, and Patrick Eugster. 2017. NVthreads: Practical Persistence for Multi-threaded Applications. In Proceedings of the Twelfth European Conference on Computer Systems (EuroSys '17). ACM, New York, NY, USA, 468-482. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Jian Huang, Karsten Schwan, and Moinuddin K. Qureshi. 2014. NVRAM-aware Logging in Transaction Systems. Proc. VLDB Endow. 8, 4 (Dec. 2014), 389-400. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Intel. 3D XPoint: A Breakthrough in Non-Volatile Memory Technology. https://www.intel.com/content/www/us/en/architecture-and-technology/intel-micron-3d-xpoint-webcast.html.Google ScholarGoogle Scholar
  38. Joseph Izraelevitz, Hammurabi Mendes, and Michael L. Scott. 2016. Linearizability of Persistent Memory Objects Under a Full-System-Crash Failure Model. In Distributed Computing, Cyril Gavoille and David Ilcinkas (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 313-327.Google ScholarGoogle Scholar
  39. Mick Jordan and Malcolm Atkinson. 2000. Orthogonal Persistence for the Java[Tm] Platform: Specification and Rationale. Technical Report. Mountain View, CA, USA. Google ScholarGoogle Scholar
  40. A. Joshi, V. Nagarajan, S. Viglas, and M. Cintra. 2017. ATOM: Atomic Durability in Non-volatile Memory through Hardware Logging. In 2017 IEEE International Symposium on High Performance Computer Architecture (HPCA). 361-372.Google ScholarGoogle Scholar
  41. Aasheesh Kolli, Vaibhav Gogte, Ali Saidi, Stephan Diestelhorst, Peter M. Chen, Satish Narayanasamy, and Thomas F. Wenisch. 2017. Language-level Persistency. In Proceedings of the 44th Annual International Symposium on Computer Architecture (ISCA '17). ACM, New York, NY, USA, 481-493. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Aasheesh Kolli, Steven Pelley, Ali Saidi, Peter M. Chen, and Thomas F. Wenisch. 2016. High-Performance Transactions for Persistent Memories. In Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '16). ACM, New York, NY, USA, 399-411. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Brian Lewis, Bernd Mathiske, and Neal M. Gafter. 2001. Architecture of the PEVM: A High-Performance Orthogonally Persistent Java Virtual Machine. In Revised Papers from the 9th International Workshop on Persistent Object Systems (POS-9). Springer-Verlag, London, UK, UK, 18-33. http://dl.acm.org/citation.cfm?id=648124.747405.Google ScholarGoogle Scholar
  44. Y. Lu, J. Shu, L. Sun, and O. Mutlu. 2014. Loose-Ordering Consistency for persistent memory. In 2014 IEEE 32nd International Conference on Computer Design (ICCD). 216-223.Google ScholarGoogle Scholar
  45. Jeremy Manson, William Pugh, and Sarita V. Adve. 2005. The Java Memory Model. In Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '05). ACM, NewYork, NY, USA, 378-391. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Virendra Marathe, Achin Mishra, Amee Trivedi, Yihe Huang, Faisal Zaghloul, Sanidhya Kashyap, Margo Seltzer, Tim Harris, Steve Byan, Bill Bridge, and Dave Dice. Persistent Memory Transactions. arXiv:cs.DC/1804.00701.Google ScholarGoogle Scholar
  47. Alonso Marquez, Stephen Blackburn, Gavin Mercer, and John N. Zigman. 2001. Implementing Orthogonally Persistent Java. In Revised Papers from the 9th International Workshop on Persistent Object Systems (POS-9). Springer-Verlag, London, UK, UK, 247-261. http://dl.acm.org/citation.cfm?id=648124.747395. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. 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 Proceedings of the Twenty-Second International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '17). ACM, New York, NY, USA, 135-148. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Ismail Oukid, Johan Lasperas, Anisoara Nica, Thomas Willhalm, and Wolfgang Lehner. 2016. FPTree: A Hybrid SCM-DRAM Persistent and Concurrent B-Tree for Storage Class Memory. In Proceedings of the 2016 International Conference on Management of Data (SIGMOD '16). ACM, New York, NY, USA, 371-386.Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Steven Pelley, Peter M. Chen, and Thomas F. Wenisch. 2014. Memory Persistency. In Proceeding of the 41st Annual International Symposium on Computer Architecuture (ISCA '14). IEEE Press, Piscataway, NJ, USA, 265-276. http://dl.acm.org/citation.cfm?id=2665671.2665712. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. Filip Pizlo, Daniel Frampton, Erez Petrank, and Bjarne Steensgaard. 2007. Stopless: a real-time garbage collector for multiprocessors. In Proceedings of the 6th International Symposium on Memory Management, ISMM 2007, Montreal, Quebec, Canada, October 21-22, 2007. 159-172. Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. S. Raoux, G. W. Burr, M. J. Breitwisch, C. T. Rettner, Y. C. Chen, R. M. Shelby, M. Salinga, D. Krebs, S. H. Chen, H. L. Lung, and C. H. Lam. 2008. Phase-change random access memory: A scalable technology. IBM Journal of Research and Development 52, 4.5 (July 2008), 465-479. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Jinglei Ren, Qingda Hu, Samira Khan, and Thomas Moscibroda. 2017. Programming for Non-Volatile Main Memory Is Hard. In Proceedings of the 8th Asia-Pacific Workshop on Systems (APSys '17). ACM, New York, NY, USA, Article 13, 8 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. Joel E. Richardson, Michael J. Carey, and Daniel T. Schuh. 1993. The Design of the E Programming Language. ACM Trans. Program. Lang. Syst. 15, 3 (July 1993), 494-534.Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. Seunghee Shin, Satish Kumar Tirukkovalluri, James Tuck, and Yan Solihin. 2017. Proteus: A Flexible and Fast Software Supported Hardware Logging Approach for NVM. In Proceedings of the 50th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO-50 '17). ACM, New York, NY, USA, 178-190. Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. Thomas Shull, Jian Huang, and Josep Torrellas. 2018. Defining a High-level Programming Model for Emerging NVRAM Technologies. In Proceedings of the 15th International Conference on Managed Languages & Runtimes (ManLang '18). ACM, New York, NY, USA, Article 11, 7 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. Thomas Shull, Jian Huang, and Josep Torrellas. 2019. QuickCheck: Using Speculation to Reduce the Overhead of Checks in NVM Frameworks. In Proceedings of the 15th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments (VEE'19).Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. Vivek Singhal, Sheetal V. Kakkad, and Paul R. Wilson. 1993. Texas: An Efficient, Portable Persistent Store. In Persistent Object Systems, Antonio Albano and Ron Morrison (Eds.). Springer London, London, 11-33.Google ScholarGoogle Scholar
  59. Gil Tene, Balaji Iyengar, and Michael Wolf. 2011. C4: The Continuously Concurrent Compacting Collector. In Proceedings of the International Symposium on Memory Management (ISMM '11). ACM, New York, NY, USA, 79-88. Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. Haris Volos, Andres Jaan Tack, and Michael M. Swift. 2011. Mnemosyne: Lightweight Persistent Memory. In Proceedings of the Sixteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XVI). ACM, New York, NY, USA, 91-104.Google ScholarGoogle Scholar
  61. Christian Wimmer, Michael Haupt, Michael L. Van De Vanter, Mick Jordan, Laurent Daynès, and Douglas Simon. 2013. Maxine: An Approachable Virtual Machine for, and in, Java. ACM Trans. Archit. Code Optim. 9, 4, Article 30 (Jan. 2013), 24 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. Mingyu Wu, Ziming Zhao, Haoyu Li, Heting Li, Haibo Chen, Binyu Zang, and Haibing Guan. 2018. Espresso: Brewing Java For More Non-Volatility with Non-volatile Memory. In Proceedings of the Twenty-Third International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '18). ACM, New York, NY, USA, 70-83. Google ScholarGoogle ScholarDigital LibraryDigital Library
  63. Guoqing Xu. 2013. Resurrector: A Tunable Object Lifetime Profiling Technique for Optimizing Real-world Programs. In Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages & Applications (OOPSLA '13). ACM, New York, NY, USA, 111-130. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. AutoPersist: an easy-to-use Java NVM framework based on reachability

        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
        • Published in

          cover image ACM Conferences
          PLDI 2019: Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation
          June 2019
          1162 pages
          ISBN:9781450367127
          DOI:10.1145/3314221

          Copyright © 2019 ACM

          Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 8 June 2019

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • research-article

          Acceptance Rates

          Overall Acceptance Rate406of2,067submissions,20%

          Upcoming Conference

          PLDI '24

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader