Irrevocable transactions and their applications

Transactional memory (TM) provides a safer, more modular, and more scalable alternative to traditional lock-based synchronization. Implementing high performance TM systems has recently been an active area of research. However, current TM systems provide limited, if any, support for transactions executing irrevocable actions, such as I/O and system calls, whose side effects cannot in general be rolled back. This severely limits the ability of these systems to run commercial workloads. This paper describes the design of a transactional memory system that allows irrevocable actions to be executed inside of transactions. While one transaction is executing an irrevocable action, other transactions can still execute and commit concurrently. We use a novel mechanism called single-owner read locks to implement irrevocable actions inside transactions that maximizes concurrency and avoids overhead when the mechanism is not used. We also show how irrevocable transactions can be leveraged for contention management to handle actions whose effects may be expensive to roll back. Finally, we present a thorough performance evaluation of the irrevocability mechanism for the different usage models.

[1]  Milo M. K. Martin,et al.  Subtleties of transactional memory atomicity semantics , 2006, IEEE Computer Architecture Letters.

[2]  Milo M. K. Martin,et al.  Unrestricted Transactional Memory: Supporting I/O and System Calls Within Transactions , 2006 .

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

[4]  Alan Burns,et al.  Concurrent programming , 1980, Operating Systems Engineering.

[5]  Mark Plesko,et al.  Optimizing memory transactions , 2006, PLDI '06.

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

[7]  Donald E. Porter,et al.  TxLinux: using and managing hardware transactional memory in an operating system , 2007, SOSP.

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

[9]  Andreas Reuter,et al.  Transaction Processing: Concepts and Techniques , 1992 .

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

[11]  Bratin Saha,et al.  McRT-STM: a high performance software transactional memory system for a multi-core runtime , 2006, PPoPP '06.

[12]  Suresh Jagannathan,et al.  Transparently Reconciling Transactions with Locking for Java Synchronization , 2006, ECOOP.

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

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

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

[16]  Brian T. Lewis,et al.  Compiler and runtime support for efficient software transactional memory , 2006, PLDI '06.

[17]  Dan Grossman,et al.  Enforcing isolation and ordering in STM , 2007, PLDI '07.

[18]  Maged M. Michael,et al.  Inevitability Mechanisms for Software Transactional Memory , 2008 .

[19]  Simon L. Peyton Jones,et al.  Composable memory transactions , 2005, CACM.