-
Notifications
You must be signed in to change notification settings - Fork 0
Running FeBFT's microbenchmarks
In order to run the microbenchmarks you must obtain testing grounds.
At the moment, there are two tests that are available to run (the rest of the tests are old and not yet adapted to the new changes of FeBFT) microbenchmarks and microbenchmarks-async.
These tests are built to test the performance of the system, not to perform any type of fault emulation or to test the fault tolerance of the program. That can of course manually done by crashing one of the replicas.
At the moment (5/11/22), the timers that trigger the leader election are not active because we had some issues with the asynchronous runtime for performance and the timers ran on this asynchronous runtime, so we are still thinking of a way to properly handle this task as efficiently as possible. This means if the leader crashes, the other replicas will not attempt a view change unless they are programmed to do so.
After obtaining the testing grounds, choose what test you want to run and in what configuration.
There are two possible ways of running these test:
- Locally, on a single machine (which does not represent a real world use case of the system)
- On various systems (at least 5, with 4 of those for replicas and 1 for clients (a case of f=1)
This will be chosen depending on the environment variables chosen.
The env
file should be placed at the root of each of the tests (in microbenchmarks it would be /testing-grounds/microbenchmarks/env) and should contain the following:
`export LOCAL=1
export COMPILE=1
export BACKEND=rust export VERBOSE=false export UPDATE_MAX_FDS=0
export NUM_CLIENTS=999 export NUM_REPLICAS=4 export BATCH_SIZE=256 export CLIENTS_PER_POOL=100
#Global batch size from all joined client pools export GLOBAL_BATCH_SIZE=40000 export GLOBAL_BATCH_SLEEP_MICROS=50000
#1 ms batch timeout export BATCH_TIMEOUT_MICROS=1000 #1 ms sleep between client pool collections export BATCH_SLEEP_MICROS=1000
export THREADPOOL_THREADS=4
export OPS_NUMBER=10000 export MEASUREMENT_INTERVAL=2000 export FILL_BATCH=true #export OPS_NUMBER=5 #export MEASUREMENT_INTERVAL=1
export STATE_SIZE=0 export REPLY_SIZE=1 export REQUEST_SIZE=1 export REQUEST_SLEEP_MILLIS=0
export PATH_TO_OS_STATS="/home/nunogneto/Documents/CC/CC_5º/Tese/febft/testing-grounds/microbenchmarks/os_stats %d" `