https://github.com/efcasado/ycsb-riak
Yahoo! Cloud Serving Benchmark (YCSB) for Riak
https://github.com/efcasado/ycsb-riak
benchmarking database riak ycsb
Last synced: 12 months ago
JSON representation
Yahoo! Cloud Serving Benchmark (YCSB) for Riak
- Host: GitHub
- URL: https://github.com/efcasado/ycsb-riak
- Owner: efcasado
- Created: 2022-04-30T15:48:02.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2022-05-21T16:55:41.000Z (about 4 years ago)
- Last Synced: 2025-06-27T01:07:14.634Z (about 1 year ago)
- Topics: benchmarking, database, riak, ycsb
- Language: Makefile
- Homepage:
- Size: 32.2 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Yahoo! Cloud Serving Benchmark (YCSB) for Riak
Authored by Yahoo! Research in [2010](https://people.cs.pitt.edu/~chang/231/y13/papers/benchmarkcloud.pdf),
[YCSB](https://github.com/brianfrankcooper/YCSB) is an extensible workload
generator for benchmarking key-value data stores.
A typical `YCSB` run consists of loading key-value pairs into the target data
store, run a specific workload against the target data store, and reporting
statistics.
Whilst `YCSB` allows you to define custom workloads, it also ships with a series
of [predefined workloads](https://github.com/brianfrankcooper/YCSB/tree/master/workloads),
which are ready to be used with little to no configuration.
The [official wiki](https://github.com/brianfrankcooper/YCSB/wiki/Core-Workloads)
of the project provides some information about these.
This repository aims at simplifying and illustrating how `YCSB` can be used
to benchmark different [Riak](https://riak.com/) configurations.
For more information about how YCSB can be configured to interact with Riak,
please, check `YCSB`'s Riak client
[documentation](https://github.com/brianfrankcooper/YCSB/tree/master/riak).
## Requirements
- [GNU Make](https://www.gnu.org/software/make/) (3.81 or newer)
- [Docker](https://www.docker.com/) (20.10.14 or newer)
- [Docker Compose](https://docs.docker.com/compose/) (1.29.2 or newer)
## Get Started
Running `make all` (or just `make`) will package `YCSB` as a (local) Docker
image, will spin up a 3-node Riak cluster and will run a `YCSB` test-run
against the latter.
You can change the settings of your Riak cluster by adjusting the
[user.conf](https://github.com/efcasado/ycsb-riak/blob/main/etc/riak/user.conf)
file included in this repository. For more information about how to configure
a Riak cluster, please, check Riak's
[official documentation](https://docs.riak.com/riak/kv/latest/configuring/basic/index.html).
You may also be interested in adjusting the load-generation parameters of
`YCSB`. You can do this by setting the `YCSB_{THREADS, TARGET, RECORD_COUNT, OPERATION_COUNT}`
variables, which default to `1`, `100`, `1000` and `1000`, respectively.
```
YCSB_THREADS=4 YCSB_TARGET=500 YCSB_RECORD_COUNT=10000 YCSB_OPERATION_COUNT=10000 make load
YCSB_THREADS=4 YCSB_TARGET=500 YCSB_RECORD_COUNT=10000 YCSB_OPERATION_COUNT=10000 make run
```
The above example configures `YCSB` to use `4` threads to try to achieve a
throughput of `500` requests per second while loading `10_000` entries in the
database and executing `10_000` operations against the loaded data.
It is also possible to configure how many CPUs will be allocated to `YCSB` and
each of the `Riak` containers. You can do this by adjusting the `DOCKER_YCSB_CPUS`
and `DOCKER_RIAK_CPUS` variables, which default to `1`.
## Results
```
CLOUD_PROVIDER=aws USE_DOCKER=0 YCSB_THREADS=128 YCSB_TARGET=40000 YCSB_RECORD_COUNT=300000 YCSB_OPERATION_COUNT=300000 make load
```
| Cloud Provider | Instance Type | Cluster Size | Riak Version | Ring Size | Throughput |
|:--------------:|:-------------:|:------------:|:------------:|:---------:|:----------:|
| `aws` | `c5.2xlarge` | `7` | `2.9.10` | `16` | `16,491` |
| `aws` | `c5.2xlarge` | `7` | `2.9.10` | `64` | `21,466` |
| `aws` | `c5.2xlarge` | `7` | `2.9.10` | `128` | `22,202` |
| `aws` | `c5.2xlarge` | `7` | `3.0.9` | `16` | `15,535` |
| `aws` | `c5.2xlarge` | `7` | `3.0.9` | `64` | `21,125` |
| `aws` | `c5.2xlarge` | `7` | `3.0.9` | `128` | `22,316` |