skip to main content
research-article

Espresso: Brewing Java For More Non-Volatility with Non-volatile Memory

Authors Info & Claims
Published:19 March 2018Publication History
Skip Abstract Section

Abstract

Fast, byte-addressable non-volatile memory (NVM) embraces both near-DRAM latency and disk-like persistence, which has generated considerable interests to revolutionize system software stack and programming models. However, it is less understood how NVM can be combined with managed runtime like Java virtual machine (JVM) to ease persistence management. This paper proposes Espresso, a holistic extension to Java and its runtime, to enable Java programmers to exploit NVM for persistence management with high performance. Espresso first provides a general persistent heap design called Persistent Java Heap (PJH) to manage persistent data as normal Java objects. The heap is then strengthened with a recoverable mechanism to provide crash consistency for heap metadata. Espresso further provides a new abstraction called Persistent Java Object (PJO) to provide an easy-to-use but safe persistence programming model for programmers to persist application data. Evaluation confirms that Espresso significantly outperforms state-of-art NVM support for Java (i.e., JPA and PCJ) while being compatible to data structures in existing Java programs.

References

  1. DataNucleus. http://www.datanucleus.com/.Google ScholarGoogle Scholar
  2. Open source database engines in java. https://java-source.net/open-source/database-engines.Google ScholarGoogle Scholar
  3. M. P. Atkinson, L. Daynes, M. J. Jordan, T. Printezis, and S. Spence. An orthogonally persistent java. ACM Sigmod Record, 25(4):68-75, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. K. Bhandari, D. R. Chakrabarti, and H.-J. Boehm. Makalu: Fast recoverable allocation of non-volatile memory. In Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 677-694. ACM, 2016. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. H.-J. Boehm and D. R. Chakrabarti. Persistence programming models for non-volatile memory. In Proceedings of the 2016 ACM SIG- PLAN International Symposium on Memory Management, pages 55-67. ACM, 2016. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. D. R. Chakrabarti, H.-J. Boehm, and K. Bhandari. Atlas: Leveraging locks for non-volatile memory consistency. In ACM SIGPLAN Notices, volume 49, pages 433-452. ACM, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. H. Chen, R. Chen, X. Wei, J. Shi, Y. Chen, Z. Wang, B. Zang, and H. Guan. Fast in-memory transaction processing using rdma and htm. ACM Trans. Comput. Syst., 35(1):3:1-3:37, July 2017. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. J. Coburn, A. M. Caulfield, A. Akel, L. M. Grupp, R. K. Gupta, R. Jhala, and S. Swanson. Nv-heaps: making persistent objects fast and safe with next-generation, non-volatile memories. ACM Sigplan Notices, 46(3):105-118, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. L. DeMichiel and M. Keith. Java persistence api. JSR, 220, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. M. Dong and H. Chen. Soft updates made simple and fast on non-volatile memory. In 2017 USENIX Annual Technical Conference (USENIX ATC 17), pages 719-731, Santa Clara, CA, 2017. USENIX Association. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. L. Gidra, G. Thomas, J. Sopena, and M. Shapiro. A study of the scalability of stop-the-world garbage collectors on multicores. In ACM SIGPLAN Notices, volume 48, pages 229-240. ACM, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. L. Gidra, G. Thomas, J. Sopena, M. Shapiro, and N. Nguyen. Nu-magic: a garbage collector for big data on big numa machines. In ACM SIGARCH Computer Architecture News, volume 43, pages 661-673. ACM, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Hewlett Packard Enterprise. Managed data structures. https://github.com/HewlettPackard/mds.Google ScholarGoogle Scholar
  14. T. C.-H. Hsu, H. Brügner, I. Roy, K. Keeton, and P. Eugster. Nvthreads: Practical persistence for multi-threaded applications. In Proceedings of the Twelfth European Conference on Computer Systems, pages 468-482. ACM, 2017. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. INTEL. Persistent collections for java. https://github.com/pmem/pcj.Google ScholarGoogle Scholar
  16. INTEL. pmem.io: Persistent memory programming. http://pmem.io/.Google ScholarGoogle Scholar
  17. Intel and Micron. Intel and micron produce breakthrough memory technology. https://newsroom.intel.com/news-releases/intel-and-micron-produce-breakthrough-memory-technology/.Google ScholarGoogle Scholar
  18. D. Jordan and C. Russell. Java data objects. " O'Reilly Media, Inc.", 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. M. Jordan. Early experiences with persistent java. In Proceedings of the First International Workshop on Persistence and Java, 2001.Google ScholarGoogle Scholar
  20. M. J. Jordan and M. P. Atkinson. Orthogonal persistence for java mid-term report. Morrison et al.{161}, pages 335-352, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. H. Kimura. Foedus: Oltp engine for a thousand cores and nvram. In Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data, pages 691-706. ACM, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. A. Kolli, S. Pelley, A. Saidi, P. M. Chen, and T. F. Wenisch. High-performance transactions for persistent memories. In Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Systems, pages 399-411. ACM, 2016. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. S. Liang and G. Bracha. Dynamic class loading in the java virtual machine. Acm sigplan notices, 33(10):36-44, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. T. Lindholm, F. Yellin, G. Bracha, and A. Buckley. The Java virtual machine specification. Pearson Education, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. D. Lion, A. Chiu, H. Sun, X. Zhuang, N. Grcevski, and D. Yuan. Don't get caught in the cold, warm-up your jvm: Understand and eliminate jvm warm-up overhead in data-parallel systems. In Proceedings of the 12th USENIX conference on Operating Systems Design and Implementation, pages 383-400. USENIX Association, 2016. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. B. Liskov, A. Adya, M. Castro, S. Ghemawat, R. Gruber, U. Maheshwari, A. C. Myers, M. Day, and L. Shrira. Safe and efficient sharing of persistent objects in thor. ACM SIGMOD Record, 25(2):318-329, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. M. Liu, M. Zhang, K. Chen, X. Qian, Y. Wu, W. Zheng, and J. Ren. Dudetm: Building durable transactions with decoupling for persistent memory. In Proceedings of the Twenty-Second International Conference on Architectural Support for Programming Languages and Operating Systems, pages 329-343. ACM, 2017. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. D. E. Lowell and P. M. Chen. Free transactions with rio vista. In ACM SIGOPS Operating Systems Review, volume 31, pages 92-101. ACM, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. A. Memaripour, A. Badam, A. Phanishayee, Y. Zhou, R. Alagappan, K. Strauss, and S. Swanson. Atomic in-place updates for non- volatile main memories with kamino-tx. In EuroSys, pages 499-512, 2017. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Micron. Nvdimm. https://www.micron.com/products/dram-modules/nvdimm/.Google ScholarGoogle Scholar
  31. T. Mueller. H2 database, 2012.Google ScholarGoogle Scholar
  32. S. Nalli, S. Haria, M. D. Hill, M. M. Swift, H. Volos, and K. Keeton. 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, pages 135-148. ACM, 2017. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. K. Nguyen, L. Fang, G. Xu, B. Demsky, S. Lu, S. Alamian, and O. Mutlu. Yak: A high-performance big-data-friendly garbage collector. In Proc. the 12th USENIX Conference on Operating Systems Design and Implementation, 2016. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. ObjectDB Software Ltd. Jpa performance benchmark (jpab). http://www.jpab.org/.Google ScholarGoogle Scholar
  35. J. O'Toole, S. Nettles, and D. Gifford. Concurrent compacting garbage collection of a persistent heap. In ACM SIGOPS Operating Systems Review, volume 27, pages 161-174. ACM, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. M. Paleczny, C. Vick, and C. Click. The java hotspot tm server compiler. In Proceedings of the 2001 Symposium on Java TM Virtual Machine Research and Technology Symposium-Volume 1, pages 1-1. USENIX Association, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. J. Paterson, S. Edlich, H. Hörning, and R. Hörning. db4o. 2006.Google ScholarGoogle Scholar
  38. S. Pelley, P. M. Chen, and T. F. Wenisch. Memory persistency. ACM SIGARCH Computer Architecture News, 42(3):265-276, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. M. Satyanarayanan, H. H. Mashburn, P. Kumar, D. C. Steere, and J. J. Kistler. Lightweight recoverable virtual memory. ACM Transactions on Computer Systems (TOCS), 12(1):33-57, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. J. Seo, W.-H. Kim, W. Baek, B. Nam, and S. H. Noh. Failure-atomic slotted paging for persistent memory. In Proceedings of the Twenty-Second International Conference on Architectural Support for Programming Languages and Operating Systems, pages 91-104. ACM, 2017. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. The Transaction Processing Council. TPC-C Benchmark V5.11. http://www.tpc.org/tpcc/.Google ScholarGoogle Scholar
  42. H. Volos, A. J. Tack, and M. M. Swift. Mnemosyne: Lightweight persistent memory. In ACM SIGARCH Computer Architecture News, volume 39, pages 91-104. ACM, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. S. J. White and D. J. DeWitt. QuickStore: A high performance mapped object store, volume 23. ACM, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. F. Xia, D. Jiang, J. Xiong, and N. Sun. Hikv: A hybrid index key-value store for dram-nvm memory systems. In 2017 USENIX Annual Technical Conference (USENIX ATC 17), pages 349-362, Santa Clara, CA, 2017. USENIX Association. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. J. Yang, Q. Wei, C. Chen, C. Wang, K. L. Yong, and B. He. Nv-tree: reducing consistency cost for nvm-based single level systems. In 13th USENIX Conference on File and Storage Technologies (FAST 15), pages 167-181, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Y. Yu, T. Lei, W. Zhang, H. Chen, and B. Zang. Performance analysis and optimization of full garbage collection in memory-hungry environments. In Proceedings of the 12th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments, pages 123-130. ACM, 2016. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Espresso: Brewing Java For More Non-Volatility with 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

      • Published in

        cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 53, Issue 2
        ASPLOS '18
        February 2018
        809 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/3296957
        Issue’s Table of Contents
        • cover image ACM Conferences
          ASPLOS '18: Proceedings of the Twenty-Third International Conference on Architectural Support for Programming Languages and Operating Systems
          March 2018
          827 pages
          ISBN:9781450349116
          DOI:10.1145/3173162

        Copyright © 2018 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 19 March 2018

        Check for updates

        Qualifiers

        • research-article

      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!