NoSQL Redis and Memcache traffic generation and benchmarking tool.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
libmemcached_protocol Include binary memcached protocol header files and remove library dep… Jul 12, 2013
.gitignore First memtier_benchmark version. Jun 27, 2013
CHANGES fix parallel key-pattern (#62) Sep 6, 2018
COPYING First memtier_benchmark version. Jun 27, 2013
Dockerfile added dockerfile (#33) Jul 18, 2017
JSON_handler.cpp add support for JSON output (#18) Feb 23, 2017
JSON_handler.h add support for JSON output (#18) Feb 23, 2017
Makefile.am add support for cluster mode (#42) Dec 21, 2017
README.import Add data verification options. Aug 14, 2013
README.md fix sequential key pattern (#58) Jul 23, 2018
client.cpp fix parallel key-pattern (#62) Sep 6, 2018
client.h support ASK in cluster mode (#60) Aug 28, 2018
cluster_client.cpp support ASK in cluster mode (#60) Aug 28, 2018
cluster_client.h support ASK in cluster mode (#60) Aug 28, 2018
config_types.cpp add support for JSON output (#18) Feb 23, 2017
config_types.h add support for JSON output (#18) Feb 23, 2017
configure.ac fix parallel key-pattern (#62) Sep 6, 2018
connections_manager.h support MOVED in cluster mode (#54) Jul 5, 2018
file_io.cpp add support for JSON output (#18) Feb 23, 2017
file_io.h add support for JSON output (#18) Feb 23, 2017
item.cpp add support for JSON output (#18) Feb 23, 2017
item.h add support for JSON output (#18) Feb 23, 2017
memtier_benchmark.1 Titles and manpage updates. Dec 5, 2016
memtier_benchmark.cpp Update memtier_benchmark.cpp (#36) Aug 30, 2018
memtier_benchmark.h fix sequential key pattern (#58) Jul 23, 2018
obj_gen.cpp Fix issues with 64 bit keyspace May 16, 2018
obj_gen.h add support for cluster mode (#42) Dec 21, 2017
protocol.cpp add support for cluster mode (#42) Dec 21, 2017
protocol.h add support for cluster mode (#42) Dec 21, 2017
shard_connection.cpp support ASK in cluster mode (#60) Aug 28, 2018
shard_connection.h support ASK in cluster mode (#60) Aug 28, 2018

README.md

memtier_benchmark

memtier_benchmark is a command line utility developed by Redis Labs (formerly Garantia Data Ltd.) for load generation and bechmarking NoSQL key-value databases. It offers the following:

  • Support for both Redis and Memcache protocols (text and binary)
  • Multi-threaded multi-client execution
  • Multiple configuration options, including:
  • Read:Write ratio
  • Random and sequential key name pattern policies
  • Random or ranged key expiration
  • Redis cluster
  • ...and much more

Read more at:

Getting Started

Prerequisites

The following libraries are required for building:

  • libevent 2.0.10 or newer.
  • libpcre 8.x.

The following tools are required

  • autoconf
  • automake
  • GNU make
  • GCC C++ compiler

CentOS 6.x Prerequisites

On a CentOS 6.4 system, use the following to install prerequisites:

# yum install autoconf automake make gcc-c++ 
# yum install pcre-devel zlib-devel libmemcached-devel

CentOS 6.4 ships with older versions of libevent, which must be manually built and installed as follows:

To download, build and install libevent-2.0.21:

$ wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
$ tar xfz libevent-2.0.21-stable.tar.gz
$ pushd libevent-2.0.21-stable
$ ./configure
$ make
$ sudo make install
$ popd

The above steps will install into /usr/local so it does not confict with the distribution-bundled versions. The last step is to set up the PKG_CONFIG_PATH so configure can find the newly installed library.

$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:${PKG_CONFIG_PATH}

Then proceed to follow the build instructions below.

Ubuntu 12.x Prerequisites

On recent Ubuntu versions, simply install all prerequisites as follows:

# apt-get install build-essential autoconf automake libpcre3-dev libevent-dev pkg-config zlib1g-dev

Cluster mode

Connections

When using the cluster-mode option, each client opens one connection for each node. So, when using a large number of threads and clients, the user must verify that he is not limited by the maximum number of file descriptors.

Using sequential key pattern

When there is an asymmetry between the Redis nodes and user set the --requests option, there may be gaps in the generated keys.

Also, the ratio and the key generator is per client (and not connection). In this case, setting the ratio to 1:1 does not guarantee 100% hits because the keys spread to different connections/nodes.

Building and installing

After downloading the source tree, use standard autoconf/automake commands::

$ autoreconf -ivf
$ ./configure
$ make
$ make install

Using Docker

$ docker build -t memtier_benchmark .
$ docker run --rm memtier_benchmark --help

Using memtier_benchmark

See the included manpage or run::

$ memtier_benchmark --help

for command line options.

githalytics.com alpha