Uni-Logo

Twilight STM

The Twilight STM enhances a transaction with twilight code that executes between the preparation to commit the transaction and its actual commit or abort. Twilight code runs irrevocably and concurrently with the rest of the program. It can detect and repair potential read inconsistencies in the state of its transaction and may thus turn a failing transaction into a successful one. Moreover, twilight code can safely use I/O operations while modifying the transactionally managed memory. The Twilight STM keeps a pending transaction committable while running the twilight code, but without blocking all other transactions, including pending transactions that execute their twilight code at the same time. Benchmark results show that Twilight performs competitively with state-of-the-art systems like TL2.

It features:

  • an-easy to-use API with powerful primitives,
  • application specific conflict detection,
  • and usage of I/O operations within transactions!

Distributed STM is based data structures which are well-suited for replication and migration. A randomized consensus protocol guarantees the consistency of the mutable parts. Object versioning allows transactions to proceed tentatively before the consensus has been reached. Due to Distributed STM's architecture, atomic code sections never block during execution. Although this leads potentially to more rollbacks, a first evaluation shows that the guaranteed success of reads more than compensates for this effect.

Publications

Further details can be found in the technical report:
  • Annette Bieniusa, Arie Middelkoop and Peter Thiemann.

    Actions in the Twilight: Concurrent irrevocable transactions and Inconsistency repair.

    Technical Report 257, Insitut für Informatik, Universität Freiburg, 2010.

Implementation

We provide two implementations.

  • Proof-of-concept reference implementation in Java
  • C implementation

The implementations are released under the GPL.

VersionDatejtransactifierdstm
0.0.117.02.2010twilight-stm.tar.bz2

Contact

For further information, bug reports, etc. please contact: Annette Bieniusa.