riak / riak-cs(enterprise版) ベンチマークしました
DESCRIPTION
Riak Source Code Reading #8 発表スライド riak, riak-cs(エンタープライズ版)を basho_bench でベンチマークした結果をまとめました。検証方法についてはいくつか課題はありますが、自分で測定した結果が概ね正しいかどうかの判断材料にはなると思いますので、是非ご活用ください。TRANSCRIPT
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/sec
Mb
ytes
/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帯域を使い切れる