skip to main content
research-article
Public Access

LibPM: Simplifying Application Usage of Persistent Memory

Published:04 December 2018Publication History
Skip Abstract Section

Abstract

Persistent Memory devices present properties that are uniquely different from prior technologies for which applications have been built. Unfortunately, the conventional approach to building applications fail to either efficiently utilize these new devices or provide programmers a seamless development experience. We have built LibPM, a Persistent Memory Library that implements an easy-to-use container abstraction for consuming PM. LibPM’s containers are data hosting units that can store arbitrarily complex data types while preserving their integrity and consistency. Consequently, LibPM’s containers provide a generic interface to applications, allowing applications to store and manipulate arbitrarily structured data with strong durability and consistency properties, all without having to navigate all the myriad pitfalls of programming PM directly. By providing a simple and high-performing transactional update mechanism, LibPM allows applications to manipulate persistent data at the speed of memory. The container abstraction and automatic persistent data discovery mechanisms within LibPM also simplify porting legacy applications to PM. From a performance perspective, LibPM closely matches and often exceeds the performance of state-of-the-art application libraries for PM. For instance, LibPM ’s performance is 195× better for write intensive workloads and 2.6× better for read intensive workloads when compared with the state-of-the-art Pmem.IO persistent memory library.

References

  1. Jeff Bonwick. 1994. The slab allocator: An object-caching kernel memory allocator. In Proceedings of the USENIX Summer 1994 Technical Conference. 87--98. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Adrian M. Caulfield, Arup De, Joel Coburn, Todor I. Mollow, Rajesh K. Gupta, and Steven Swanson. 2010. Moneta: A high-performance storage array architecture for next-generation, non-volatile memories. In Proceedings of the 2010 43rd Annual IEEE/ACM International Symposium on Microarchitecture (MICRO-43). IEEE Computer Society, Los Alamitos, CA, 385--395. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Adrian M. Caulfield, Todor I. Mollov, Louis Alex Eisner, Arup De, Joel Coburn, and Steven Swanson. 2012. Providing safe, user space access to fast, solid state disks. In Proceedings of the International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS’12). Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Mohammad Chowdhury and Raju Rangaswami. 2017. Native OS support for persistent memory with regions. In Proceedings of 33rd International Conference on Massive Storage Systems and Technology (MSST’17).Google ScholarGoogle Scholar
  5. 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, non-volatile memories. In Proceedings of International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS’11). Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Jeremy Condit, Edmund B. Nightingale, Christopher Frost, Engin Ipek, Doug Burger, Benjamin Lee, and Derrick Coetzee. 2009. Better I/O through byte-addressable, persistent memory. In Proceedings of the ACM Symposium on Operating Systems Principles (SOSP’09). Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Jeremy Condit, Edmund B. Nightingale, Christopher Frost, Engin Ipek, Doug Burger, Benjamin Lee, and Derrick Coetzee. 2009. Better I/O through byte-addressable, persistent memory. In Proceedings of the ACM Symposium on Operating Systems Principles (SOSP’09). Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Intel Corporation. 2014. Intel Architecture Instruction Set Extensions Programming Reference. Retrieved from Retrieved from https://software.intel.com/sites/default/files/managed/0d/53/319433-022.pdf.Google ScholarGoogle Scholar
  9. Subramanya R. Dulloor, Sanjay Kumar, Anil Keshavamurthy, Philip Lantz, Dheeraj Reddy, Rajesh Sankaran, and Jeff Jackson. 2014. System software for persistent memory. In Proceedings of the European Conference on Computer Systems (EUROSYS’14). Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Jorge Guerra, Leonardo Marmol, Daniel Campello, Carlos Crespo, Raju Rangaswami, and Jinpeng Wei. 2012. Software persistent memory. In Proceedings of the USENIX Annual Technical Conference (USENIX ATC’12). Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Taeho Hwang, Jaemin Jung, and Youjip Won. 2014. HEAPO: Heap-based persistent object store. Trans. Stor. 11, 1, Article 3 (Dec. 2014), 21 pages. Retrieved from Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Intel Corporation. 2015. Intel Architecture Instruction Set Extensions Programming Reference.Google ScholarGoogle Scholar
  13. Engin Ipek, Jeremy Condit, Edmund B. Nightingale, Doug Burger, and Thomas Moscibroda. 2010. Dynamically replicated memory: Building reliable systems from nanoscale resistive memories. In Proceedings of the 15th Edition of ASPLOS on Architectural Support for Programming Languages and Operating Systems (ASPLOS XV). Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Alfons Kemper and Donald Kossmann. 1995. Adaptable pointer swizzling strategies in object bases: Design, realization, and quantitative analysis. VLDB J. 4, 3 (Jul. 1995), 519--567. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Wook-Hee Kim, Jinwoong Kim, Woongki Baek, Beomseok Nam, and Youjip Won. 2016. NVWAL: Exploiting NVRAM in Write-Ahead Logging. Retrieved from Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Philip Lantz, Subramanya Dulloor, Sanjay Kumar, Rajesh Sankaran, and Jeff Jackson. 2014. Yat: A validation framework for persistent memory software. In Proceedings of the USENIX Annual Technical Conference (ATC’14). Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. G. C. Necula, S. Mcpeak, S. P. Rahul, and W. Weimer. 2002. CIL: Intermediate language and tools for analysis and transformation of C programs. In Compiler Construction,Lecture Notes in Computer Science. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. 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, 371--386. Retrieved from Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Andy Rudoff. 2014. NVM Library. Retrieved from http://pmem.io.Google ScholarGoogle Scholar
  20. Stuart Schechter, Gabriel H. Loh, Karin Straus, and Doug Burger. 2010. Use ECP, Not ECC, for hard failures in resistive memories. In Proceedings of the 37th Annual International Symposium on Computer Architecture (ISCA’10). Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Edward J. Schwartz, Thanassis Avgerinos, and David Brumley. 2011. Q: Exploit hardening made easy. In Proceedings of the 20th USENIX Conference on Security (SEC’11). USENIX Association, Berkeley, CA, 25--25. http://dl.acm.org/citation.cfm?id=2028067.2028092 Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Hovav Shacham, Matthew Page, Ben Pfaff, Eu-Jin Goh, Nagendra Modadugu, and Dan Boneh. 2004. On the effectiveness of address-space randomization. In Proceedings of the 11th ACM Conference on Computer and Communications Security (CCS’04). ACM, New York, NY, 298--307. Retrieved from Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Haris Volos, Andres Jaan Tack, and Michael Swift. 2011. Mnemosyne: Lightweight persistent memory. In Proceedings of the International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS’11). Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Haris Volos, Andres Jaan Tack, and Michael M. Swift. 2011. Mnemosyne: Lightweight persistent memory. In Proceedings of the International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS’11). Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Xiaojian Wu and A. L. Narasimha Reddy. 2011. SCMFS: A file system for storage class memory. In Proceedings of the SC. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Jian Xu and Steven Swanson. 2016. NOVA: A log-structured file system for hybrid volatile/non-volatile main memories. In Proceedings of the USENIX Conference on File and Storage Technologies (FAST’16). USENIX Association, Santa Clara, CA, 323--338. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. 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 Proceedings of the 13th USENIX Conference on File and Storage Technologies (FAST’15). USENIX Association, Berkeley, CA, 167--181. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Yiying Zhang, Jian Yang, Amirsaman Memaripour, and Steven Swanson. 2015. Mojim: A reliable and highly-available non-volatile memory system. In Proceedings of the 20th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS’15). Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. LibPM: Simplifying Application Usage of Persistent 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

        • Published in

          cover image ACM Transactions on Storage
          ACM Transactions on Storage  Volume 14, Issue 4
          Special Section on Systor 2017 and Regular Papers
          November 2018
          175 pages
          ISSN:1553-3077
          EISSN:1553-3093
          DOI:10.1145/3297750
          • Editor:
          • Sam H. Noh
          Issue’s Table of Contents

          Copyright © 2018 ACM

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 4 December 2018
          • Accepted: 1 September 2018
          • Revised: 1 July 2018
          • Received: 1 October 2017
          Published in tos Volume 14, Issue 4

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • research-article
          • Research
          • Refereed

        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!