Skip to content

vs-uulm/sor-bft-smart

 
 

Repository files navigation

Speculatively-Ordered Read Requests for BFT-SMaRt

This repository is a fork from the official BFT-SMaRt library and contains an implementation for speculatively-ordered read (SOR) requests.

Quick start

To run any demonstration you first need to configure BFT-SMaRt to define the protocol behavior and the location of each replica.

The servers must be specified in the configuration file (see config/hosts.config):

#server id, address and port (the ids from 0 to n-1 are the service replicas) 
0 127.0.0.1 11000 11001
1 127.0.0.1 11010 11011
2 127.0.0.1 11020 11021
3 127.0.0.1 11030 11031

Installation

The library can be build using the command ./gradlew installDist in the root directory. The required jar files and default configuration files will be available in the build/install/library directory. Alternatively, a local deployment with four replicas and one client can be created using the following command ./gradlew localDeploy.

Running the YCSB Benchmark

The scripts for the YCSB Benchmark are located in the /runscripts/sor-scripts directory.

First, use either of the previously mentioned installation methods and then start four replicas using the following commands in separate terminal windows:

./startYCSBServerReplica.sh 0
./startYCSBServerReplica.sh 1
./startYCSBServerReplica.sh 2
./startYCSBServerReplica.sh 3

Then start the YCSB Client using the following command:

./ycsbBenchmark.sh <numThreads> <requestType> <workload> <warmup?> <initialize?>

Multiple sequential benchmark runs with increasing number of client threads and varying sizes of the KVStore can be launched using the following command:

./runBenchmark.sh <numReplicas> <requestType> <workload> <result-directory>

Publication

The SOR optimization approach will be published in the proceedings of the EDCC 2026. The publication will be link as soon as the proceedings are publicly available.

About

An implementation of Speculatively-Ordered Read Request in the BFT-SMaRt Framework

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 98.9%
  • Shell 1.1%