HiperTM is Java implementation of Active Replication based STM with focus on high-throughput and scalability. HiperTM is built on top of S-Paxos, an efficient multi-threaded implementation of Paxos with techniques that distribute the load across all replicas. HiperTM supports a single threaded writer and multi-version based multiple readers. HiperTM also uses single step communication. It speculatively executes a write transaction when it is introduced in the system of replicas and commits it when execution order of transaction is decided.
You are free to use HiperTM as an experimental platform for research into software-based replication provided that the LGPL3.0 licence is respected (see the LICENCE file). Any publication describing work that uses HiperTM in some way, should cite it.
This code contains two benchmark implementations i.e. Bank and TPCC. If you want to test the code, please use the scripts provided along with the code.
Each benchmark has a corresponding server-side and client-side script to run. Server script should be run earlier than the client script. User can define the IPaddresses of all machines involved in paxos.properties file.
Bank: Server script:- bankServer.sh, Client script:- bankMultiClient.sh
TPCC: Server script:- tpccServer.sh, Client script:- tpccMultiClient.sh
Server side: $./bankServer.sh [#replicaId] 5000 16 1. #replicaId - Numeric Id of replica (0..n) 2. 5000 - Number of Accounts 3. 16 - # threads for read-requests
Client side: $./bankMultiClient.sh 250 1000 [#replicaId] 5000 [%Read] 1. 250 - # clients per MultiClient instance 2. 1000 - # requests per client 3. #replicaId - Numeric Id of replica (0..n) 4. 5000 - Number of Accounts 4. %Read - % of read requests per client
Server side: $./tpccServer.sh [#replicaId] 20 5000 16 1. #replicaId - Numeric Id of replica (0..n) 2. 20 - warehouses [20/50] 3. 5000 - items 4. 16 - # threads for read-requests
Client side: $./tpccMultiClient.sh 250 400 [#replicaId] [%Read] [0/1 - tpcc profile selection] 1. 250 - # clients per MultiClient instance 2. 400 - # requests per client 3. #replicaId - Numeric Id of replica (0..n) 4. %Read - % of read requests per client 5. Tpcc profile selection - 0/1 [1- tpcc profile, 0- Read% profile]
This software is distributed under the LGPL licence.
Contact and authors
Contributors: Sachin Hirve Roberto Palmieri * Binoy Ravindran