basho_bench のインストールと準備の手順紹介

Riak の開発、サポートを行なっている Basho Technologies, Inc. が basho_bench というベンチマークツールを公開しています。

Basho Bench is a benchmarking tool created to conduct accurate and repeatable performance tests and stress tests, and produce performance graphs.

Basho: Benchmarking with Basho Bench

github.com のリポジトリ: https://github.com/basho/basho_bench

Riak 自体のベンチマークに加えて、ドライバを自作すれば簡単にベンチマークを取得することが可能です。
例えば、Hibari のドライバが basho_bench のソースツリーに含まれていますが 300 行程度で書かれています。

利点、特徴をパラパラと。

  • ベンチマーク結果として、スループットとレイテンシのグラフを生成できる
  • 複数の操作を、混在させたベンチマークが取れる
    • 例: READ を 80% + WRITE を 20 %
  • ランダムな値を生成してくれる
    • ランダムなキーと値で WRITE 操作、というのが簡単にかける
  • 1回の試行ごとに、設定ファイルと実行結果を個別ディレクトリに保存してくれる
  • 並列度を指定できる

以下、インストールから、サンプル実行、結果のグラフ生成までの手順メモです。

basho_bench 自体のインストール、ビルド

$ git clone https://github.com/basho/basho_bench.git
$ cd basho_bench
$ make all

この段階で、ベンチマークは実行可能です。basho_bench のサンプル設定を元に、あまり時間がかからない設定にしてみます。

$ cp example/null_test.config .
$ vi null_test.config
{mode, max}.

{duration, 1}.

{concurrent, 1}.

{driver, basho_bench_driver_null}.

{code_paths, ["deps/stats"]}.

{key_generator, {uniform_int, 1024}}.

{value_generator, {fixed_bin, 1024}}.

{operations, [{put, 1}]}.

ベンチマーク自体の実行は、./basho_bench を実行します。

$ ./basho_bench null_test.config
$ ls tests/current           # テスト結果が格納されるディレクトリ

結果グラフを生成してみようとすると...

$ make results
priv/summary.r -i tests/current
env: Rscript: No such file or directory
make: *** [results] Error 127

エラーが発生します。R のインストールと設定を行いましょう。

R のインストール、設定

Mac OS X ではバイナリパッケージがある。楽なのでパッケージを使います。

R for Mac OS X
http://cran.r-project.org/bin/macosx/R-2.12.1.pkg をダウンロード、インストール。

$ make results
priv/summary.r -i tests/current
Warning: unable to access index for repository http://lib.stat.cmu.edu/R/CRAN/bin/macosx/leopard/contrib/2.12
Warning: unable to access index for repository http://lib.stat.cmu.edu/R/CRAN/bin/macosx/leopard/contrib/2.12
Warning messages:
1: In library(Name, character.only = TRUE, logical.return = TRUE) :
  there is no package called 'getopt'
2: In getDependencies(pkgs, dependencies, available, lib) :
  package ‘getopt’ is not available
3: In library(Name, character.only = TRUE, logical.return = TRUE) :
  there is no package called 'ggplot2'
4: In getDependencies(pkgs, dependencies, available, lib) :
  package ‘ggplot2’ is not available
Error: could not find function "getopt"
Execution halted
make: *** [results] Error 1

ライブラリが足りないとのエラーです。R のパッケージをインストールします。

R.app を起動して、[パッケージとデータ] メニューから、パッケージインストーラを選択。
このへん、コマンドラインでどうにかならんのかな。sudo で make results を実行するといけるっぽいけど、調べてない。

一覧を取得から、Japan(Tsukuba)を選択。
getopt, ggplot2, reshape, plyr, proto, digest をインストール。

R.app は終了させてかまいません。

$ make results
$ open tests/current/summary.png

スループットレイテンシーのグラフが出てきました。

スループットとレイテンシのグラフ サンプル

以上、basho_bench のインストールと準備の手順紹介でした。

                        • -

追記

@kenji_rikitake にコマンドラインでもできると教えていただいたので、試してみたメモを追記。

いったんインストールしているパッケージを削除する。念のため、結果グラフ生成でエラーが発生することを確認。

$ R CMD REMOVE getopt ggplot2 reshape plyr proto digest
$ make results   % エラーになる
$ R CMD INSTALL getopt ggplot2 reshape plyr proto digest  % エラーになる

R CMD INSTALL は tar.gz からのインストールらしい。CRAN からのダウンロードは別途必要。
参考: R Installation and Administration http://cran.r-project.org/doc/manuals/R-admin.html


R のシェルからのインストールでは、CRAN からのダウンロードもやってくれるため、そちらでやってみる。
まず、CRAN ミラーの設定。ホームの下に .Rprofile を作って、ミラーを設定する。

参考: CRAN国内ミラーの使い方 - RjpWiki http://www.okada.jp.org/RWiki/?CRAN%B9%F1%C6%E2%A5%DF%A5%E9%A1%BC%A4%CE%BB%C8%A4%A4%CA%FD

$ cat ~/.Rprofile 
options(repos="http://essrc.hyogo-u.ac.jp/cran/") 

R を起動して、パッケージをインストールする。

$ R
> install.packages(c("getopt", "ggplot2", "reshape", "plyr", "proto", "digest"))
> q()   % R シェルを終了させる