Noninvasive concurrency with Java STM

In this paper we present a complete Java STM framework, called Deuce, intended as a platform for developing scalable concurrent applications and as a research tool for designing new STM algorithms. It was not clear if one could build an e cient Java STM without compiler support. Deuce provides several bene ts over existing Java STM frameworks: it avoids any changes or additions to the JVM, it does not require language extensions or intrusive APIs, and it does not impose any memory footprint or GC overhead. To support legacy libraries, Deuce dynamically instruments classes at load time and uses an original eld-based locking strategy to improve concurrency. Deuce also provides a simple internal API allowing di erent STMs algorithms to be plugged in. We show empirical results that highlight the scalability of our framework running benchmarks with hundreds of concurrent threads. This paper shows for the rst time that one can actually design a Java STM with reasonable performance without compiler support.

[1]  Vivek Sarkar,et al.  The Jikes Research Virtual Machine project: Building an open-source research community , 2005, IBM Syst. J..

[2]  Torbjörn Ekman,et al.  The jastadd extensible java compiler , 2007, OOPSLA.

[3]  Benjamin Hindman,et al.  Atomicity via source-to-source translation , 2006, MSPC '06.

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

[5]  Keir Fraser,et al.  Language support for lightweight transactions , 2003, SIGP.

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

[7]  Maurice Herlihy,et al.  A flexible framework for implementing software transactional memory , 2006, OOPSLA '06.

[8]  Kunle Olukotun,et al.  The Atomos transactional programming language , 2006, PLDI '06.

[9]  Michael F. Spear,et al.  NOrec: streamlining STM by abolishing ownership records , 2010, PPoPP '10.

[10]  Nir Shavit,et al.  Software transactional memory , 1995, PODC '95.

[11]  Suresh Jagannathan,et al.  A Uniform Transactional Execution Environment for Java , 2008, ECOOP.

[12]  Torvald Riegel,et al.  A Lazy Snapshot Algorithm with Eager Validation , 2006, DISC.

[13]  Torvald Riegel,et al.  Time-based transactional memory with scalable time bases , 2007, SPAA '07.

[14]  Adam Welc,et al.  Design and implementation of transactional constructs for C/C++ , 2008, OOPSLA '08.

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

[16]  Michael R. Clarkson,et al.  Polyglot: An Extensible Compiler Framework for Java , 2003, CC.

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

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

[19]  William Pugh,et al.  Skip Lists: A Probabilistic Alternative to Balanced Trees , 1989, WADS.

[20]  Walter Binder,et al.  Advanced Java bytecode instrumentation , 2007, PPPJ.