Skip to main content


The Aerospike C client benchmark source code repository allows you to:

  • Read and write data into the database at a particular read/write ratio.
  • Change the number of client threads to simulate client concurrency.
  • Examine latency distribution from the client side.



To build the benchmark tool on Linux/MacOS, install the following dependencies:

  • Aerospike C client and its dependencies
  • OpenSSL libssl and OpenSSL libcrypto (ie: apt-get install libssl-dev)
  • libyaml-devel (ie: apt-get install libyaml-dev)
  • libev, libuv, or libevent (if an event library is used)

The Aerospike Benchmark project uses git submodules, so you will need to initialize and update submodules before building this project.

$ git submodule update --init

Set the environment variable CLIENTREPO to point to the directory containing the built C client.

export CLIENTREPO=<Path to your C Client built>

and run the make command.


$ git clone
$ cd aerospike-client-c
$ git submodule update --init
$ make
$ export CLIENTREPO=$(pwd)
$ cd ..
$ git clone
$ cd aerospike-benchmark/
$ git submodule update --init
$ make

Start the Benchmark Tool

Start the benchmark tool:

$ make run

This places a default workload on the localhost cluster:

$ ./target/benchmark -h -p 3000
port: 3000
user: (null)
services-alternate: false
namespace: test
set: testset
start-key: 1
keys/records: 1000000
object spec: I4
- duration: 10
desc: default config (specify your own with --workload-stages)
tps: 0
key-start: 1
key-end: 1000001
pause: 0
batch-size: 1
async: false
random: false
workload: RU,50%
stage: 1
object-spec: I4
read-bins: (null)
write-bins: (null)
threads: 16
enable compression: false
compression ratio: 1.000000
read socket timeout: 30000 ms
write socket timeout: 30000 ms
read total timeout: 1000 ms
write total timeout: 1000 ms
max retries: 1
debug: false
latency: false
latency histogram: false
cumulative HDR hist: false
shared memory: false
read replica: sequence
read mode AP: one
read mode SC: session
write commit level: all
conn pools per node: 1
async max commands: 50
event loops: 1
auth mode: INTERNAL
2021-09-07 22:49:51.165 INFO Add node BB9020011AC4202
2021-09-07 22:49:51.167 INFO Start 16 transaction threads
Stage 1: default config (specify your own with --workload-stages)
2021-09-07 22:49:52.168 INFO write(tps=6500 timeouts=0 errors=0) read(tps=6450 timeouts=0 errors=0) total(tps=12950 timeouts=0 errors=0)
2021-09-07 22:49:53.168 INFO write(tps=6687 timeouts=0 errors=0) read(tps=6686 timeouts=0 errors=0) total(tps=13373 timeouts=0 errors=0)
2021-09-07 22:49:54.168 INFO write(tps=6637 timeouts=0 errors=0) read(tps=6716 timeouts=0 errors=0) total(tps=13353 timeouts=0 errors=0)
2021-09-07 22:49:55.171 INFO write(tps=6011 timeouts=0 errors=0) read(tps=6078 timeouts=0 errors=0) total(tps=12089 timeouts=0 errors=0)
2021-09-07 22:49:56.170 INFO write(tps=6644 timeouts=0 errors=0) read(tps=6559 timeouts=0 errors=0) total(tps=13203 timeouts=0 errors=0)
2021-09-07 22:49:57.170 INFO write(tps=6533 timeouts=0 errors=0) read(tps=6468 timeouts=0 errors=0) total(tps=13001 timeouts=0 errors=0)
2021-09-07 22:49:58.169 INFO write(tps=6512 timeouts=0 errors=0) read(tps=6436 timeouts=0 errors=0) total(tps=12948 timeouts=0 errors=0)
2021-09-07 22:49:59.169 INFO write(tps=6616 timeouts=0 errors=0) read(tps=6632 timeouts=0 errors=0) total(tps=13248 timeouts=0 errors=0)

In this example:

  • The number of keys randomly read/updated are 1000000.
  • 50% of the requests are reads; 50% of requests are writes.

Call the following for details on the attributes of the benchmark tool:

$ ./target/benchmark --help

Benchmark Examples

Example 1

This example:

  • Connects to using the namespace test.
  • Uses 100 million keys (integer key value in the range 1 to 100000000) and 50 character string values as the bin value in testbin.
  • Reads 90% and writes 10% of the time using 20 concurrent threads.
$ ./target/benchmark -h -p 3000 -n test -k 100000000 -o S50 -w RU,90 -z 20

Example 2

This example:

  • Connects to using the namespace test in set demoset.
  • Uses 1 million keys and 1400 character string values.
  • Reads 80% and writes 20% of the time using 8 concurrent threads.
  • Restricts transactions per second to 2500.
  • Times out reads and writes after 50ms.
  • Shows client-side latency percentages in the <=1ms, >1ms, >8ms, >64ms buckets.
$ ./target/benchmark -h -p 3000 -n test -s demoset -k 1000000 -o S1400 -g 2500 -w RU,80 -z 8 -L 4,3