Software Transactional Memory for Distributed Systems
Distributed STM is an object-based, fully decentralized STM algorithm.
- object versioning eliminating read conflicts
- a randomized consensus protocol
- easy scalability for multi-core architectures
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.
The implementation consists of two major parts:
- transactifier - a byte code rewriting tool
- dstm - a library for the transactional memory instructions
We provide a simple way to incorporate STM into your Java application by using annotations. Our transactifier uses the ASM bytecode library.
- Classes annotated with
@Transactionalwill get managed by a runtime system. The construction as well as all reads and writes get automatically redirected.
- Methods annotated with
@Atomicare wrapped with code which executes transaction start, commit and rollback in case of conflicts.
The source code is Java 1.6 compliant and should run on any compliant JVM. We ship the transactifier with an ANT script which was tested with version 1.6.5.
You can also use the dstm library directly. We will soon provide an online documentation of the most recent version.
The Java implementations are released under the GPL.
- Annette Bieniusa, Thomas Fuhrmann.
Distributed Transactional Memory.
To appear soon as a Technical Report.
For further information, bug reports, etc. please contact: Annette Bieniusa.