skip to main content
article

Transactional data structure libraries

Published:02 June 2016Publication History
Skip Abstract Section

Abstract

We introduce transactions into libraries of concurrent data structures; such transactions can be used to ensure atomicity of sequences of data structure operations. By focusing on transactional access to a well-defined set of data structure operations, we strike a balance between the ease-of-programming of transactions and the efficiency of custom-tailored data structures. We exemplify this concept by designing and implementing a library supporting transactions on any number of maps, sets (implemented as skiplists), and queues. Our library offers efficient and scalable transactions, which are an order of magnitude faster than state-of-the-art transactional memory toolkits. Moreover, our approach treats stand-alone data structure operations (like put and enqueue) as first class citizens, and allows them to execute with virtually no overhead, at the speed of the original data structure library.

References

  1. Concurrentskiplistmap from java.util.concurrent. http: //docs.oracle.com/javase/7/docs/api/java/util/ concurrent/ConcurrentSkipListMap.html.Google ScholarGoogle Scholar
  2. C++ concurrent data structures from libcd. http://libcds. sourceforge.net/.Google ScholarGoogle Scholar
  3. Tl2 implementation. github.com/daveboutcher/tl2-x86-mp.Google ScholarGoogle Scholar
  4. N. G. Bronson, J. Casper, H. Chafi, and K. Olukotun. Transactional predication: High-performance concurrent sets and maps for stm. In PODC, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. N. G. Bronson, J. Casper, H. Chafi, and K. Olukotun. A practical concurrent binary search tree. In ACM Sigplan Notices, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. C. Cascaval, C. Blundell, M. Michael, H. W. Cain, P. Wu, S. Chiras, and S. Chatterjee. Software transactional memory: Why is it only a research toy? Queue, 6(5):40:46–40:58, Sept. 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. S. Cherem, T. Chilimbi, and S. Gulwani. Inferring locks for atomic sections. In PLDI, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. T. Crain, V. Gramoli, and M. Raynal. A contention-friendly methodology for search structures. Technical report, RR-1989, INRIA, 2012.Google ScholarGoogle Scholar
  9. T. Crain, V. Gramoli, and M. Raynal. No hot spot non-blocking skip list. In ICDCS, pages 196–205, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. D. Dice, O. Shalev, and N. Shavit. Transactional locking ii. In Distributed Computing, pages 194–208. Springer, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. I. Dick, A. Fekete, and V. Gramoli. Logarithmic data structures for multicores. Technical report, 697, University of Sydney, 2014.Google ScholarGoogle Scholar
  12. K. P. Eswaran, J. N. Gray, R. A. Lorie, and I. L. Traiger. The notions of consistency and predicate locks in a database system. Commun. ACM, 1976. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. K. Fraser. Practical lock-freedom. PhD thesis, University of Cambridge, 2004.Google ScholarGoogle Scholar
  14. G. Golan-Gueta, G. Ramalingam, M. Sagiv, and E. Yahav. Concurrent libraries with foresight. In PLDI, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. G. Golan-Gueta, G. Ramalingam, M. Sagiv, and E. Yahav. Automatic scalable atomicity via semantic locking. In PPOPP, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. V. Gramoli. More than you ever wanted to know about synchronization: Synchrobench, measuring the impact of the synchronization on concurrent algorithms. In PPoPP, pages 1–10, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. R. Guerraoui and M. Kapalka. On the correctness of transactional memory. In PPoPP, pages 175–184, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. R. Guerraoui, T. A. Henzinger, and V. Singh. Software transactional memory on relaxed memory models. In Computer Aided Verification, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. B. Haagdorens, T. Vermeiren, and M. Goossens. Improving the performance of signature-based network intrusion detection sensors by multi-threading. In WISA’04, pages 188–203, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. T. Harris, J. Larus, and R. Rajwar. Transactional Memory, 2nd Edition. Morgan and Claypool Publishers, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. S. Heller, M. Herlihy, V. Luchangco, M. Moir, W. N. Scherer III, and N. Shavit. A lazy concurrent list-based set algorithm. In Principles of Distributed Systems, pages 3–16. 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. M. Herlihy. The transactional manifesto: Software engineering and non-blocking synchronization. In PLDI, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. M. Herlihy and E. Koskinen. Transactional boosting: a methodology for highly-concurrent transactional objects. In PPoPP, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. M. Herlihy and J. E. B. Moss. Transactional memory: Architectural support for lock-free data structures. In ISCA, pages 289–300, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. M. Herlihy and N. Shavit. The art of multiprocessor programming. Morgan Kaufmann, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. M. Herlihy, V. Luchangco, M. Moir, and W. N. Scherer, III. Software transactional memory for dynamic-sized data structures. In PODC, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. M. Herlihy, Y. Lev, V. Luchangco, and N. Shavit. A provably correct scalable concurrent skip list. In OPODIS, 2006.Google ScholarGoogle Scholar
  28. M. Herlihy, Y. Lev, V. Luchangco, and N. Shavit. A simple optimistic skiplist algorithm. In SIROCCO, pages 124–138. 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. M. Herlihy, Y. Lev, and N. Shavit. A lock-free concurrent skiplist with wait-free search. Unpublished Manuscript, Sun Microsystems Laboratories, Burlington, Massachusetts, 2007.Google ScholarGoogle Scholar
  30. M. P. Herlihy and J. M. Wing. Linearizability: A correctness condition for concurrent objects. ACM Trans. Program. Lang. Syst., July 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. N. Herman, J. Priya Inala, Y. Huang, L. Tsai, E. Kohler, B. Liskov, and L. Shrira. Type-aware transactions for faster concurrent code. In EuroSys, 2016. To appear. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. M. Hicks, J. S. Foster, and P. Prattikakis. Lock inference for atomic sections. In ACM SIGPLAN Workshop on Languages, Compilers, and Hardware Support for Transactional Computing, June 2006.Google ScholarGoogle Scholar
  33. Intel. Intel transactional synchronization extensions. In Intel architecture instruction set extensions programming reference. 2012.Google ScholarGoogle Scholar
  34. E. Koskinen, M. Parkinson, and M. Herlihy. Coarse-grained transactions. In POPL, pages 19–30, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. M. Kulkarni, K. Pingali, B. Walter, G. Ramanarayanan, K. Bala, and L. P. Chew. Optimistic parallelism requires abstractions. In PLDI, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. D. Lea. Concurrent programming in Java: design principles and patterns. Addison-Wesley Professional, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. D. Lea. Overview of package util. concurrent release 1.3. 4. http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/ dl/util/concurrent/intro.html, Retrieved 2011-01-01.Google ScholarGoogle Scholar
  38. V. J. Marathe, M. F. Spear, and M. L. Scott. Transaction safe nonblocking data structures. In DISC, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. A. Matveev, N. Shavit, P. Felber, and P. Marlier. Read-log-update: a lightweight synchronization mechanism for concurrent programming. In SOSP, pages 168–183, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. B. McCloskey, F. Zhou, D. Gay, and E. Brewer. Autolocker: synchronization inference for atomic sections. In POPL, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. C. C. Minh, J. Chung, C. Kozyrakis, and K. Olukotun. Stamp: Stanford transactional applications for multi-processing. In Workload Characterization, IISWC 2008, pages 35–46, 2008.Google ScholarGoogle Scholar
  42. Y. Ni, V. S. Menon, A.-R. Adl-Tabatabai, A. L. Hosking, R. L. Hudson, J. E. B. Moss, B. Saha, and T. Shpeisman. Open nesting in software transactional memory. In PPoPP, pages 68–78, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. D. Perelman, A. Byshevsky, O. Litmanovich, and I. Keidar. Smv: Selective multi-versioning stm. In DISC, pages 125–140, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. W. Pugh. Concurrent maintenance of skip lists. 1998.Google ScholarGoogle Scholar
  45. R. Rajwar and J. R. Goodman. Speculative lock elision: Enabling highly concurrent multithreaded execution. In MICRO, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. M. Scott. Transactional memory today. SIGACT News, 46(2):96–104, June 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. O. Shacham, N. G. Bronson, A. Aiken, M. Sagiv, M. T. Vechev, and E. Yahav. Testing atomicity of composed concurrent operations. In OOPSLA, pages 51–64, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. N. Shavit and I. Lotan. Skiplist-based concurrent priority queues. In IPDPS, pages 263–268, 2000.Google ScholarGoogle ScholarCross RefCross Ref
  49. H. Sundell and P. Tsigas. Fast and lock-free concurrent priority queues for multi-thread systems. In IPDPS, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. A. Turon. Reagents: expressing and composing fine-grained concurrency. In ACM SIGPLAN Notices, volume 47, pages 157–168, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. O. Ziv, A. Aiken, G. Golan-Gueta, G. Ramalingam, and M. Sagiv. Composing concurrency control. SIGPLAN Not., 50(6), June 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Transactional data structure libraries

      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 SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 51, Issue 6
        PLDI '16
        June 2016
        726 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/2980983
        • Editor:
        • Andy Gill
        Issue’s Table of Contents
        • cover image ACM Conferences
          PLDI '16: Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation
          June 2016
          726 pages
          ISBN:9781450342612
          DOI:10.1145/2908080
          • General Chair:
          • Chandra Krintz,
          • Program Chair:
          • Emery Berger

        Copyright © 2016 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 2 June 2016

        Check for updates

        Qualifiers

        • article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

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

      Learn more

      Got it!