SBK

Storage Benchmark Kit

FoundationDB Benchmarking with SBK

The SBK supports the benchmarking of foundationDB key value store with mulitple writers and readers. It also supports End to End latency benchmarking. The SBK uses the fdb-java client library; so, before using this FoundationDB driver with SBK make sure you install the foundationdb-clients-6.XX client library. Refer to this page : https://www.foundationdb.org/download/ for required foundationDB client libs. The default path : fdb.cluster file is : /etc/foundationdb/fdb.cluster, but you can change the path by passing arguments for the -cfile option.

An Example SBK command for benchmarking single writer is as follows

./build/install/sbk/bin/sbk -class foundationdb -size 100 -writers 1 -seconds 30

In the above example, the data size is 100 bytes and writer generates the linearly incrementing keys. example output:

 ./build/install/sbk/bin/sbk -class foundationdb -size 100 -writers 1 -seconds 30
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/data/kmg/SBK/build/install/sbk/lib/slf4j-simple-1.7.14.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/data/kmg/SBK/build/install/sbk/lib/logback-classic-1.0.13.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/data/kmg/SBK/build/install/sbk/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]
2020-06-21 03:09:08 INFO
       _____   ____    _   __
      / ____| |  _ \  | | / /
     | (___   | |_) | | |/ /
      \___ \  |  _ <  |   <
      ____) | | |_) | | |\ \
     |_____/  |____/  |_| \_\

2020-06-21 03:09:08 INFO SBK version: 0.78
2020-06-21 03:09:08 INFO Reflections took 59 ms to scan 19 urls, producing 22 keys and 90 values
Writing       4935 records,     986.8 records/sec,     0.09 MB/sec,      1.0 ms avg latency,       9 ms max latency; Discarded Latencies:       0 lower,        0 higher;  Latency Percentiles:       1 ms 10th,       1 ms 25th,       1 ms 50th,       1 ms 75th,       2 ms 95th,       2 ms 99th,       2 ms 99.9th,       9 ms 99.99th.
Writing       4924 records,     984.6 records/sec,     0.09 MB/sec,      1.0 ms avg latency,      17 ms max latency; Discarded Latencies:       0 lower,        0 higher;  Latency Percentiles:       1 ms 10th,       1 ms 25th,       1 ms 50th,       1 ms 75th,       1 ms 95th,       2 ms 99th,       2 ms 99.9th,      17 ms 99.99th.
Writing       4803 records,     960.2 records/sec,     0.09 MB/sec,      1.0 ms avg latency,     102 ms max latency; Discarded Latencies:       0 lower,        0 higher;  Latency Percentiles:       1 ms 10th,       1 ms 25th,       1 ms 50th,       1 ms 75th,       2 ms 95th,       2 ms 99th,       3 ms 99.9th,     102 ms 99.99th.
Writing       4938 records,     987.4 records/sec,     0.09 MB/sec,      1.0 ms avg latency,       3 ms max latency; Discarded Latencies:       0 lower,        0 higher;  Latency Percentiles:       1 ms 10th,       1 ms 25th,       1 ms 50th,       1 ms 75th,       2 ms 95th,       2 ms 99th,       2 ms 99.9th,       3 ms 99.99th.
Writing       4925 records,     984.0 records/sec,     0.09 MB/sec,      1.0 ms avg latency,       4 ms max latency; Discarded Latencies:       0 lower,        0 higher;  Latency Percentiles:       1 ms 10th,       1 ms 25th,       1 ms 50th,       1 ms 75th,       1 ms 95th,       2 ms 99th,       2 ms 99.9th,       4 ms 99.99th.
Writing(Total)      28846 records,     981.5 records/sec,     0.09 MB/sec,      1.0 ms avg latency,     102 ms max latency; Discarded Latencies:       0 lower,        0 higher;  Latency Percentiles:       1 ms 10th,       1 ms 25th,       1 ms 50th,       1 ms 75th,       2 ms 95th,       2 ms 99th,       2 ms 99.9th,      17 ms 99.99th.

An SBK command for End to End latency benchmarking is as follows:

./build/install/sbk/bin/sbk -class foundationdb -size 100 -writers 1 -readers 1 -seconds 30

The output is as follows:

./build/install/sbk/bin/sbk -class foundationdb -size 100 -writers 1 -readers 1 -seconds 30
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/data/kmg/SBK/build/install/sbk/lib/slf4j-simple-1.7.14.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/data/kmg/SBK/build/install/sbk/lib/logback-classic-1.0.13.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/data/kmg/SBK/build/install/sbk/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]
2020-06-21 03:12:06 INFO
       _____   ____    _   __
      / ____| |  _ \  | | / /
     | (___   | |_) | | |/ /
      \___ \  |  _ <  |   <
      ____) | | |_) | | |\ \
     |_____/  |____/  |_| \_\

2020-06-21 03:12:06 INFO SBK version: 0.78
2020-06-21 03:12:06 INFO Reflections took 59 ms to scan 19 urls, producing 22 keys and 90 values
Write/Reading       4924 records,     984.4 records/sec,     0.09 MB/sec,      1.2 ms avg latency,      21 ms max latency; Discarded Latencies:       0 lower,        0 higher;  Latency Percentiles:       1 ms 10th,       1 ms 25th,       1 ms 50th,       1 ms 75th,       2 ms 95th,       2 ms 99th,       3 ms 99.9th,      21 ms 99.99th.
Write/Reading       4932 records,     986.2 records/sec,     0.09 MB/sec,      1.3 ms avg latency,       6 ms max latency; Discarded Latencies:       0 lower,        0 higher;  Latency Percentiles:       1 ms 10th,       1 ms 25th,       1 ms 50th,       2 ms 75th,       2 ms 95th,       2 ms 99th,       3 ms 99.9th,       6 ms 99.99th.
Write/Reading       4943 records,     988.4 records/sec,     0.09 MB/sec,      1.2 ms avg latency,       3 ms max latency; Discarded Latencies:       0 lower,        0 higher;  Latency Percentiles:       1 ms 10th,       1 ms 25th,       1 ms 50th,       1 ms 75th,       2 ms 95th,       2 ms 99th,       3 ms 99.9th,       3 ms 99.99th.
Write/Reading       4897 records,     979.2 records/sec,     0.09 MB/sec,      1.3 ms avg latency,      43 ms max latency; Discarded Latencies:       0 lower,        0 higher;  Latency Percentiles:       1 ms 10th,       1 ms 25th,       1 ms 50th,       2 ms 75th,       2 ms 95th,       2 ms 99th,       3 ms 99.9th,      43 ms 99.99th.
Write/Reading       4944 records,     988.2 records/sec,     0.09 MB/sec,      1.3 ms avg latency,       4 ms max latency; Discarded Latencies:       0 lower,        0 higher;  Latency Percentiles:       1 ms 10th,       1 ms 25th,       1 ms 50th,       2 ms 75th,       2 ms 95th,       2 ms 99th,       3 ms 99.9th,       4 ms 99.99th.
Write/Reading(Total)      28927 records,     984.3 records/sec,     0.09 MB/sec,      1.3 ms avg latency,      43 ms max latency; Discarded Latencies:       0 lower,        0 higher;  Latency Percentiles:       1 ms 10th,       1 ms 25th,       1 ms 50th,       2 ms 75th,       2 ms 95th,       2 ms 99th,       3 ms 99.9th,      21 ms 99.99th.