Exploring Parallelism in Transactional Workloads

Nuno Diegues · 2012

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.

Read the paper · More papers on PaperTik