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.
- OpenLDAP. At http://www.openldap.org.Google Scholar
- 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 Scholar
- POSIX cond-wait/cond-notify. At http://pubs.opengroup.org.Google Scholar
- Process Integration, Devices, and Structures. International Technology Roadmap for Semiconductors, 2007.Google Scholar
- Leveldb. At https://code.google.com/p/leveldb,.Google Scholar
- NVDIMM Technology. At http://www.vikingtechnology.com/nvdimm-technology, retrieved 03/2014.Google Scholar
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- C. Clark. A hash table data structure in C. At https://github.com/davidar/c-hashtable.Google Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Dormando. Memcached: a distributed memory object caching system. At http://memcached.org, retrieved 11/2013.Google Scholar
- 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 Scholar
Digital Library
- V. K. Garg. Elements of Distributed Computing. Wiley-InterScience, 2002. Google Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- J. Larus and R. Rajwar. Transactional Memory. Morgan and Claypool Publishers, 2007. ISBN 1-59829-124-6.Google Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Memcached authors. Memcached: what is this thing? At http://code.google.com/p/memcached/wiki/NewOverview, retrieved 11/2013.Google Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- S. Pelley, P. M. Chen, and T. F. Wenisch. Memory persistency. In Proc. of the 41st International Symposium on Computer Architecture, Jun 2014. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- P. Snyder. tmpfs: A virtual memory file system. In Autumn European Unix Users' Group Conference, 1990.Google Scholar
- D. B. Strukov, G. S. Snider, D. R. Stewart, and R. S.Williams. The missing memristor found. Nature, 453:80--83, 2008.Google Scholar
Cross Ref
- Draft specification of transactional language constructs for C++. Transactional memory specification drafting group, Feb 2012. At https://sites.google.com/site/tmforcplusplus.Google Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- L. Ziarek, P. Schatz, and S. Jagannathan. Modular Check-pointing for Atomicity. Electr. Notes Theor. Comput. Sci., 174(9):85--115, 2007. Google Scholar
Digital Library
Index Terms
Atlas: leveraging locks for non-volatile memory consistency
Recommendations
Atlas: leveraging locks for non-volatile memory consistency
OOPSLA '14: Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & ApplicationsNon-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 ...
NVM duet: unified working memory and persistent store architecture
ASPLOS '14: Proceedings of the 19th international conference on Architectural support for programming languages and operating systemsEmerging non-volatile memory (NVM) technologies have gained a lot of attention recently. The byte-addressability and high density of NVM enable computer architects to build large-scale main memory systems. NVM has also been shown to be a promising ...
NVM duet: unified working memory and persistent store architecture
ASPLOS '14Emerging non-volatile memory (NVM) technologies have gained a lot of attention recently. The byte-addressability and high density of NVM enable computer architects to build large-scale main memory systems. NVM has also been shown to be a promising ...







Comments