Using Nesting to Push the Limits of Transactional Data Structure Libraries

Transactional data structure libraries (TDSL) combine the ease-of-programming of transactions with the high performance and scalability of custom-tailored concurrent data structures. They can be very efficient thanks to their ability to exploit data structure semantics in order to reduce overhead, aborts, and wasted work compared to general-purpose software transactional memory. However, TDSLs were not previously used for complex use-cases involving long transactions and a variety of data structures. In this paper, we boost the performance and usability of a TDSL, allowing it to support complex applications. A key idea is nesting. Nested transactions create checkpoints within a longer transaction, so as to limit the scope of abort, without changing the semantics of the original transaction. We build a Java TDSL with built-in support for nesting in a number of data structures. We conduct a case study of a complex network intrusion detection system that invests a significant amount of work to process each packet. Our study shows that our library outperforms TL2 twofold without nesting, and by up to 16x when nesting is used. Finally, we discuss cross-library nesting, namely dynamic composition of transactions from multiple libraries.

[1]  Chao Xie,et al.  High-performance ACID via modular concurrency control , 2015, SOSP.

[2]  Martin Roesch,et al.  Snort - Lightweight Intrusion Detection for Networks , 1999 .

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

[4]  Jim Gray,et al.  The transaction concept: virtues and limitations , 1988 .

[5]  Idit Keidar,et al.  SALSA: scalable and low synchronization NUMA-aware algorithm for producer-consumer pools , 2012, SPAA '12.

[6]  Maged M. Michael,et al.  Software Transactional Memory: Why Is It Only a Research Toy? , 2008, ACM Queue.

[7]  Idit Keidar,et al.  CAFÉ: Scalable Task Pools with Adjustable Fairness and Contention , 2011, DISC.

[8]  Philippas Tsigas,et al.  Cache-Aware Lock-Free Queues for Multiple Producers/Consumers and Weak Memory Consistency , 2010, OPODIS.

[9]  Christina Peterson,et al.  Check-Wait-Pounce: Increasing Transactional Data Structure Throughput by Delaying Transactions , 2019, DAIS.

[10]  Roberto Palmieri,et al.  Optimistic Transactional Boosting , 2017, IEEE Transactions on Parallel and Distributed Systems.

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

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

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

[14]  Nir Shavit,et al.  Noninvasive concurrency with Java STM , 2009 .

[15]  Maurice Herlihy,et al.  A Lazy Concurrent List-Based Set Algorithm , 2005, OPODIS.

[16]  Maurice Herlihy,et al.  Brief Announcement: Proust: A Design Space for Highly-Concurrent Transactional Data Structures , 2017, PODC.

[17]  Hans-Jörg Schek,et al.  Concepts and Applications of Multilevel Transactions and Open Nested Transactions , 1992, Database Transaction Models for Advanced Applications.

[18]  Idit Keidar,et al.  Transactional data structure libraries , 2016, PLDI.

[19]  Eddie Kohler,et al.  The Impact of Timestamp Granularity in Optimistic Concurrency Control , 2018, ArXiv.

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

[21]  Daniel J. Abadi,et al.  High Performance Transactions via Early Write Visibility , 2017, Proc. VLDB Endow..

[22]  Binoy Ravindran,et al.  On Open Nesting in Distributed Transactional Memory , 2016, IEEE Transactions on Computers.

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

[24]  Barbara Liskov,et al.  Guardians and Actions: Linguistic Support for Robust, Distributed Programs , 1983, TOPL.

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

[26]  Thomas R. Gross,et al.  Encapsulated open nesting for STM: fine-grained higher-level conflict detection , 2019, PPoPP.

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

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

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

[30]  Robert Ennals Software Transactional Memory Should Not Be Obstruction-Free , 2005 .

[31]  Haibo Chen,et al.  Scaling Multicore Databases via Constrained Parallel Execution , 2016, SIGMOD Conference.

[32]  David E. Culler,et al.  SEDA: an architecture for well-conditioned, scalable internet services , 2001, SOSP.

[33]  Rachid Guerraoui,et al.  Composing Relaxed Transactions , 2013, 2013 IEEE 27th International Symposium on Parallel and Distributed Processing.

[34]  Changwoo Min,et al.  MV-RLU: Scaling Read-Log-Update with Multi-Versioning , 2019, ASPLOS.

[35]  Vern Paxson,et al.  Bro: a system for detecting network intruders in real-time , 1998, Comput. Networks.

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

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

[38]  E. B. Moss,et al.  Nested Transactions: An Approach to Reliable Distributed Computing , 1985 .

[39]  Erez Petrank,et al.  LOFT: lock-free transactional data structures , 2019, PPoPP.

[40]  Sathya Peri,et al.  Efficient Means of Achieving Composability Using Object Based Semantics in Transactional Memory Systems , 2018, NETYS.

[41]  Maurice Herlihy,et al.  The art of multiprocessor programming , 2020, PODC '06.

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

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

[44]  Pierre LaBorde,et al.  Lock-Free Transactional Transformation for Linked Data Structures , 2018, ACM Trans. Parallel Comput..

[45]  Dennis Shasha,et al.  Deferred Runtime Pipelining for contentious multicore software transactions , 2019, EuroSys.

[46]  Deli Zhang,et al.  Lock-free Transactions without Rollbacks for Linked Data Structures , 2016, SPAA.

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

[48]  Erez Petrank,et al.  A Scalable Linearizable Multi-Index Table , 2018, 2018 IEEE 38th International Conference on Distributed Computing Systems (ICDCS).

[49]  Binoy Ravindran,et al.  On Closed Nesting in Distributed Transactional Memory , 2011 .

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

[51]  Nir Shavit,et al.  Understanding Tradeoffs in Software Transactional Memory , 2007, International Symposium on Code Generation and Optimization (CGO'07).

[52]  Pierre LaBorde,et al.  Wait-free Dynamic Transactions for Linked Data Structures , 2019, PMAM@PPoPP.