Nothing Special   »   [go: up one dir, main page]

skip to main content
research-article

Atlas: leveraging locks for non-volatile memory consistency

Published: 15 October 2014 Publication History

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.
[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.
[3]
POSIX cond-wait/cond-notify. At http://pubs.opengroup.org.
[4]
Process Integration, Devices, and Structures. International Technology Roadmap for Semiconductors, 2007.
[5]
Leveldb. At https://code.google.com/p/leveldb,.
[6]
NVDIMM Technology. At http://www.vikingtechnology.com/nvdimm-technology, retrieved 03/2014.
[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.
[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.
[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.
[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.
[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.
[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.
[13]
C. Clark. A hash table data structure in C. At https://github.com/davidar/c-hashtable.
[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.
[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.
[16]
Dormando. Memcached: a distributed memory object caching system. At http://memcached.org, retrieved 11/2013.
[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.
[18]
V. K. Garg. Elements of Distributed Computing. Wiley-InterScience, 2002.
[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.
[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.
[21]
J. Larus and R. Rajwar. Transactional Memory. Morgan and Claypool Publishers, 2007. ISBN 1-59829-124-6.
[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.
[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.
[24]
Memcached authors. Memcached: what is this thing? At http://code.google.com/p/memcached/wiki/NewOverview, retrieved 11/2013.
[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.
[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.
[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.
[28]
S. Pelley, P. M. Chen, and T. F. Wenisch. Memory persistency. In Proc. of the 41st International Symposium on Computer Architecture, Jun 2014.
[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.
[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.
[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.
[32]
P. Snyder. tmpfs: A virtual memory file system. In Autumn European Unix Users' Group Conference, 1990.
[33]
D. B. Strukov, G. S. Snider, D. R. Stewart, and R. S.Williams. The missing memristor found. Nature, 453:80--83, 2008.
[34]
Draft specification of transactional language constructs for C++. Transactional memory specification drafting group, Feb 2012. At https://sites.google.com/site/tmforcplusplus.
[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.
[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.
[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.
[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.
[39]
L. Ziarek, P. Schatz, and S. Jagannathan. Modular Check-pointing for Atomicity. Electr. Notes Theor. Comput. Sci., 174(9):85--115, 2007.

Cited By

View all

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

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
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 ACM 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: 15 October 2014
Published in SIGPLAN Volume 49, Issue 10

Check for updates

Author Tags

  1. consistency semantics
  2. durability
  3. locks
  4. logging
  5. non-volatile memory
  6. persistence
  7. transactions

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)114
  • Downloads (Last 6 weeks)8
Reflects downloads up to 10 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Compiler-Directed Whole-System Persistence2024 ACM/IEEE 51st Annual International Symposium on Computer Architecture (ISCA)10.1109/ISCA59077.2024.00074(961-977)Online publication date: 29-Jun-2024
  • (2024)Specifying and Verifying Persistent LibrariesProgramming Languages and Systems10.1007/978-3-031-57267-8_8(185-211)Online publication date: 6-Apr-2024
  • (2024)A Fully Verified Persistency LibraryVerification, Model Checking, and Abstract Interpretation10.1007/978-3-031-50521-8_2(26-47)Online publication date: 15-Jan-2024
  • (2023)SweepCache: Intermittence-Aware Cache on the CheapProceedings of the 56th Annual IEEE/ACM International Symposium on Microarchitecture10.1145/3613424.3623781(1059-1074)Online publication date: 28-Oct-2023
  • (2023)Persistent Processor ArchitectureProceedings of the 56th Annual IEEE/ACM International Symposium on Microarchitecture10.1145/3613424.3623772(1075-1091)Online publication date: 28-Oct-2023
  • (2023)Falcon: Fast OLTP Engine for Persistent Cache and Non-Volatile MemoryProceedings of the 29th Symposium on Operating Systems Principles10.1145/3600006.3613141(531-544)Online publication date: 23-Oct-2023
  • (2023)TL4xProceedings of the 28th ACM SIGPLAN Annual Symposium on Principles and Practice of Parallel Programming10.1145/3572848.3577495(245-259)Online publication date: 25-Feb-2023
  • (2023)Using Logging-on-Write to Improve Non-Volatile Memory Checkpoints via Processing-in-Memory2023 IEEE 35th International Symposium on Computer Architecture and High Performance Computing (SBAC-PAD)10.1109/SBAC-PAD59825.2023.00016(68-77)Online publication date: 17-Oct-2023
  • (2023)PreFlush: Lightweight Hardware Prediction Mechanism for Cache Line Flush and Writeback2023 32nd International Conference on Parallel Architectures and Compilation Techniques (PACT)10.1109/PACT58117.2023.00015(74-85)Online publication date: 21-Oct-2023
  • (2023)StaticPersist: Compiler Support for PMEM ProgrammingVerification, Model Checking, and Abstract Interpretation10.1007/978-3-031-24950-1_3(44-65)Online publication date: 16-Jan-2023
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media