Transactional data structure libraries

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.

[1]  Alexander Aiken,et al.  Composing concurrency control , 2015, PLDI.

[2]  Eran Yahav,et al.  Concurrent libraries with foresight , 2013, PLDI 2013.

[3]  Jeffrey S. Foster,et al.  Lock Inference for Atomic Sections , 2006 .

[4]  Marnix Goossens,et al.  Improving the Performance of Signature-Based Network Intrusion Detection Sensors by Multi-threading , 2004, WISA.

[5]  Bratin Saha,et al.  Open nesting in software transactional memory , 2007, PPOPP.

[6]  Vincent Gramoli,et al.  More than you ever wanted to know about synchronization: synchrobench, measuring the impact of the synchronization on concurrent algorithms , 2015, PPoPP.

[7]  Rachid Guerraoui,et al.  Software Transactional Memory on Relaxed Memory Models , 2009, CAV.

[8]  Maurice Herlihy,et al.  Linearizability: a correctness condition for concurrent objects , 1990, TOPL.

[9]  Maurice Herlihy,et al.  Software transactional memory for dynamic-sized data structures , 2003, PODC '03.

[10]  Eddie Kohler,et al.  Type-aware transactions for faster concurrent code , 2016, EuroSys.

[11]  Nir Shavit,et al.  Read-log-update: a lightweight synchronization mechanism for concurrent programming , 2015, SOSP.

[12]  Aaron Turon Reagents: expressing and composing fine-grained concurrency , 2012, PLDI '12.

[13]  Kunle Olukotun,et al.  STAMP: Stanford Transactional Applications for Multi-Processing , 2008, 2008 IEEE International Symposium on Workload Characterization.

[14]  Doug Lea,et al.  Concurrent programming in Java - design principles and patterns , 1996, Java series.

[15]  Håkan Grahn,et al.  Transactional memory , 2010, J. Parallel Distributed Comput..

[16]  Keshav Pingali,et al.  Optimistic parallelism requires abstractions , 2007, PLDI '07.

[17]  James R. Goodman,et al.  Speculative lock elision: enabling highly concurrent multithreaded execution , 2001, MICRO.

[18]  Maurice Herlihy,et al.  Transactional Memory: Architectural Support For Lock-free Data Structures , 1993, Proceedings of the 20th Annual International Symposium on Computer Architecture.

[19]  Irving L. Traiger,et al.  The notions of consistency and predicate locks in a database system , 1976, CACM.

[20]  Maurice Herlihy The transactional manifesto: software engineering and non-blocking synchronization , 2005, PLDI '05.

[21]  Nir Shavit,et al.  Transactional Locking II , 2006, DISC.

[22]  Doug Lea Concurrent Programming in Java. Second Edition: Design Principles and Patterns , 1999 .

[23]  Michel Raynal,et al.  A Contention-Friendly Methodology for Search Structures , 2012 .

[24]  Michael F. Spear,et al.  Transaction Safe Nonblocking Data Structures , 2007, DISC.

[25]  Maurice Herlihy,et al.  Transactional boosting: a methodology for highly-concurrent transactional objects , 2008, PPoPP.

[26]  Maurice Herlihy,et al.  A Lazy Concurrent List-Based Set Algorithm , 2007, Parallel Process. Lett..

[27]  Maurice Herlihy,et al.  Coarse-grained transactions , 2010, POPL '10.

[28]  Kunle Olukotun,et al.  A practical concurrent binary search tree , 2010, PPoPP '10.

[29]  Kunle Olukotun,et al.  Transactional predication: high-performance concurrent sets and maps for STM , 2010, PODC '10.

[30]  Keir Fraser,et al.  Practical lock-freedom , 2003 .

[31]  Philippas Tsigas,et al.  Fast and lock-free concurrent priority queues for multi-thread systems , 2005, J. Parallel Distributed Comput..

[32]  James R. Larus,et al.  Transactional Memory, 2nd edition , 2010, Transactional Memory.

[33]  Eran Yahav,et al.  Automatic scalable atomicity via semantic locking , 2015, PPoPP.

[34]  William Pugh,et al.  Concurrent maintenance of skip lists , 1990 .

[35]  David Gay,et al.  Autolocker: synchronization inference for atomic sections , 2006, POPL '06.

[36]  Sumit Gulwani,et al.  Inferring locks for atomic sections , 2008, PLDI '08.

[37]  D. M. Hutton,et al.  The Art of Multiprocessor Programming , 2008 .

[38]  Maurice Herlihy,et al.  A Simple Optimistic Skiplist Algorithm , 2007, SIROCCO.

[39]  Michel Raynal,et al.  No Hot Spot Non-blocking Skip List , 2013, 2013 IEEE 33rd International Conference on Distributed Computing Systems.

[40]  Nir Shavit,et al.  Skiplist-based concurrent priority queues , 2000, Proceedings 14th International Parallel and Distributed Processing Symposium. IPDPS 2000.

[41]  Rachid Guerraoui,et al.  On the correctness of transactional memory , 2008, PPoPP.

[42]  Maurice Herlihy Transactional Memory Today , 2010, ICDCIT.

[43]  Idit Keidar,et al.  SMV: Selective Multi-Versioning STM , 2011, DISC.

[44]  Eran Yahav,et al.  Testing atomicity of composed concurrent operations , 2011, OOPSLA '11.