riak / riak-cs(enterprise版) ベンチマークしました

41
Riak / Riak-CS(Enterprise) ベンチマークしました Takashi Sogabe @rev4t Internet Initiative Japan., Inc.

Upload: takashi-sogabe

Post on 12-Nov-2014

2.339 views

Category:

Technology


5 download

DESCRIPTION

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

TRANSCRIPT

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

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

Takashi Sogabe

@rev4t

Internet Initiative Japan., Inc.

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

調査したかったこと

• riak / riak-cs どの程度のスループットが出る?

• 最適なハードウェア構成は?

• Ethernetは GbEと 10GbE どちらが良い?

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

評価したもの

• riak

– riak-1.3.0

• riak-cs-ee

– riak-cs-ee-1.3.0

–マルチデータセンタレプリケーションは使っていないので、riak-cs-1.3.0 と読み替えても同じはず

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

ハードウェア構成

• 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

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

basho_bench

• bashoさんが提供している benchmarkツール

– Cassandra, Hibariにも対応

–複数ノードへ同時アクセスすることもできる

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

RIAK BASHO_BENCH結果

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

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

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

basho_bench 設定値

• duration

– 180sec

• concurrent

– 64

• key_generator

– {int_to_bin, {uniform_int, 100000}}

• value_generator

– {fixed_bin, 10000}

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

basho_bench 測定条件

• Keyは binary値を 1 – 100000 に設定

– GET測定時は予め全データを preloadしておく

• オブジェクトのサイズ: 10kB

• API: PB(Protocol Buffer)

• Backend DB: Bitcask

• 測定毎にBitcaskの内容を削除、プロセスも再起動

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

GET node=1

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

GET node=3

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

PUT n=1

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

PUT n=3

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

PUT n=4

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

PUT n=8

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

考察

• 良好なスループット性能

– GET: 3ノード、PUT: 8ノードで basho_benchのGbE Ethernet帯域を使い切った

• Riakクラスタをフル稼働させるためには10GbE Ethernetを使うか、ノード数を増やした上で複数のbasho_benchから測定する必要がある

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

RIAK-CS(ENTERPRISE版) BASHO_BENCH結果

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

Riak 設定値

• Storage Backend

– riak_cs_kv_multi_backend

– Bashoドキュメントに従い、riak_kv_eleveldb_backend + riak_kv_bitcask_backend の併用構成にする)

• その他はRiakと同じ設定

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

Riak-CS / stanchion 設定値

• /etc/riak/app.config, vm.config

– IPアドレスの設定と Admin user credentials の設定のみ実施

–その他はデフォルト設定を用いた

• /etc/stanchion/app.config, vm.config

– IPアドレスの設定のみ実施、その他はデフォルト設定

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

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}…

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

GET node=1 (10kB)

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

GET node=3(10kB)

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

GET node=4(10kB)

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

GET node=8(10kB)

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

GET node=16(10kB)

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

GET node=32(10kB)

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

GET node=1(10MB) Throughput Mbytes/sec

Mb

ytes

/sec

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

GET node=3(10MB)

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

PUT node=1

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

PUT node=3

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

PUT node=4

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

PUT node=8

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

PUT node=16

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

PUT node=32

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

DELETE node=1

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

DELETE node=3

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

DELETE node=4

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

DELETE node=8

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

DELETE node=16

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

DELETE node=32

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

Riak-CS 考察

• 小さいオブジェクトだとスループット出ない

– 10kBの場合、1ノード当たり 200 ops/sec程度(20Mbps程度の帯域しか使えない)

– 10MBの場合、3ノードで Ethernet帯域を使い切れる