仕事やプライベートで調べたことのメモ書きなど(@札幌)

仕事やプライベートで調べたこと、興味ある事のメモ書きです。2016年4月から札幌で働いてます。※このブログは個人によるもので、団体を代表するものではありません。

EC2上のAerospikeでycsbを実行

先日AerospikeをEC2(もちろん無料Tierのt2.micro)で試してみました。
takumats.hatenablog.com

今回は、そこにycsbを入れてみますが、手順は先日Windows上のVirtualboxでやったのと同じなので割愛。ちなみにAerospikeのページをよく読むと、ycsbをインストール済みのaerobenchというAMIが公開されているとのことだが、見当たらなかった。(と思ったら、N. Californiaにありました。後から気づきました。)
takumats.hatenablog.com

基本的にはAerospikeのサイトにある以下の手順に従えば実行できます。
Documentation | Aerospike

が、ここで問題。マシンのサイズが小さすぎるので、デフォルトのworkload-shortloadが動きません。なので、workload-shortloadをコピーしてworkload-shortload2を作成し、最初のrecordcountと、operationcountを適当に10分の1(=100000)にしました。

これで見事実行できます。ちなみにloadは2回やろうとすると、キー重複のエラーになるので、今はメモリのみモード(永続化なしモード)なのでサービスを都度再起動すると楽勝です。runは何回でも実行可能です(でした)。

[ec2-user@ip-xxx-xx-xx-xx YCSB]$ bin/ycsb load aerospike -s -threads 100 -P workloads/workload-shortload2 -p as.host=127.0.0.1
[WARN]  Running against a source checkout. In order to get our runtime dependencies we'll have to invoke Maven. Depending on the state of your system, this may take ~30-45 seconds
(中略)
[OVERALL], RunTime(ms), 6793.0
[OVERALL], Throughput(ops/sec), 14721.036360959812
[CLEANUP], Operations, 100
[CLEANUP], AverageLatency(us), 43.14
[CLEANUP], LatencyVariance(us), 629.1203999999998
[CLEANUP], MinLatency(us), 27
[CLEANUP], MaxLatency(us), 238
[CLEANUP], 95thPercentileLatency(us), 0
[CLEANUP], 99thPercentileLatency(us), 0
[CLEANUP], 0, 100
[CLEANUP], 1, 0
[CLEANUP], 2, 0
(中略)
[INSERT], Operations, 100000
[INSERT], AverageLatency(us), 6032.59377
[INSERT], LatencyVariance(us), 3.942717181160718E7
[INSERT], MinLatency(us), 27
[INSERT], MaxLatency(us), 197585
[INSERT], 95thPercentileLatency(us), 16000
[INSERT], 99thPercentileLatency(us), 24000
[INSERT], Return=OK, 100000
[INSERT], 0, 3173
[INSERT], 1, 807
[INSERT], 2, 995
[INSERT], 3, 8158
(後略)

ちなみに、たくさん出てくる以下の列はヒストグラム情報。

[INSERT], 0, 3173
[INSERT], 1, 807
[INSERT], 2, 995
[INSERT], 3, 8158

以下のようなグラフを描けます(実際には1000分割してるけど、グラフが見づらいので上位100のみで描画)
f:id:takumats:20161231033708p:plain
なお、このヒストグラム出力の細かい設定は、ycsbのworkload設定ファイルで可能な模様です。

runの場合も、workload-shortrunが大きすぎるので、workload-shortrun2を作って、10分の1サイズにします。
ちなみに、このaerospikeのworkload-shortrunの中身で、operationcountが0になっています。ただ、ここが0でも実際にはオペレーションが全くないということではなさそうなので、よくわかりません。