skip to main content
research-article

Atlas: leveraging locks for non-volatile memory consistency

Published:15 October 2014Publication History
Skip Abstract Section

Abstract

Non-volatile main memory, such as memristors or phase change memory, can revolutionize the way programs persist data. In-memory objects can themselves be persistent without the need for a separate persistent data storage format. However, the challenge is to ensure that such data remains consistent if a failure occurs during execution.

In this paper, we present our system, called Atlas, which adds durability semantics to lock-based code, typically allowing us to automatically maintain a globally consistent state even in the presence of failures. We identify failure-atomic sections of code based on existing critical sections and describe a log-based implementation that can be used to recover a consistent state after a failure. We discuss several subtle semantic issues and implementation tradeoffs. We confirm the ability to rapidly flush CPU caches as a core implementation bottleneck and suggest partial solutions. Experimental results confirm the practicality of our approach and provide insight into the overheads of such a system.

References

  1. OpenLDAP. At http://www.openldap.org.Google ScholarGoogle Scholar
  2. Android DeskClock Alarm Database Helper. At https://android.googlesource.com/platform/packages/apps/DeskClock/+/android-4.4.4_r1/src/com/android/deskclock/provider/ClockDatabaseHelper.java.Google ScholarGoogle Scholar
  3. POSIX cond-wait/cond-notify. At http://pubs.opengroup.org.Google ScholarGoogle Scholar
  4. Process Integration, Devices, and Structures. International Technology Roadmap for Semiconductors, 2007.Google ScholarGoogle Scholar
  5. Leveldb. At https://code.google.com/p/leveldb,.Google ScholarGoogle Scholar
  6. NVDIMM Technology. At http://www.vikingtechnology.com/nvdimm-technology, retrieved 03/2014.Google ScholarGoogle Scholar
  7. M. P. Atkinson, L. Daynes, M. J. Jordan, T. Printezis, and S. Spence. An Orthogonally Persistent Java. ACM SIGMOD Record, 25(4):68--75, Dec 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. C. Blundell, E. C. Lewis, and M. M. K. Martin. Deconstructing transactional semantics: The subtleties of atomicity. In Workshop on Duplicating, Deconstructing, and Debunking (WDDD), 2005.Google ScholarGoogle Scholar
  9. H.-J. Boehm. How to miscompile programs with "benign" data races. In HotPar '11: 3rd USENIX Workshop on Hot Topics in Parallelism, May 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. H.-J. Boehm and S. Adve. Foundations of the C++ Concurrency Memory Model. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 68--78, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. D. R. Chakrabarti and H.-J. Boehm. Durability semantics for lock-based multithreaded programs. In HotPar '13: 5th USENIX Workshop on Hot Topics in Parallelism, Jun 2013.Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. H. Chu. MDB: A memory-mapped database and backend for OpenLDAP. At http://www.openldap.org/pub/hyc/mdm-paper.pdf, retrieved 03/2014.Google ScholarGoogle Scholar
  13. C. Clark. A hash table data structure in C. At https://github.com/davidar/c-hashtable.Google ScholarGoogle Scholar
  14. 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. In ASPLOS '11: Proc. of the 16th International Conference on Architectural Support for Programming Languages and Operating Systems, pages 105--117, Mar 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. J. Condit, E. B. Nightingale, C. Frost, E. Ipek, B. Lee, D. Burger, and D. Coetzee. Better i/o through byte-addressable, persistent memory. In SOSP 22, pages 133--146, Oct 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Dormando. Memcached: a distributed memory object caching system. At http://memcached.org, retrieved 11/2013.Google ScholarGoogle Scholar
  17. S. R. Dulloor, S. Kumar, A. Keshavamurthy, P. Lantz, D. Reddy, R. Sankaran, and J. Jackson. System software for persistent memory. In Eurosys '14, Apr 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. V. K. Garg. Elements of Distributed Computing. Wiley-InterScience, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Intel Corp. Intel64 and IA-32 Architectures Software Developer's Manuals Combined. http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html, retrieved 11/2013.Google ScholarGoogle Scholar
  20. H. J-Boehm. Transactional Memory should be an Implementation Technique, Not a Programming Interface. In Proceedings of the 1st USENIX Workshop on Hot Topics in Parallelism, Mar. 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. J. Larus and R. Rajwar. Transactional Memory. Morgan and Claypool Publishers, 2007. ISBN 1-59829-124-6.Google ScholarGoogle ScholarCross RefCross Ref
  22. B. C. Lee, E. Ipek, O. Mutlu, and D. Burger. Architecting phase change memory as a scalable DRAM alternative. In ISCA '09: Proc. of the 36th International Symposium on Computer Architecture, pages 2--13, Jun 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. J. Manson, W. Pugh, and S. Adve. The Java Memory Model. In Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Memcached authors. Memcached: what is this thing? At http://code.google.com/p/memcached/wiki/NewOverview, retrieved 11/2013.Google ScholarGoogle Scholar
  25. V. Menon, S. Balensiefer, T. Shpeisman, A. Adl-Tabatabai, R. Hudson, B. Saha, and A. Welc. Single global lock semantics in a weakly atomic STM. In TRANSACT '08, Feb 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. M. Michael and M. L. Scott. Simple, fast, and practical nonblocking and blocking concurrent queue algorithms. In Proceedings of the 15th Annual ACM Symposium on Principles of Distributed Computing, pages 267--275, Aug. 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. C. Mohan, D. Haderle, B. Lindsay, H. Pirahesh, and P. Schwarz. Aries: a transaction recovery method supporting fine-granularity locking and partial rollbacks using write-ahead logging. ACM Transactions on Database Systems, 17(1):94--162, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. S. Pelley, P. M. Chen, and T. F. Wenisch. Memory persistency. In Proc. of the 41st International Symposium on Computer Architecture, Jun 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. M. K. Qureshi, V. Srinivasan, and J. A. Rivers. Scalable high performance main memory system using phase-change memory technology. In ISCA '09: Proc. of the 36th International Symposium on Computer Architecture, pages 24--33, Jun 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. M. Rieker, J. Ansel, and G. Cooperman. Transparent user-level checkpointing for the native posix thread library for linux. In PDPTA '06: Proc. of the International Conference on Parallel and Distributed Processing Techniques and Applications, pages 492--498, Jun 2006.Google ScholarGoogle Scholar
  31. M. Saxena, M. Shah, S. Harizopoulos, M. Swift, and A. Merchant. Hathi: Durable transactions for memory using flash. In DaMoN: Proceedings of 8th ACM/SIGMOD International Workshop on Data Management on New Hardware, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. P. Snyder. tmpfs: A virtual memory file system. In Autumn European Unix Users' Group Conference, 1990.Google ScholarGoogle Scholar
  33. D. B. Strukov, G. S. Snider, D. R. Stewart, and R. S.Williams. The missing memristor found. Nature, 453:80--83, 2008.Google ScholarGoogle ScholarCross RefCross Ref
  34. Draft specification of transactional language constructs for C++. Transactional memory specification drafting group, Feb 2012. At https://sites.google.com/site/tmforcplusplus.Google ScholarGoogle Scholar
  35. S. Venkataraman, N. Tolia, P. Ranganathan, and R. H. Campbell. Consistent and durable data structures for non-volatile byte-addressable memory. In FAST '11: Proc. of the 9th USENIX Conference on File And Storage Technologies, Feb 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. H. Volos, A. J. Tack, N. Goyal, M. M. Swift, and A. Welc. xcalls: safe i/o in memory transactions. In EuroSys, pages 247--260, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. H. Volos, A. J. Tack, and M. M. Swift. Mnemosyne: Lightweight persistent memory. In ASPLOS '11: Proc. of the 16th International Conference on Architectural Support for Programming Languages and Operating Systems, pages 91--103, Mar 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. S. C. Woo, M. Ohara, E. Torrie, J. P. Singh, and A. Gupta. The SPLASH-2 Programs: Characterization and Methodological Considerations. In Proceedings of the 22nd Annual International Symposium on Computer Architecture, pages 24--36, June 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. L. Ziarek, P. Schatz, and S. Jagannathan. Modular Check-pointing for Atomicity. Electr. Notes Theor. Comput. Sci., 174(9):85--115, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Atlas: leveraging locks for non-volatile memory consistency

    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 49, Issue 10
      OOPSLA '14
      October 2014
      907 pages
      ISSN:0362-1340
      EISSN:1558-1160
      DOI:10.1145/2714064
      • Editor:
      • Andy Gill
      Issue’s Table of Contents
      • cover image ACM Conferences
        OOPSLA '14: Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & Applications
        October 2014
        946 pages
        ISBN:9781450325851
        DOI:10.1145/2660193

      Copyright © 2014 ACM

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 15 October 2014

      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!