skip to main content
research-article
Public Access

Persistency for synchronization-free regions

Published:11 June 2018Publication History
Skip Abstract Section

Abstract

Nascent persistent memory (PM) technologies promise the performance of DRAM with the durability of disk, but how best to integrate them into programming systems remains an open question. Recent work extends language memory models with a persistency model prescribing semantics for updates to PM. These semantics enable programmers to design data structures in PM that are accessed like memory and yet are recoverable upon crash or failure. Alas, we find the semantics and performance of existing approaches unsatisfying. Existing approaches require high-overhead mechanisms, are restricted to certain synchronization constructs, provide incomplete semantics, and/or may recover to state that cannot arise in fault-free execution.

We propose persistency semantics that guarantee failure atomicity of synchronization-free regions (SFRs) - program regions delimited by synchronization operations. Our approach provides clear semantics for the PM state recovery code may observe and extends C++11's "sequential consistency for data-race-free" guarantee to post-failure recovery code. We investigate two designs for failure-atomic SFRs that vary in performance and the degree to which commit of persistent state may lag execution. We demonstrate both approaches in LLVM v3.6.0 and compare to a state-of-the-art baseline to show performance improvement up to 87.5% (65.5% avg).

Skip Supplemental Material Section

Supplemental Material

p46-gogte.webm

