brianfrankcooper / YCSB

Yahoo! Cloud Serving Benchmark

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

RocksDB: High throughput for load phase, very low throughput for workload phase

G-H-Y opened this issue · comments

commented

Hi,
I tested RocksDB with YCSB multiple times. And each time I got a high overall throughput for load phase(e.g. 20784 ops/sec), but a very low overall throughput for workload phase(e.g. 364 ops/sec).
I used YCSB 0.15.0 and workloada, and has the following settings:

recordcount=100000000
threadcount=2
operationcount=100000
insertorder=ordered

load and run commands:

./bin/ycsb load rocksdb -s -P workloads/workloada -P workloads/workload-L100M-R10M -p rocksdb.dir=/***/ycsb-rocksdb-workloada-L100MR10M
./bin/ycsb run rocksdb -s -P workloads/workloada -P workloads/workload-L100M-R10M -p rocksdb.dir=/***/ycsb-rocksdb-workloada-L100MR10M

/*workload-L100M-R10M contains the settings above*/

final result output for the load and run phases:

//load
[OVERALL], RunTime(ms), 4811237
[OVERALL], Throughput(ops/sec), 20784.67554186169
[TOTAL_GCS_G1_Young_Generation], Count, 2323
[TOTAL_GC_TIME_G1_Young_Generation], Time(ms), 5264
[TOTAL_GC_TIME_%_G1_Young_Generation], Time(%), 0.10941053205235991
[TOTAL_GCS_G1_Old_Generation], Count, 0
[TOTAL_GC_TIME_G1_Old_Generation], Time(ms), 0
[TOTAL_GC_TIME_%_G1_Old_Generation], Time(%), 0.0
[TOTAL_GCs], Count, 2323
[TOTAL_GC_TIME], Time(ms), 5264
[TOTAL_GC_TIME_%], Time(%), 0.10941053205235991
[CLEANUP], Operations, 2
[CLEANUP], AverageLatency(us), 4403062.5
[CLEANUP], MinLatency(us), 19
[CLEANUP], MaxLatency(us), 8806106
[CLEANUP], 0, 19.0
[CLEANUP], 9000, 8806106.0
[INSERT], Operations, 99999968
[INSERT], AverageLatency(us), 94.16306898218207
[INSERT], MinLatency(us), 7
[INSERT], MaxLatency(us), 50936202
[INSERT], Return=OK, 100000000

//run
[OVERALL], RunTime(ms), 274565
[OVERALL], Throughput(ops/sec), 364.2124815617431
[TOTAL_GCS_G1_Young_Generation], Count, 4
[TOTAL_GC_TIME_G1_Young_Generation], Time(ms), 43
[TOTAL_GC_TIME_%_G1_Young_Generation], Time(%), 0.015661136707154952
[TOTAL_GCS_G1_Old_Generation], Count, 0
[TOTAL_GC_TIME_G1_Old_Generation], Time(ms), 0
[TOTAL_GC_TIME_%_G1_Old_Generation], Time(%), 0.0
[TOTAL_GCs], Count, 4
[TOTAL_GC_TIME], Time(ms), 43
[TOTAL_GC_TIME_%], Time(%), 0.015661136707154952
[READ], Operations, 50086
[READ], AverageLatency(us), 5438.441740206844
[READ], MinLatency(us), 5
[READ], MaxLatency(us), 72561
[READ], Return=OK, 50086

[UPDATE], Operations, 49914
[UPDATE], AverageLatency(us), 5402.8320911968585
[UPDATE], MinLatency(us), 26
[UPDATE], MaxLatency(us), 68615
[UPDATE], Return=OK, 49914

I expected a comparable or even higher throughput for run phase since load phase will introduce much more I/Os. The run phase is too low that it doesn't make sense to me.
And I also found a similar case #646, but it may not work for my case.
Could you please give me an explanation on the low throughput? Or did I do anything wrong here? Thanks!

Regards,
Hannah