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

skip to main content
10.1145/3373376.3378456acmconferencesArticle/Chapter ViewAbstractPublication PagesasplosConference Proceedingsconference-collections
research-article
Open access

Pronto: Easy and Fast Persistence for Volatile Data Structures

Published: 13 March 2020 Publication History

Abstract

Non-Volatile Main Memories (NVMMs) promise an opportunity for fast, persistent data structures. However, building these data structures is hard because their data must be consistent in the wake of a failure. Existing methods for building persistent data structures require either in-depth code changes to an existing data structure using an NVMM-aware library or rewriting the data structure from scratch. Unfortunately, both of these methods are labor-intensive and error-prone.
Pronto is a new NVMM library that reduces the programming effort required to add persistence to volatile data structures using asynchronous semantic logging (ASL). ASL is generic enough to allow programmers to add persistence to the existing volatile data structure (e.g., C++ Standard Template Library containers) with very little programming effort. Furthermore, ASL moves most durability code off the critical path, and our evaluation shows Pronto data structures outperform highly-optimized NVMM data structures written with other libraries by a large margin.

References

[1]
M. Alshboul, J. Tuck, and Y. Solihin. 2018. Lazy Persistency: A High-Performing and Write-Efficient Software Persistency Technique. In 2018 ACM/IEEE 45th Annual International Symposium on Computer Architecture (ISCA). 439--451. https://doi.org/10.1109/ISCA.2018.00044
[2]
Andy Rudoff. 2016. Deprecating the PCOMMIT Instruction . Available at https://software.intel.com/en-us/blogs/2016/09/12/deprecate-pcommit-instruction.
[3]
Andy Rudoff. 2018. Persistent Memory Programming: The Current State and Future Direction . Available at https://www.snia.org/sites/default/files/PM-Summit/2018/presentations/03_PMSummit_18_Rudoff_Final_Post.pdf.
[4]
Anirudh Badam. 2013. How Persistent Memory will Change Software Systems . Computer, Vol. 46, 8 (August 2013), 45--51. https://doi.org/10.1109/MC.2013.189
[5]
Emery D. Berger, Kathryn S. McKinley, Robert D. Blumofe, and Paul R. Wilson. 2000. Hoard: A Scalable Memory Allocator for Multithreaded Applications (ASPLOS IX). ACM, New York, NY, USA, 117--128. https://doi.org/10.1145/378993.379232
[6]
Kumud Bhandari, Dhruva R Chakrabarti, and Hans-J Boehm. 2012. Implications of CPU Caching on Byte-Addressable Non-Volatile Memory Programming . Hewlett-Packard, Tech. Rep. HPL-2012--236 (2012).
[7]
Bill Bridge. 2015. NVM Support for C Applications . Available at http://www.snia.org/sites/default/files/BillBridgeNVMSummit2015Slides.pdf.
[8]
Chad Thibodeau, Arthur Sainio, Mark Carlson and Alex McDonald. 2017. Containers and Persistent Memory . Available at https://www.snia.org/sites/default/files/CSI/Containers-and-Persistent-Memory-FInal.pdf.
[9]
Dhruva R. Chakrabarti, Hans-J. Boehm, and Kumud Bhandari. 2014. Atlas: Leveraging Locks for Non-volatile Memory Consistency (OOPSLA '14'). ACM, New York, NY, USA, 433--452. https://doi.org/10.1145/2660193.2660224
[10]
Shimin Chen and Qin Jin. 2015. Persistent B
[11]
-trees in Non-volatile Main Memory . Proc. VLDB Endow., Vol. 8, 7 (Feb. 2015), 786--797. https://doi.org/10.14778/2752939.2752947
[12]
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, Non-volatile Memories (ASPLOS XVI). ACM, New York, NY, USA, 105--118. https://doi.org/10.1145/1950365.1950380
[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 (SOSP '09'). ACM, New York, NY, USA, 133--146. https://doi.org/10.1145/1629575.1629589
[14]
Brian F. Cooper, Adam Silberstein, Erwin Tam, Raghu Ramakrishnan, and Russell Sears. 2010. Benchmarking Cloud Serving Systems with YCSB (SoCC '10'). ACM, New York, NY, USA, 143--154. https://doi.org/10.1145/1807128.1807152
[15]
Intel Corporation. 2015. Intel/Micron 3D-Xpoint Non-Volatile Main Memory . Available at https://www.intel.com/content/www/us/en/architecture-and-technology/intel-micron-3d-xpoint-webcast.html.
[16]
J Evans. 2016. Scalable Memory Allocation using jemalloc, 2011 . (2016). https://www.facebook.com/notes/facebook-engineering/scalable-memory-allocation-using-jemalloc/480222803919
[17]
Facebook. 2017. RocksDB . http://rocksdb.org.
[18]
Bin Fan, David G. Andersen, and Michael Kaminsky. 2013. MemC3: Compact and Concurrent MemCache with Dumber Caching and Smarter Hashing. In Presented as part of the 10th USENIX Symposium on Networked Systems Design and Implementation (NSDI 13). USENIX, Lombard, IL, 371--384. https://www.usenix.org/conference/nsdi13/technical-sessions/presentation/fan
[19]
Brad Fitzpatrick. 2004. Distributed Caching with Memcached . Linux Journal, Vol. 2004, 124 (Aug. 2004). http://dl.acm.org/citation.cfm?id=1012889.1012894
[20]
Maurice P. Herlihy and Jeannette M. Wing. 1990. Linearizability: A Correctness Condition for Concurrent Objects . ACM Trans. Program. Lang. Syst., Vol. 12, 3 (July 1990), 463--492. https://doi.org/10.1145/78969.78972
[21]
Terry Ching-Hsiang Hsu, Helge Brügner, Indrajit Roy, Kimberly Keeton, and Patrick Eugster. 2017. NVthreads: Practical Persistence for Multi-threaded Applications (EuroSys '17'). ACM, New York, NY, USA, 468--482. https://doi.org/10.1145/3064176.3064204
[22]
Intel. 2015. An introduction to pmemcheck. Available at http://pmem.io/2015/07/17/pmemcheck-basic.html.
[23]
Intel Corporation. 2016. Enterprise and Cloud Storage Processor for the Digital Era . Available at https://www.intel.sg/content/www/xa/en/storage/enterprise-cloud-storage-processor.html.
[24]
Intel Corporation. 2019 a. Intel Optane DC Persistent Memory . Available at https://www.intel.com/content/www/us/en/architecture-and-technology/optane-dc-persistent-memory.html.
[25]
Intel Corporation. 2019 b. Non-Volatile Memory . Available at http://www.intel.com/content/www/us/en/architecture-and-technology/non-volatile-memory.html.
[26]
Intel Corporation. 2019 c. Persistent Memory Development Kit . Available at http://pmem.io/pmdk/.
[27]
Intel Corporation. 2019 d. PMemKV . Available at https://github.com/pmem/pmemkv.
[28]
Joseph Izraelevitz, Terence Kelly, and Aasheesh Kolli. 2016a. Failure-Atomic Persistent Memory Updates via JUSTDO Logging (ASPLOS '16'). ACM, New York, NY, USA, 427--442. https://doi.org/10.1145/2872362.2872410
[29]
Joseph Izraelevitz, Hammurabi Mendes, and Michael L. Scott. 2016b. Linearizability of Persistent Memory Objects Under a Full-System-Crash Failure Model. In Distributed Computing, Cyril Gavoille and David Ilcinkas (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 313--327.
[30]
Joseph Izraelevitz, Jian Yang, Lu Zhang, Juno Kim, Xiao Liu, Amirsaman Memaripour, Yun Joon Soh, Zixuan Wang, Yi Xu, Subramanya R. Dulloor, Jishen Zhao, and Steven Swanson. 2019. Basic Performance Measurements of the Intel Optane DC Persistent Memory Module. CoRR, Vol. abs/1903.05714 (2019). arxiv: 1903.05714 http://arxiv.org/abs/1903.05714
[31]
Sudarsun Kannan, Ada Gavrilovska, and Karsten Schwan. 2016. pVM: Persistent Virtual Memory for Efficient Capacity Scaling and Object Storage (EuroSys '16'). ACM, New York, NY, USA, Article 13, bibinfonumpages16 pages. https://doi.org/10.1145/2901318.2901325
[32]
Kevin Oleary. 2016. How to Detect Persistent Memory Programming Errors using Intel Inspector . Available at https://software.intel.com/en-us/articles/detect-persistent-memory-programming-errors-with-intel-inspector-persistence-inspector.
[33]
Xiaozhou Li, David G. Andersen, Michael Kaminsky, and Michael J. Freedman. 2014. Algorithmic Improvements for Fast Concurrent Cuckoo Hashing (EuroSys '14'). ACM, New York, NY, USA, Article 27, bibinfonumpages14 pages. https://doi.org/10.1145/2592798.2592820
[34]
Linux Kernel Organization. 2018. Direct Access for Files . Available at https://www.kernel.org/doc/Documentation/filesystems/dax.txt.
[35]
Sihang Liu, Yizhou Wei, Jishen Zhao, Aasheesh Kolli, and Samira Khan. 2019. Pmtest: A Fast and Flexible Testing Framework for Persistent Memory Programs. In Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Systems. ACM, 411--425.
[36]
Mark Carlson. 2018. Persistent Memory: What Developers Need to Know . Available at https://www.snia.org/sites/default/files/SDCEMEA/2018/Presentations/Persistent-Memory-for-Developers-SNIA-SDC-EMEA-2018.pdf.
[37]
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 (EuroSys '17'). ACM, New York, NY, USA, 499--512. https://doi.org/10.1145/3064176.3064215
[38]
Amirsaman Memaripour and Steven Swanson. 2018. Breeze: User-Level Access to Non-Volatile Main Memories for Legacy Software (ICCD '18'). 413--422. https://doi.org/10.1109/ICCD.2018.00069
[39]
Maged M. Michael and Michael L. Scott. 1996. Simple, Fast, and Practical Non-blocking and Blocking Concurrent Queue Algorithms (PODC '96'). ACM, New York, NY, USA, 267--275. https://doi.org/10.1145/248052.248106
[40]
Micron Technology. 2019 a. Breakthrough Non-Volatile Memory Technology . Available at https://www.micron.com/about/emerging-technologies/3d-xpoint-technology.
[41]
Micron Technology. 2019 b. NVDIMM . Available at https://www.micron.com/products/dram-modules/nvdimm/.
[42]
Mike Ferron-Jones. 2019. A New Breakthrough in Persistent Memory Gets Its First Public Demo . Available at https://itpeernetwork.intel.com/new-breakthrough-persistent-memory-first-public-demo/.
[43]
Chandrasekaran 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., Vol. 17, 1 (March 1992), 94--162. https://doi.org/10.1145/128765.128770
[44]
Faisal Nawab, Joseph Izraelevitz, Terence Kelly, Charles B. Morrey III, Dhruva R. Chakrabarti, and Michael L. Scott. 2017. Dalí: A Periodically Persistent Hash Map. In 31st International Symposium on Distributed Computing (DISC 2017) (Leibniz International Proceedings in Informatics (LIPIcs)), Andréa W. Richa (Ed.), Vol. 91. Schloss Dagstuhl--Leibniz-Zentrum fuer Informatik, Dagstuhl, Germany, 37:1--37:16. https://doi.org/10.4230/LIPIcs.DISC.2017.37
[45]
M. A. Ogleari, E. L. Miller, and J. Zhao. 2018. Steal but No Force: Efficient Hardware Undo
[46]
Redo Logging for Persistent Memory Systems. In 2018 IEEE International Symposium on High Performance Computer Architecture (HPCA). 336--349. https://doi.org/10.1109/HPCA.2018.00037
[47]
Steven Pelley, Peter M. Chen, and Thomas F. Wenisch. 2014. Memory Persistency (ISCA '14'). IEEE Press, Piscataway, NJ, USA, 265--276. http://dl.acm.org/citation.cfm?id=2665671.2665712
[48]
pmem.io. 2018. Using Persistent Memory Devices with the Linux Device Mapper . Available at https://pmem.io/2018/05/15/using_persistent_memory_devices_with_the_linux_device_mapper.html.
[49]
Andy Rudoff. 2017a. Persistent Memory Programming . USENIX Association, Vol. 42, 2 (2017), 34--40.
[50]
Andy Rudoff. 2017b. Persistent Memory: The Value to HPC and the Challenges (MCHPC'17). ACM, New York, NY, USA, 7--10. https://doi.org/10.1145/3145617.3158213
[51]
David Schwalb, Markus Dreseler, Matthias Uflacker, and Hasso Plattner. 2015. NVC-Hashmap: A Persistent and Concurrent Hashmap For Non-Volatile Memories (IMDM '15'). ACM, New York, NY, USA, Article 4, bibinfonumpages8 pages. https://doi.org/10.1145/2803140.2803144
[52]
Shivaram Venkataraman, Niraj Tolia, Parthasarathy Ranganathan, and Roy H. Campbell. 2011. Consistent and Durable Data Structures for Non-volatile Byte-addressable Memory (FAST'11). USENIX Association, Berkeley, CA, USA, 1. http://dl.acm.org/citation.cfm?id=1960475.1960480
[53]
Haris Volos, Andres Jaan Tack, and Michael M. Swift. 2011. Mnemosyne: Lightweight Persistent Memory (ASPLOS XVI). ACM, New York, NY, USA, 91--104. https://doi.org/10.1145/1950365.1950379
[54]
Jian Xu and Steven Swanson. 2016. NOVA: A Log-structured File System for Hybrid Volatile/Non-volatile Main Memories. In 14th USENIX Conference on File and Storage Technologies (FAST 16) . Santa Clara, CA, 323--338.
[55]
Jun Yang, Qingsong Wei, Cheng Chen, Chundong Wang, Khai Leong Yong, and Bingsheng He. 2015. NV-Tree: Reducing Consistency Cost for NVM-based Single Level Systems (FAST'15). USENIX Association, Berkeley, CA, USA, 167--181. http://dl.acm.org/citation.cfm?id=2750482.2750495
[56]
Lu Zhang and Steven Swanson. 2019. Pangolin: A Fault-Tolerant Persistent Memory Programming Library. In 2019 USENIX Annual Technical Conference (USENIX ATC 19). Renton, WA, 897--912.
[57]
Yiying Zhang, Jian Yang, Amirsaman Memaripour, and Steven Swanson. 2015. Mojim: A Reliable and Highly-Available Non-Volatile Memory System (ASPLOS '15'). ACM, New York, NY, USA, 3--18. https://doi.org/10.1145/2694344.2694370
[58]
J. Zhao, S. Li, D. H. Yoon, Y. Xie, and N. P. Jouppi. 2013. Kiln: Closing the Performance Gap between Systems with and without Persistence Support. In 2013 46th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO) . 421--432.

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)POSTER: RELAX: Durable Data Structures with Swift RecoveryProceedings of the 29th ACM SIGPLAN Annual Symposium on Principles and Practice of Parallel Programming10.1145/3627535.3638469(475-476)Online publication date: 20-Feb-2024
  • (2024)Skip It: Take Control of Your Cache!Proceedings of the 29th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 210.1145/3620665.3640407(1077-1094)Online publication date: 27-Apr-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
ASPLOS '20: Proceedings of the Twenty-Fifth International Conference on Architectural Support for Programming Languages and Operating Systems
March 2020
1412 pages
ISBN:9781450371025
DOI:10.1145/3373376
This work is licensed under a Creative Commons Attribution International 4.0 License.

Sponsors

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 13 March 2020

Permissions

Request permissions for this article.

Check for updates

Badges

Author Tags

  1. asynchronous logging
  2. data structures
  3. non-volatile memory
  4. persistent memory
  5. persistent objects
  6. semantic logging
  7. snapshots
  8. storage systems

Qualifiers

  • Research-article

Funding Sources

Conference

ASPLOS '20

Acceptance Rates

Overall Acceptance Rate 535 of 2,713 submissions, 20%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)262
  • Downloads (Last 6 weeks)61
Reflects downloads up to 30 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)POSTER: RELAX: Durable Data Structures with Swift RecoveryProceedings of the 29th ACM SIGPLAN Annual Symposium on Principles and Practice of Parallel Programming10.1145/3627535.3638469(475-476)Online publication date: 20-Feb-2024
  • (2024)Skip It: Take Control of Your Cache!Proceedings of the 29th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 210.1145/3620665.3640407(1077-1094)Online publication date: 27-Apr-2024
  • (2024)When Learned Indexes Meet Persistent Memory: The Analysis and the OptimizationIEEE Transactions on Knowledge and Data Engineering10.1109/TKDE.2023.334282536:12(9517-9531)Online publication date: Dec-2024
  • (2024)Boosting Write Performance of KV Stores: An NVM - Enabled Storage Collaboration Approach2024 IEEE 40th International Conference on Data Engineering (ICDE)10.1109/ICDE60146.2024.00166(2082-2095)Online publication date: 13-May-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)Converting Concurrent Range Index Structure to Range Index Structure for Disaggregated MemoryApplied Sciences10.3390/app13201113013:20(11130)Online publication date: 10-Oct-2023
  • (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)PLayer: Expanding Coherence Protocol Stack with a Persistence LayerProceedings of the 1st Workshop on Disruptive Memory Systems10.1145/3609308.3625270(8-15)Online publication date: 23-Oct-2023
  • (2023)DGAP: Efficient Dynamic Graph Analysis on Persistent MemoryProceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis10.1145/3581784.3607106(1-13)Online publication date: 12-Nov-2023
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media