References

  1. Sarita V. Adve and Kourosh Gharachorloo. 1996. Shared Memory Consistency Models: A Tutorial. Computer 29, 12 (Dec. 1996), 66–76. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. ARM. 2016. ARMv8-A architecture evolution. https: //community.arm.com/groups/processors/blog/2016/01/05/ armv8-a-architecture-evolution .Google ScholarGoogle Scholar
  3. D. Balsamo, A. S. Weddell, A. Das, A. R. Arreola, D. Brunelli, B. M. Al-Hashimi, G. V. Merrett, and L. Benini. 2016. Hibernus++: A SelfCalibrating and Adaptive System for Transiently-Powered Embedded Devices. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems 35, 12 (2016), 1968–1980. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Swarnendu Biswas, Minjia Zhang, Michael D. Bond, and Brandon Lucia. 2015. Valor: Efficient, Software-only Region Conflict Exceptions. In Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2015). ACM, New York, NY, USA, 241–259. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Hans-J. Boehm and Sarita V. Adve. 2008. Foundations of the C++ Concurrency Memory Model. In Proceedings of the 29th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’08). ACM, New York, NY, USA, 68–78. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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
  7. 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, New York, NY, USA, 433–452. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Andreas Chatzistergiou, Marcelo Cintra, and Stratis D. Viglas. 2015. REWIND: Recovery Write-Ahead System for In-Memory Non-Volatile Data-Structures. PVLDB 8, 5 (2015), 497–508. http://www.vldb.org/ pvldb/vol8/p497-chatzistergiou.pdf Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Peter M. Chen, Wee Teck Ng, Subhachandra Chandra, Christopher M. Aycock, Gurushankar Rajamani, and David Lowell. 1996. The Rio File Cache: Surviving Operating System Crashes. In Proceedings of the 7th International Conference on Architectural Support for Programming Languages and Operating Systems. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Vijay Chidambaram, Thanumalayan Sankaranarayana Pillai, Andrea C. Arpaci-Dusseau, and Remzi H. Arpaci-Dusseau. 2013. Optimistic Crash Consistency. In Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles (SOSP ’13). ACM, New York, NY, USA, 228–243. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. 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
  12. Alexei Colin and Brandon Lucia. 2016. Chain: Tasks and Channels for Reliable Intermittent Programs. In Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2016). ACM, New York, NY, USA, 514–530. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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
  14. 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
  15. 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 Ninth European Conference on Computer Systems (EuroSys ’14). ACM, New York, NY, USA, Article 15, 15 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Laura Effinger-Dean, Brandon Lucia, Luis Ceze, Dan Grossman, and Hans-J. Boehm. 2012. IFRit: Interference-free Regions for Dynamic Data-race Detection. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications (OOPSLA ’12). ACM, New York, NY, USA, 467–484. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Ellis Giles, Kshitij Doshi, and Peter Varman. 2017. Continuous Checkpointing of HTM Transactions in NVM. In Proceedings of the 2017 ACM SIGPLAN International Symposium on Memory Management (ISMM 2017). ACM, New York, NY, USA, 70–81. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. E. R. Giles, K. Doshi, and P. Varman. 2015. SoftWrAP: A lightweight framework for transactional support of storage class memory. In 2015 31st Symposium on Mass Storage Systems and Technologies (MSST). 1–14.Google ScholarGoogle Scholar
  19. Jim Gray and Andreas Reuter. 1993. Transaction Processing: Concepts and Techniques. Morgan Kaufmann Publishers, Inc. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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
  21. Intel. 2014. Intel Architecture Instruction Set Extensions Programming Reference (319433-022). https://software.intel.com/sites/default/files/ managed/0d/53/319433-022.pdf .Google ScholarGoogle Scholar
  22. Intel. 2015. Persistent Memory Programming. http://pmem.io/ .Google ScholarGoogle Scholar
  23. Intel. 2016. Deprecating the PCOMMIT Instruction. https://software. intel.com/en-us/blogs/2016/09/12/deprecate-pcommit-instruction .Google ScholarGoogle Scholar
  24. Intel and Micron. 2015. Intel and Micron Produce Breakthrough Memory Technology. http://newsroom. intel.com/community/intel_newsroom/blog/2015/07/28/ intel-and-micron-produce-breakthrough-memory-technology .Google ScholarGoogle Scholar
  25. Joseph Izraelevitz, Terence Kelly, and Aasheesh Kolli. 2016. FailureAtomic Persistent Memory Updates via JUSTDO Logging. In Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS ’16). ACM, New York, NY, USA, 427–442. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Joseph Izraelevitz, Hammurabi Mendes, and Michael L. Scott. 2016. Linearizability of Persistent Memory Objects Under a Full-System-Crash Failure Model. In Distributed Computing: 30th International Symposium, DISC 2016, Paris, France, September 27-29, 2016. Proceedings, Cyril Gavoille and David Ilcinkas (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 313–327.Google ScholarGoogle Scholar
  27. Joseph Izraelevitz and Michael L. Scott. 2014. Brief Announcement: A Generic Construction for Nonblocking Dual Containers. In Proceedings of the 2014 ACM Symposium on Principles of Distributed Computing (PODC ’14). ACM, New York, NY, USA, 53–55. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Arpit Joshi, Vijay Nagarajan, Marcelo Cintra, and Stratis Viglas. 2015. Efficient Persist Barriers for Multicores. In Proceedings of the 48th International Symposium on Microarchitecture (MICRO-48). ACM, New York, NY, USA, 660–671. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. 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
  30. 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
  31. Aasheesh Kolli, Vaibhav Gogte, Ali Saidi, Stephan Diestelhorst, Peter M. Chen, Satish Narayanasamy, and Thomas F. Wenisch. 2017. TARP: Translating Acquire-Release Persistency. http://nvmw.eng.ucsd.edu/ 2017/assets/abstracts/1 .Google ScholarGoogle Scholar
  32. 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
  33. Aasheesh Kolli, Jeff Rosen, Stephan Diestelhorst, Ali Saidi, Steven Pelley, Sihang Liu, Peter M. Chen, and Thomas F. Wenisch. 2016. Delegated persist ordering. In 49th Annual IEEE/ACM International Symposium on Microarchitecture, MICRO 2016, Taipei, Taiwan, October 15-19, 2016. 1–13. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Chris Lattner and Vikram Adve. 2004. LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation. In Proceedings of the International Symposium on Code Generation and Optimization: Feedback-directed and Runtime Optimization (CGO ’04). IEEE Computer Society, Washington, DC, USA, 75–. http://dl.acm.org/citation.cfm? id=977395.977673 Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. 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 Proceedings of the Twenty-Second International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS ’17). ACM, New York, NY, USA, 329–343. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. S. Liu, A. Kolli, J. Ren, and S. Khan. 2018. Crash Consistency in Encrypted Non-volatile Main Memory Systems. In 2018 IEEE International Symposium on High Performance Computer Architecture (HPCA). 310– 323.Google ScholarGoogle Scholar
  37. David E. Lowell and Peter M. Chen. 1997. Free Transactions with Rio Vista. In Proceedings of the Sixteenth ACM Symposium on Operating Systems Principles (SOSP ’97). ACM, New York, NY, USA, 92–101. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Youyou Lu, Jiwu Shu, Long Sun, and Onur Mutlu. 2014. Loose-Ordering Consistency for persistent memory. In 32nd IEEE International Conference on Computer Design, ICCD 2014, Seoul, South Korea, October 19-22, 2014. 216–223.Google ScholarGoogle ScholarCross RefCross Ref
  39. Brandon Lucia, Luis Ceze, Karin Strauss, Shaz Qadeer, and HansJ. Boehm. 2010. Conflict Exceptions: Simplifying Concurrent Language Semantics with Precise Hardware Exceptions for Data-races. In Proceedings of the 37th Annual International Symposium on Computer Architecture (ISCA ’10). ACM, New York, NY, USA, 210–221. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Kiwan Maeng, Alexei Colin, and Brandon Lucia. 2017. Alpaca: Intermittent Execution Without Checkpoints. Proc. ACM Program. Lang. 1, OOPSLA, Article 96 (Oct. 2017), 30 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Daniel Marino, Abhayendra Singh, Todd Millstein, Madanlal Musuvathi, and Satish Narayanasamy. 2010. DRFX: A Simple and Efficient Memory Model for Concurrent Programming Languages. In Proceedings of the 31st ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’10). ACM, New York, NY, USA, 351– 362. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. 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 Proceedings of the Twelfth European Conference on Computer Systems (EuroSys ’17). ACM, New York, NY, USA, 499–512. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Azalia Mirhoseini, Ebrahim M Songhori, and Farinaz Koushanfar. 2013. Idetic: A high-level synthesis approach for enabling long computations on transiently-powered ASICs. In 2013 IEEE International Conference on Pervasive Computing and Communications (PerCom). 216–224.Google ScholarGoogle ScholarCross RefCross Ref
  44. Amirhossein Mirhosseini, Aditya Agrawal, and Josep Torrellas. 2017. Survive: Pointer-Based In-DRAM Incremental Checkpointing for LowCost Data Persistence and Rollback-Recovery. IEEE Computer Architecture Letters 16, 2 (July 2017), 153–157.Google ScholarGoogle ScholarCross RefCross Ref
  45. C. Mohan, Don Haderle, Bruce Lindsay, Hamid Pirahesh, and Peter Schwarz. 1992. ARIES: A Transaction Recovery Method Supporting Fine-granularity Locking and Partial Rollbacks Using Write-ahead Logging. ACM Trans. Database Syst. 17, 1 (March 1992), 94–162. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. 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
  47. Dushyanth Narayanan and Orion Hodson. 2012. Whole-system Persistence. In Proceedings of the Seventeenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XVII). ACM, New York, NY, USA, 401–410. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Faisal Nawab, Dhruva Chakrabarti, Terence Kelly, and Charles B. Morey III. 2014. Procrastination Beats Prevention: Timely Sufficient Persistence for Efficient Crash Resilience. Technical Report HPL-2014-70. Hewlett-Packard.Google ScholarGoogle Scholar
  49. Simo Neuvonen, Antoni Wolski, Markku Manner, and Vilho Raatikka. 2011. Telecom Application Transaction Processing Benchmark. http: //tatpbenchmark.sourceforge.net/ .Google ScholarGoogle Scholar
  50. Jessica Ouyang, Peter M. Chen, Jason Flinn, and Satish Narayanasamy. 2013. . . . And Region Serializability for All. In Presented as part of the 5th USENIX Workshop on Hot Topics in Parallelism.Google ScholarGoogle Scholar
  51. Steven Pelley, Peter M. Chen, and Thomas F. Wenisch. 2014. Memory Persistency. In Proceeding of the 41st Annual International Symposium on Computer Architecture (ISCA ’14). IEEE Press, Piscataway, NJ, USA, 265–276. http://dl.acm.org/citation.cfm?id=2665671.2665712 Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Jinglei Ren, Jishen Zhao, Samira Khan, Jongmoo Choi, Yongwei Wu, and Onur Mutlu. 2015. ThyNVM: Enabling Software-transparent Crash Consistency in Persistent Memory Systems. In Proceedings of the 48th International Symposium on Microarchitecture (MICRO-48). ACM, New York, NY, USA, 672–685. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. 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
  54. Seunghee Shin, James Tuck, and Yan Solihin. 2017. Hiding the Long Latency of Persist Barriers Using Speculative Execution. In Proceedings of the 44th Annual International Symposium on Computer Architecture (ISCA ’17). ACM, New York, NY, USA, 175–186. Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. Peter Snyder. 1990. tmpfs: A virtual memory file system. In In Proceedings of the Autumn 1990 European UNIX UsersâĂŹ Group Conference. 241–248.Google ScholarGoogle Scholar
  56. Transaction Processing Performance Council (TPC). 2010. TPC Benchmark B. http://www.tpc.org/tpc_documents_current_versions/pdf/ tpc-c_v5-11.pdf .Google ScholarGoogle Scholar
  57. 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 ScholarDigital LibraryDigital Library
  58. Tianzheng Wang and Ryan Johnson. 2014. Scalable Logging Through Emerging Non-volatile Memory. Proc. VLDB Endow. 7, 10 (June 2014), 865–876. Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. Xiaojian Wu and A. L. Narasimha Reddy. 2011. SCMFS: A File System for Storage Class Memory. In Proceedings of 2011 International Conference for High Performance Computing, Networking, Storage and Analysis (SC ’11). ACM, New York, NY, USA, Article 39, 11 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. C. Xu, D. Niu, N. Muralimanohar, R. Balasubramonian, T. Zhang, S. Yu, and Y. Xie. 2015. Overcoming the challenges of crossbar resistive memory architectures. In 2015 IEEE 21st International Symposium on High Performance Computer Architecture (HPCA). 476–488.Google ScholarGoogle Scholar
  61. Jian Xu and Steven Swanson. 2016. NOVA: A Log-structured File System for Hybrid Volatile/Non-volatile Main Memories. In Proceedings of the 14th Usenix Conference on File and Storage Technologies (FAST’16). USENIX Association, Berkeley, CA, USA, 323–338. http: //dl.acm.org/citation.cfm?id=2930583.2930608 Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. Jian Xu, Lu Zhang, Amirsaman Memaripour, Akshatha Gangadharaiah, Amit Borase, Tamires Brito Da Silva, Steven Swanson, and Andy Rudoff. 2017. NOVA-Fortis: A Fault-Tolerant Non-Volatile Main Memory File System. In Proceedings of the 26th Symposium on Operating Systems Principles (SOSP ’17). ACM, New York, NY, USA, 478–496. Google ScholarGoogle ScholarDigital LibraryDigital Library
  63. Jishen Zhao, Sheng Li, Doe Hyun Yoon, Yuan Xie, and Norman P. Jouppi. 2013. Kiln: Closing the Performance Gap Between Systems with and Without Persistence Support. In Proceedings of the 46th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO-46). ACM, New York, NY, USA, 421–432. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Persistency for synchronization-free regions

        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!