Riak / Riak-CS(Enterprise版)
ベンチマークしました
Takashi Sogabe
@rev4t
Internet Initiative Japan., Inc.
調査したかったこと
• riak / riak-cs どの程度のスループットが出る?
• 最適なハードウェア構成は?
• Ethernetは GbEと 10GbE どちらが良い?
評価したもの
• riak
– riak-1.3.0
• riak-cs-ee
– riak-cs-ee-1.3.0
– マルチデータセンタレプリケーションは使っていな
いので、riak-cs-1.3.0 と読み替えても同じはず
ハードウェア構成
• Fujitsu Primagy RX200 S6
– 32台 + 2台(basho_bench用)
• Memory: 24GB
• CPU: Xeon(R) CPU L5630 @ 2.13GHz, 4 cores, 8HTs
• Ethernet: GbE
– 全ノード 同一L2SW上に収容されています
• HDD: 4TB
– megaraid_sas (raid5)
– Seagate ST91000640NS x 8台 (2.5inch SATA, 1TB, 7200rpm,
64MB cache)
– XFS
basho_bench
• bashoさんが提供している benchmarkツール
– Cassandra, Hibariにも対応
– 複数ノードへ同時アクセスすることもできる
RIAK BASHO_BENCH結果
Riak 設定値
• /etc/riak
– app.config, vm.config
• デフォルト値を使用、IPアドレス情報のみ変更
• Kernel
sudo sysctl -w net.ipv4.tcp_max_syn_backlog=40000
sudo sysctl -w net.core.somaxconn=4000
sudo sysctl -w net.ipv4.tcp_timestamps=0
sudo sysctl -w net.ipv4.tcp_sack=1
sudo sysctl -w net.ipv4.tcp_window_scaling=1
sudo sysctl -w net.ipv4.tcp_fin_timeout=15
sudo sysctl -w net.ipv4.tcp_keepalive_intvl=30
sudo sysctl -w net.ipv4.tcp_tw_reuse=1
sudo mount -o remount,noatime (device)
echo deadline | sudo tee /sys/block/sda/queue/scheduler
basho_bench 設定値
• duration
– 180sec
• concurrent
– 64
• key_generator
– {int_to_bin, {uniform_int, 100000}}
• value_generator
– {fixed_bin, 10000}
basho_bench 測定条件
• Keyは binary値を 1 – 100000 に設定
– GET測定時は予め全データを preloadしておく
• オブジェクトのサイズ: 10kB
• API: PB(Protocol Buffer)
• Backend DB: Bitcask
• 測定毎にBitcaskの内容を削除、プロセスも再
起動
GET node=1
GET node=3
PUT n=1
PUT n=3
PUT n=4
PUT n=8
考察
• 良好なスループット性能
– GET: 3ノード、PUT: 8ノードで basho_benchのGbE
Ethernet帯域を使い切った
• Riakクラスタをフル稼働させるためには10GbE
Ethernetを使うか、ノード数を増やした上で複
数のbasho_benchから測定する必要がある
RIAK-CS(ENTERPRISE版)
BASHO_BENCH結果
Riak 設定値
• Storage Backend
– riak_cs_kv_multi_backend
– Bashoドキュメントに従い、
riak_kv_eleveldb_backend +
riak_kv_bitcask_backend の併用構成にする)
• その他はRiakと同じ設定
Riak-CS / stanchion 設定値
• /etc/riak/app.config, vm.config
– IPアドレスの設定と Admin user credentials の設
定のみ実施
– その他はデフォルト設定を用いた
• /etc/stanchion/app.config, vm.config
– IPアドレスの設定のみ実施、その他はデフォルト
設定
basho_bench測定値
• duration
– 60sec
• key_generator
– {int_to_str, {partitioned_sequential_int, 100000}}
• value_generator
– {function, basho_bench_driver_cs, bigfile_valgen,
[[{file_size, 10000}…
GET node=1 (10kB)
GET node=3(10kB)
GET node=4(10kB)
GET node=8(10kB)
GET node=16(10kB)
GET node=32(10kB)
GET node=1(10MB)
Throughput Mbytes/secMbytes/sec
GET node=3(10MB)
PUT node=1
PUT node=3
PUT node=4
PUT node=8
PUT node=16
PUT node=32
DELETE node=1
DELETE node=3
DELETE node=4
DELETE node=8
DELETE node=16
DELETE node=32
Riak-CS 考察
• 小さいオブジェクトだとスループット出ない
– 10kBの場合、1ノード当たり 200 ops/sec程度
(20Mbps程度の帯域しか使えない)
– 10MBの場合、3ノードで Ethernet帯域を使い切れ
る

Riak / Riak-CS(Enterprise版) ベンチマークしました