AerospikeC client manual --- Benchmarks
Benchmarks
The Aerospike C client function library comes with a benchmark tool, which is built using the C client function library. Using this benchmark tool, you can:
Write and read data to the database at a specific read rate. Change the number of client threads to simulate client concurrency. Observe the latency distribution from the client perspective.
Before you can use the benchmark tool, install the "Development Kit" and its prerequisites.
Build the benchmark tool:
$ cd benchmarks$ make
Start Tool
$ make run
This command starts benchmark with the default load and localhost as the cluster server address. The brief output is as follows:
$ make run./target/benchmarks -h 127.0.0.1 -p 3000hosts: 127.0.0.1port: 3000namespace: testset: testsetkeys/records: 1000000object spec: intrandom values: falseminimum number of transactions: -1workload: read 50% write 50%threads: 16max throughput: unlimitedread timeout: 0 mswrite timeout: 0 msmax retries: 1debug: falselatency: falseshared memory: falseread replica: masterread consistency level: onewrite commit level: all2014-11-06 11:43:29 INFO Read/write using 1000000 records2014-11-06 11:43:29 INFO Start 16 generator threads2014-11-06 11:43:30 INFO write(tps=10847 timeouts=0 errors=0) read(tps=10772 timeouts=0 errors=0) total(tps=21619 timeouts=0 errors=0)2014-11-06 11:43:31 INFO write(tps=11477 timeouts=0 errors=0) read(tps=11271 timeouts=0 errors=0) total(tps=22748 timeouts=0 errors=0)2014-11-06 11:43:32 INFO write(tps=11051 timeouts=0 errors=0) read(tps=10698 timeouts=0 errors=0) total(tps=21749 timeouts=0 errors=0)
The number of random read/update keys is 1000000. 50% of read requests and 50% of write requests.
For more detailed tool attributes, run the following command:
$ ./target/benchmarks -u
Benchmark example
Example 1
Connect to 127.0.0.1: 3000 and use the namespace named test. Use 0.1 billion keys (the key uses an integer value in the range of 1 ~ 100000000), bin named testbin, bin value is a string of 50 characters. 90% read and 10% write, 20 concurrent threads.
$ ./target/benchmarks -h 127.0.0.1 -p 3000 -n test -k 100000000 -o S:50 -w RU,90 -z 20
Example 2
Connect 127.0.0.1: 3000 and use the namespace named test and the set named demoset.
Use a string of 1 million keys and 1400 characters as the value. 80% read and 20% write, 8 concurrent threads. The maximum number of transactions per second is 2500 read/write timeout time 50 milliseconds. The client latency percentage is displayed in four columns: <= 1 ms,> 1 ms,> 8 ms,> 64 ms.
$ ./target/benchmarks -h 127.0.0.1 -p 3000 -n test -s demoset -k 1000000 -o S:1400 -g 2500 -w RU,80 -z 8 -L 4,3