skip to main content
10.1145/2660193.2660224acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
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
  • (2024)Puddles: Application-Independent Recovery and Location-Independent Data for Persistent MemoryProceedings of the Nineteenth European Conference on Computer Systems10.1145/3627703.3629555(575-589)Online publication date: 22-Apr-2024
  • (2024)SPP: Safe Persistent Pointers for Memory Safety2024 54th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN)10.1109/DSN58291.2024.00019(37-52)Online publication date: 24-Jun-2024
  • (2024)A verified durable transactional mutex lock for persistent x86-TSOFormal Methods in System Design10.1007/s10703-024-00462-1Online publication date: 31-Jul-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

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
  • 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
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]

Sponsors

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 15 October 2014

Permissions

Request permissions for this article.

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

Conference

SPLASH '14
Sponsor:

Acceptance Rates

OOPSLA '14 Paper Acceptance Rate 52 of 186 submissions, 28%;
Overall Acceptance Rate 268 of 1,244 submissions, 22%

Upcoming Conference

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)Puddles: Application-Independent Recovery and Location-Independent Data for Persistent MemoryProceedings of the Nineteenth European Conference on Computer Systems10.1145/3627703.3629555(575-589)Online publication date: 22-Apr-2024
  • (2024)SPP: Safe Persistent Pointers for Memory Safety2024 54th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN)10.1109/DSN58291.2024.00019(37-52)Online publication date: 24-Jun-2024
  • (2024)A verified durable transactional mutex lock for persistent x86-TSOFormal Methods in System Design10.1007/s10703-024-00462-1Online publication date: 31-Jul-2024
  • (2024)A quantitative evaluation of persistent memory hash indexesThe VLDB Journal — The International Journal on Very Large Data Bases10.1007/s00778-023-00812-133:2(375-397)Online publication date: 1-Mar-2024
  • (2023)ENTS: Flush-and-Fence-Free Failure Atomic TransactionsProceedings of the International Symposium on Memory Systems10.1145/3631882.3631907(1-16)Online publication date: 2-Oct-2023
  • (2023)TreeSLS: A Whole-system Persistent Microkernel with Tree-structured State Checkpoint on NVMProceedings of the 29th Symposium on Operating Systems Principles10.1145/3600006.3613160(1-16)Online publication date: 23-Oct-2023
  • (2023)NearPM: A Near-Data Processing System for Storage-Class ApplicationsProceedings of the Eighteenth European Conference on Computer Systems10.1145/3552326.3587456(751-767)Online publication date: 8-May-2023
  • (2023)SecPB: Architectures for Secure Non-Volatile Memory with Battery-Backed Persist Buffers2023 IEEE International Symposium on High-Performance Computer Architecture (HPCA)10.1109/HPCA56546.2023.10071082(677-690)Online publication date: Feb-2023
  • (2023)Silo: Speculative Hardware Logging for Atomic Durability in Persistent Memory2023 IEEE International Symposium on High-Performance Computer Architecture (HPCA)10.1109/HPCA56546.2023.10071034(651-663)Online publication date: Feb-2023
  • (2023)Understanding System Resilience for Converged Computing of Cloud, Edge, and HPCHigh Performance Computing10.1007/978-3-031-40843-4_17(221-233)Online publication date: 25-Aug-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