ryanphuang / imembench

Generic benchmarks for various in-memory storage systems
5 stars 5 forks source link

imembench

Various in-memory storage systems exist today that offer similar functionality but with different features (some more performant, others more reliable). Each of the systems usually has its own APIs, making the benchmark results of them often incomparable. The goal of imembench is to extract and create a common wrapper of the interfaces exposed by these systems, and then drive these systems with almost-the-same workloads by exercising this common interface.

Implementation-wise, we need to use a common language that can talk to these systems in the form of either the source language or bindings.

checkout repository:

after clone the main repository, run git submodule update --init --recursive to pull the git submodules for building.

build instructions:

use benchmark

First, source env.sh

Then, copy the samplebench.ini (in loadgenerator directory) to imembench.ini and modify the configurations accordingly.

Usage: ./imembench [OPTIONS] [tachyon|ramcloud|redis|all]

  OPTION
        -l, --list                   list available benchmarks and supported targets
        -c, --config_file            configuration file (default imembench.ini) for the benchmark
        -w, --workload_file          workload trace file to use instead of the default benchmark
        -b, --benchmark              comma-separated list of benchmarks to run on the target systems
        -t, --target                 comma-separated list of target system to evaluate

  EXAMPLE
        ./imembench -c imembench.ini redis   # care, run all benchmarks, very slow
        ./imembench -c imembench.ini --benchmark uniformRandomRW redis
        ./imembench -c imembench.ini --workload_file trace.ycsb --benchmark ycsbReplay --target redis,ramcloud

supported targets and benchmarks

Supported targets:

Supported benchmarks:

existing interfaces:

existing languages: