Exploring Parallelism in Transactional Workloads

Multicores are now standard in most machines, which means that many programmers are faced with the challenge of how to take advantage of all the potential parallelism. Transactional Memory (TM) promises to simplify this task. Yet, at the same time, TM inhibits the programmer from fully exploring the latent parallelism in his application. In particular, it does not allow a transaction to contain parallel code. This fact limits the expressiveness of TM as a synchronization mechanism. Many applications contain large operations that must be performed atomically. These large sections may entail writing to shared data, which typically leads to many conflicts in optimistic concurrency control mechanisms such as those used by most TM systems. Yet, sometimes these operations could be executed faster if their latent parallelism was used efficiently, by allowing a transaction to be split in several parts that execute concurrently. In this paper we provide this increased flexibility by using parallel nesting. Moreover, we propose to overcome inherently sequential highly-conflicting workloads with the new expressiveness provided by TM. We additionally show that the use of conflict-aware scheduling provides an effective solution to maximize the benefits of parallel nesting. Finally, we show how the implementation of these ideas in a lock-free multi-version STM outperforms the original version on several known benchmarks by up to 2.8 times.

[1]  Jan Vitek,et al.  STMBench7: a benchmark for software transactional memory , 2007, EuroSys '07.

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

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

[4]  Rachid Guerraoui,et al.  Leveraging parallel nesting in transactional memory , 2010, PPoPP '10.

[5]  Jeremy T. Fineman,et al.  Nested parallelism in transactional memory , 2008, PPoPP.

[6]  Per Stenström,et al.  Intermediate checkpointing with conflicting access prediction in transactional memory systems , 2008, 2008 IEEE International Symposium on Parallel and Distributed Processing.

[7]  Emmett Witchel,et al.  The Xfork in the Road to Coordinated Sibling Transactions , 2009 .

[8]  Mikel Luján,et al.  Steal-on-Abort: Improving Transactional Memory Performance through Dynamic Transaction Reordering , 2008, HiPEAC.

[9]  Rachid Guerraoui,et al.  Preventing versus curing: avoiding conflicts in transactional memories , 2009, PODC '09.

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

[11]  Hagit Attiya,et al.  Inherent Limitations on Disjoint-Access Parallel Implementations of Transactional Memory , 2010, Theory of Computing Systems.

[12]  Mikel Luján,et al.  Lee-TM: A Non-trivial Benchmark Suite for Transactional Memory , 2008, ICA3PP.

[13]  Danny Hendler,et al.  CAR-STM: scheduling-based collision avoidance and resolution for software transactional memory , 2008, PODC '08.

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

[15]  Kunle Olukotun,et al.  Implementing and evaluating nested parallel transactions in software transactional memory , 2010, SPAA '10.

[16]  Maged M. Michael,et al.  RingSTM: scalable transactions with a single atomic instruction , 2008, SPAA '08.

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

[18]  João P. Cachopo,et al.  Versioned boxes as the basis for memory transactions , 2006, Sci. Comput. Program..

[19]  Antony L. Hosking,et al.  Nested transactional memory: Model and architecture sketches , 2006, Sci. Comput. Program..

[20]  Adam Welc,et al.  NePalTM: design and implementation of nested parallelism for transactional memory systems , 2009, PPoPP '09.

[21]  João P. Cachopo,et al.  Lock-free and scalable multi-version software transactional memory , 2011, PPoPP '11.

[22]  Hsien-Hsin S. Lee,et al.  Adaptive transaction scheduling for transactional memory systems , 2008, SPAA '08.

[23]  Ivo Anjo JaSPEx: Speculative Parallel Execution of Java Applications ? , 2006 .