Dalí: A Periodically Persistent Hash Map

Authors Faisal Nawab, Joseph Izraelevitz, Terence Kelly, Charles B. Morrey III, Dhruva R. Chakrabarti, Michael L. Scott

Thumbnail PDF


  • Filesize: 0.63 MB
  • 17 pages

Document Identifiers

Author Details

Faisal Nawab
Joseph Izraelevitz
Terence Kelly
Charles B. Morrey III
Dhruva R. Chakrabarti
Michael L. Scott

Cite AsGet BibTex

Faisal Nawab, Joseph Izraelevitz, Terence Kelly, Charles B. Morrey III, Dhruva R. Chakrabarti, and Michael L. Scott. Dalí: A Periodically Persistent Hash Map. In 31st International Symposium on Distributed Computing (DISC 2017). Leibniz International Proceedings in Informatics (LIPIcs), Volume 91, pp. 37:1-37:16, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2017)


Technology trends suggest that byte-addressable nonvolatile memory (NVM) will supplant many uses of DRAM over the coming decade, raising the prospect of inexpensive recovery from power failures and similar faults. Ensuring the consistency of persistent state remains nontrivial, however, in the presence of volatile caches; cached values can "leak" back to persistent memory in arbitrary order. To ensure consistency, existing persistent memory algorithms use expensive, explicit write-back instructions to force each value back to memory before performing a dependent write, thereby incurring significant run-time overhead. To reduce this overhead, we present a new design paradigm that we call periodic persistence. In a periodically persistent data structure, updates are made "in place," but can safely leak back to memory in any order, because only those updates that are known to be valid will be heeded during recovery. To guarantee forward progress, we periodically force a write-back of all dirty data in the cache, ensuring that all "sufficiently old" updates have indeed become persistent, at which point they become semantically visible to the recovery process. As an example of periodic persistence, we present a transactional hash map, Dalí, together with an informal proof of safety (buffered durable linearizability). Experiments with a prototype implementation suggest that periodic persistence can offer substantially better performance than either file-based or incrementally persistent (per-access write-back) alternatives.
  • data structure
  • nonvolatile memory
  • durable linearizability


  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    PDF Downloads


  1. Joy Arulraj, Andrew Pavlo, and Subramanya R. Dulloor. Let’s talk about storage: Recovery methods for non-volatile memory database systems. In SIGMOD, Melbourne, Australia, 2015. Google Scholar
  2. Kumud Bhandari, Dhruva R. Chakrabarti, and Hans-J. Boehm. Makalu: Fast recoverable allocation of non-volatile memory. In OOPSLA, Amsterdam, Netherlands, 2016. Google Scholar
  3. João Cachopo and António Rito-Silva. Versioned boxes as the basis for memory transactions. Science of Computer Programming, 63(2):172-185, December 2006. Google Scholar
  4. Dhruva Chakrabarti, Hans-J. Boehm, and Kumud Bhandari. Leveraging locks for NVM consistency. In OOPSLA, Portland, OR, USA, 2014. URL: http://dx.doi.org/10.1145/2660193.2660224.
  5. Andreas Chatzistergiou, Marcelo Cintra, and Stratis D. Viglas. Recovery write-ahead system for in-memory non-volatile data-structures. Proc. VLDB Endow., 8(5), January 2015. URL: http://dx.doi.org/10.14778/2735479.2735483.
  6. Shimin Chen and Qin Jin. Persistent B+-trees in non-volatile main memory. Proc. VLDB Endow., 8(7), 2015. Google Scholar
  7. Joel Coburn, Adrian M. Caulfield, Ameen Akel, Laura M. Grupp, Rajesh K. Gupta, Ranjit Jhala, and Steven Swanson. Making persistent objects fast and safe with NVM. In ASPLOS, Newport Beach, CA, USA, 2011. URL: http://dx.doi.org/10.1145/1950365.1950380.
  8. Jeremy Condit, Edmund B. Nightingale, Christopher Frost, Engin Ipek, Benjamin C. Lee, Doug Burger, and Derrick Coetzee. Better I/O through byte-addressable, persistent memory. In SOSP, Big Sky, MT, USA, 2009. Google Scholar
  9. Brian F Cooper, Adam Silberstein, Erwin Tam, Raghu Ramakrishnan, and Russell Sears. Benchmarking cloud serving systems with YCSB. In SOCC, Indianapolis, IN, USA, 2010. Google Scholar
  10. Justin DeBrabant, Joy Arulraj, Andrew Pavlo, Michael Stonebraker, Stan Zdonik, and Subramanya R. Dulloor. A prolegomenon on OLTP database systems for non-volatile memory. Proc. VLDB Endow., 7(14), 2014. Google Scholar
  11. Anamika Dey, Alan Fekete, Raghunath Nambiar, and Uwe Rohm. YCSB+T: Benchmarking web-scale transactional databases. In ICDEW, Chicago, IL, USA, 2014. Google Scholar
  12. James R. Driscoll, Neil Sarnak, Daniel D. Sleator, and Robert E. Tarjan. Making data structures persistent. In STOC, Berkeley, CA, USA, 1986. Google Scholar
  13. Eric R. Giles, Kshitij Doshi, and Peter Varman. Softwrap: A lightweight framework for transactional support of storage class memory. In MSST, Santa Clara, CA, USA, 2015. Google Scholar
  14. Jim Gray, Paul McJones, Mike Blasgen, Bruce Lindsay, Raymond Lorie, Tom Price, Franco Putzolu, and Irving Traiger. The recovery manager of the System R database manager. ACM Computing Survey, 13(2):223-242, June 1981. Google Scholar
  15. Theo Haerder and Andreas Reuter. Principles of transaction-oriented database recovery. ACM Computing Survey, 15(4):287-317, December 1983. Google Scholar
  16. Intel Corp. Intel architecture instruction set extensions programming reference. Technical Report 319433-022, Intel Corp., October 2014. Google Scholar
  17. Joseph Izraelevitz, Hammurabi Mendes, and Michael L. Scott. Linearizability of persistent memory objects under a full-system-crash failure model. In DISC, Paris, France, 2016. Google Scholar
  18. Hideaki Kimura. FOEDUS: OLTP engine for a thousand cores and NVRAM. In SIGMOD, Melbourne, Australia, 2015. Google Scholar
  19. Christoph Lameter. Effective synchronization on Linux/NUMA systems. In Proc. of the Gelato Federation Meeting, San Jose, CA, USA, 2005. Google Scholar
  20. Paul E. McKenney, Dipankar Sarma, Andrea Arcangeli, Andi Kleen, Orran Krieger, and Rusty Russell. Read copy update. In Ottawa Linux Symposium, Ottowa, Canada, 2002. Google Scholar
  21. Sanketh Nalli, Swapnil Haria, Mark D. Hill, Michael M. Swift, Haris Volos, and Kimberly Keeton. An analysis of persistent memory use with WHISPER. In ASPLOS, Xi'an, China, 2017. Google Scholar
  22. Chris Okasaki. Purely functional data structures. Cambridge University Press, 1999. Google Scholar
  23. Ismail Oukid, Johan Lasperas, Anisoara Nica, Thomas Willhalm, and Wolfgang Lehner. FPTree: A Hybrid SCM-DRAM Persistent and Concurrent B-Tree for Storage Class Memory. In SIGMOD, San Francisco, CA, USA, 2016. Google Scholar
  24. David Schwalb, Markus Dreseler, Matthias Uflacker, and Hasso Plattner. NVC-Hashmap: A persistent and concurrent hashmap for non-volatile memories. In IMDM, Kohala Coast, HI, USA, 2015. Google Scholar
  25. Storage Networking Industry Association (SNIA) Non-Volatile Memory Programming Model. URL: http://www.snia.org/tech_activities/standards/curr_standards/npm.
  26. Stephen Tu, Wenting Zheng, Eddie Kohler, Barbara Liskov, and Samuel Madden. Speedy transactions in multicore in-memory databases. In SOSP, Farmington, PA, USA, 2013. Google Scholar
  27. Haris Volos, Andres Jaan Tack, and Michael M. Swift. Lightweight persistent memory. In ASPLOS, Newport Beach, CA, USA, 2011. URL: http://dx.doi.org/10.1145/1950365.1950379.
  28. Jun Yang, Qingsong Wei, Cheng Chen, Chundong Wang, Khai Leong Yong, and Bingsheng He. http://dl.acm.org/citation.cfm?id=2750495: Reducing consistency cost for NVM-based single level systems. In FAST, Santa Clara, CA, USA, 2015.
  29. Tatu Ylönen. Concurrent shadow paging: A new direction for database research. Technical Report 1992/TKO-B86, Helsinki University of Technology, Helsinki, Finland, 1992. Google Scholar