skip to main content
research-article

B3-Tree: Byte-Addressable Binary B-Tree for Persistent Memory

Authors Info & Claims
Published:16 July 2020Publication History
Skip Abstract Section

Abstract

In this work, we propose B3-tree, a hybrid index for persistent memory that leverages the byte-addressability of the in-memory index and the page locality of B-trees. As in the byte-addressable in-memory index, B3-tree is updated by 8-byte store instructions. Also, as in disk-based index, B3-tree is failure-atomic since it makes every 8-byte store instruction transform a consistent index into another consistent index without the help of expensive logging. Since expensive logging becomes unnecessary, the number of cacheline flush instructions required for B3-tree is significantly reduced. Our performance study shows that B3-tree outperforms other state-of-the-art persistent indexes in terms of insert and delete performance. While B3-tree shows slightly worse performance for point query performance, the range query performance of B3-tree is 2x faster than FAST and FAIR B-tree because the leaf page size of B3-tree can be set to 8x larger than that of FAST and FAIR B-tree without degrading insertion performance. We also show that read transactions can access B3-tree without acquiring a shared lock because B3-tree remains always consistent while a sequence of 8-byte write operations are making changes to it. As a result, B3-tree provides high concurrency level comparable to FAST and FAIR B-tree.

References

  1. Joy Arulraj, Andrew Pavlo, and Subramanya R. Dulloor. 2015. Let’s talk about storage 8 recovery methods for non-volatile memory database systems. In Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data. ACM, 707--722.Google ScholarGoogle Scholar
  2. Trevor Brown. 2015. Reclaiming memory for lock-free data structures: There has to be better way. In Proceedings of the 34th ACM Symposium on the Principles of Distributed Computing (PODC’15).Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Shimin Chen and Qin Jin. 2015. Persistent B+-Trees in non-volatile main memory. In Proceedings of the VLDB Endowment (PVLDB) 8, 7 (2015), 786--797.Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Vijay Chidambaram, Thanumalayan Sankaranarayana Pillai, Andrea C. Arpaci-Dusseau, and Remzi H. Arpaci-Dusseau. 2013. Optimistic crash consistency. In Proceedings of the 24th ACM Symposium on Operating Systems Principles (SOSP).Google ScholarGoogle Scholar
  5. Nachshon Cohen and Erez Petrank. 2015. Efficient memory management for lock-free data structures with optimistic access. In Proceedings of the 27th ACM Symposium on Parallelism in Algorithms and Architectures (SPAA’15).Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. J. Condit, E. B. Nightingale, C. Frost, E. Ipek, B. C. Lee, D. Burger, and D. Coetzee. 2009. Better I/O through byte-addressable, persistent memory. In Proceedings of the 22nd ACM Symposium on Operating Systems Principles (SOSP).Google ScholarGoogle Scholar
  7. Ru Fang, Hui-I Hsiao, Bin He, C. Mohan, and Yun Wang. 2011. High performance database logging using storage class memory. In Proceedings of the 27th International Conference on Data Engineering (ICDE). 1221--1231.Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Thomas E. Harta, Paul E. McKenney, Angela Demke Brown, and Jonathan Walpole. 2007. Performance of memory reclamation for lockless synchronization. J. Parallel and Distrib. Comput. 67 (2007), 1270--1285.Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Yiming Huai. 2008. Spin-transfer torque MRAM (STT-MRAM): Challenges and prospects. AAPPS Bulletin 18, 6 (2008), 33--40.Google ScholarGoogle Scholar
  10. Jian Huang, Karsten Schwan, and Moinuddin K. Qureshi. 2014. NVRAM-aware logging in transaction systems. Proceedings of the VLDB Endowment 8, 4 (2014).Google ScholarGoogle Scholar
  11. Deukyeon Hwang, Wook-Hee Kim, Youjip Won, and Beomseok Nam. 2018. Endurable transient inconsistency in byte-addressable persistent b+-trees. In Proceedings of the 16th USENIX Conference on File and Storage (FAST).Google ScholarGoogle Scholar
  12. Intel. 2018. Intel and Micron produce breakthrough memory technology. https://newsroom.intel.com/news-releases/intel-and-micron-produce-breakthrough-memory-technology.Google ScholarGoogle Scholar
  13. Olzhas Kaiyrakhmet, Songyi Lee, Beomseok Nam, Sam H. Noh, and Young-Ri Choi. 2019. SLM-DB: Single-level key-value store with persistent memory. In Proceedings of the 17th USENIX Conference on File and Storage (FAST).Google ScholarGoogle Scholar
  14. Changkyu Kim, Jatin Chhugani, Nadathur Satish, Eric Sedlar, Anthony D. Nguyen, Tim Kaldewey, Victor W. Lee, Scott A. Brandt, and Pradeep Dubey. 2010. FAST: Fast architecture sensitive tree search on modern CPUs and GPUs. In Proceedings of 2010 ACM SIGMOD International Conference on Management of Data (SIGMOD).Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Wook-Hee Kim, Jinwoong Kim, Woongki Baek, Beomseok Nam, and Youjip Won. 2016. NVWAL: Exploiting NVRAM in write-ahead logging. In Proceedings of the 21st International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS).Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Wook-Hee Kim, Beomseok Nam, Dongil Park, and Youjip Won. 2014. Resolving journaling of journal anomaly in android I/O: Multi-version B-tree with lazy split. In Proceedings of the 11th USENIX Conference on File and Storage Technologies (FAST).Google ScholarGoogle Scholar
  17. Aasheesh Kolli, Steven Pelley, Ali Saidi, Peter M. Chen, and Thomas F. Wenisch. 2016. High-performance transactions for persistent memories. In Proceedings of the 21st International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS). 399--411.Google ScholarGoogle Scholar
  18. HP Enterprise Lab. 2018. Quartz. https://github.com/HewlettPackard/quartz.Google ScholarGoogle Scholar
  19. Eunji Lee, Hyokyung Bahn, and Sam H. Noh. 2013. Unioning of the buffer cache and journaling layers with non-volatile memory. In Proceedings of the 11th USENIX Conference on File and Storage Technologies (FAST).Google ScholarGoogle Scholar
  20. Se Kwon Lee, K. Hyun Lim, Hyunsub Song, Beomseok Nam, and Sam H. Noh. 2017. WORT: Write optimal radix tree for persistent memory storage systems. In Proceedings of the 15th USENIX Conference on File and Storage Technologies (FAST).Google ScholarGoogle Scholar
  21. Wongun Lee, Keonwoo Lee, Hankeun Son, Wook-Hee Kim, Beomseok Nam, and Youjip Won. 2015. WALDIO: Eliminating the filesystem journaling in resolving the journaling of journal anomaly. In Proceedings of the 2015 USENIX Anual Technical Conference.Google ScholarGoogle Scholar
  22. Philip L. Lehman and S. Bing Yao. 1981. Efficient locking for concurrent operations on B-trees. ACM Transactions on Database Systems 6, 4 (1981), 650--670.Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Victor Leis, Alfons Kemper, and Thomas Neumann. 2014. Exploiting hardware transactional memory in main-memory databases. In Proceedings of the 30th International Conference on Data Engineering (ICDE).Google ScholarGoogle ScholarCross RefCross Ref
  24. Lucas Lersch, Xiangpeng Hao, Ismail Oukid, Tianzheng Wang, and Thomas Willhalm. 2019. Evaluating persistent memory range indexes. Proceedings of the VLDB Endowment (PVLDB) 13, 4 (2019), 574--587.Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Sparsh Mittal and Jeffrey S. Vetter. 2016. A survey of software techniques for using non-volatile memories for storage and main memory systems. IEEE Transactions on Parallel and Distributed Systems 27, 5 (May 2016), 1537--1550.Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Sparsh Mittal, Jeffrey S. Vetter, and Dong Li. 2015. A survey of architectural approaches for managing embedded DRAM and non-volatile on-chip caches. IEEE Transactions on Parallel and Distributed Systems 26, 6 (June 2015), 1524--1537.Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Moohyeon Nam, Hokeun Cha, Young ri Choi, Sam H. Noh, and Beomseok Nam. 2019. Write-optimized dynamic hashing for persistent memory. In Proceedings of the 17th USENIX Conference on File and Storage (FAST).Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Gihwan Oh, Sangchul Kim, Sang-Won Lee, and Bongki Moon. 2015. SQLite optimization with phase change memory for mobile applications. Proceedings of the VLDB Endowment (PVLDB) 8, 12 (2015), 1454--1465.Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Jiaxin Ou, Jiwu Shu, and Youyou Lu. 2016. A high performance file system for non-volatile main memory. In Proceedings of the 11th European Conference on Computer Systems (EuroSys 16).Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Ismail Oukid, Johan Lasperas, Anisoara Nica, Thomas Willhalm, and Wolfgang Lehner. 2016. FPTree: A hybrid SCM-DRAM persistent and concurrent B-tree for storage class memory. In Proceedings of 2016 ACM SIGMOD International Conference on Management of Data (SIGMOD).Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Jun Rao and Kenneth A. Ross. 1999. Cache conscious indexing for decision-support in main memory. In Proceedings of the 25th International Conference on Very Large Data Bases (VLDB).Google ScholarGoogle Scholar
  32. Jun Rao and Keneeth A. Ross. 2000. Making B+-trees cache conscious in main memory. In Proceedings of 2000 ACM SIGMOD International Conference on Management of Data (SIGMOD).Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Jihye Seo, Wook-Hee Kim, Woongki Baek, Beomseok Nam, and Sam H. Noh. 2017. Failure-atomic slotted paging for persistent memory. In Proceedings of the 22nd International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS).Google ScholarGoogle Scholar
  34. Kai Shen, Stan Park, and Meng Zhu. 2014. Journaling of journal is (almost) free. In Proceedings of the 11th USENIX Conference on File and Storage Technologies (FAST).Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Abraham Silberschatz, Henry Korth, and S. Sudarshan. 2005. Database Systems Concepts. McGraw-Hill.Google ScholarGoogle Scholar
  36. Santhosh Srinath, Onur Mutlu, Hyesoon Kim, and Yale N. Patt. 2007. Feedback directed prefetching: Improving the performance and bandwidth-efficiency of hardware prefetchers. In Proceedings of IEEE 13th International Symposium on High Performance Computer Architecture (HPCA).Google ScholarGoogle Scholar
  37. Shivaram Venkataraman, Niraj Tolia, Parthasarathy Ranganathan, and Roy H. Campbell. 2011. Consistent and durable data structures for non-volatile byte-addressable memory. In Proceedings of the 9th USENIX Conference on File and Storage Technologies (FAST).Google ScholarGoogle Scholar
  38. Haris Volos, Guilherme Magalhaes, Ludmila Cherkasova, and Jun Li. 2015. Quartz: A lightweight performance emulator for persistent memory software. In Proceedings of the 15th Annual Middleware Conference (Middleware’15).Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Haris Volos, Andres Jaan Tack, and Michael M. Swift. 2011. Mnemosyne: Lightweight persistent memory. In Proceedings of the 16th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS).Google ScholarGoogle Scholar
  40. Youjip Won, Jaemin Jung, Gyeongyeol Choi, Joontaek Oh, Seongbae Son, Jooyoung Hwang, and Sangyeun Cho. 2018. Barrier-enabled io stack for flash storage. In Proceedings of the 11th USENIX Conference on File and Storage (FAST).Google ScholarGoogle Scholar
  41. H.-S. Philip Wong, Simone Raoux, SangBum Kim, Jiale Liang, John P. Reifenberg, Bipin Rajendran, Mehdi Asheghi, and Kenneth E. Goodson. 2010. Phase change memory. Proc. IEEE 98, 12 (2010), 2201--2227.Google ScholarGoogle ScholarCross RefCross Ref
  42. Jun Yang, Qingsong Wei, Cheng Chen, Chundong Wang, and Khai Leong Yong. 2015. NV-Tree: Reducing consistency const for NVM-based single level systems. In Proceedings of the 13th USENIX Conference on File and Storage Technologies (FAST).Google ScholarGoogle Scholar
  43. Yiying Zhang and Steven Swanson. 2015. A study of application performance with non-volatile main memory. In Proceedings of the 31st International Conference on Massive Storage Systems (MSST).Google ScholarGoogle ScholarCross RefCross Ref
  44. Pengfei Zuo and Yu Hua. 2017. A write-friendly hashing scheme for non-volatile memory systems. In Proceedings of the 33rd International Conference on Massive Storage Systems and Technology (MSST).Google ScholarGoogle Scholar

Index Terms

  1. B3-Tree: Byte-Addressable Binary B-Tree for Persistent Memory

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image ACM Transactions on Storage
        ACM Transactions on Storage  Volume 16, Issue 3
        August 2020
        150 pages
        ISSN:1553-3077
        EISSN:1553-3093
        DOI:10.1145/3410885
        • Editor:
        • Sam H. Noh
        Issue’s Table of Contents

        Copyright © 2020 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 16 July 2020
        • Online AM: 7 May 2020
        • Accepted: 1 April 2020
        • Revised: 1 January 2020
        • Received: 1 March 2019
        Published in tos Volume 16, Issue 3

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • research-article
        • Research
        • Refereed

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader

      HTML Format

      View this article in HTML Format .

      View HTML Format
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!