ooibc88 / blockbench

BLOCKBENCH: A Framework for Analyzing Private Blockchains. Blockbench contains workloads for measuring the data processing performance, and workloads for understanding the performance of different layers of Blockchain systems.
https://www.comp.nus.edu.sg/~dbsystem/fabricsharp/#/blockbench
Apache License 2.0
391 stars 174 forks source link

How to calculate the final throughput latency #64

Open llvke opened 5 years ago

llvke commented 5 years ago

I use ethereum benchmark and kvstore for experiments and get the result(. run-bench.sh 2 10 2 10).How to calculate the final throughput latency by using the result.

TravisBacon commented 5 years ago

By the way , you can read more issues because your question may be asked by others before , including open and closed .

llvke commented 5 years ago
  • for throughput, you must add up the txs in all polled block lines, then divided by 2*(number of lines starting with "In the last 2s")
  • for latency, simply look for the lines where tx count = X latency = Y and compute Y/X when X !=0

By the way , you can read more issues because your question may be asked by others before , including open and closed .

Thank you very much for your help。Can we communicate via email?This is my email lvkelvke123@163.com

haochenpan commented 5 years ago

Hi @llvke , @TravisBacon ,

Our research group took at their codebase, and around this line, https://github.com/ooibc88/blockbench/blob/master/src/macro/kvstore/ycsbc.cc#L95, they do latency calculation in the monitor thread and print out in the log file.

For Hyperledger, here is the case, I am not sure whether the following applies to other Blockchain backends:

For every TX a client inserts (using YCSB-C framework). the client logs the current time after sending a json rpc request and getting a reply, see here https://github.com/ooibc88/blockbench/blob/master/src/macro/kvstore/db/hyperledger_db.cc#L38.

The monitor thread (StatusThread) polls a block (send an rpc request & parse Txs from json to array) once every 2 seconds by default. The thread then logs the current time as the end time for calculating the latency.

Each Tx’s latency = the difference between the aforementioned two logged times. Finally, Blockbench reports the sum of latencies of all Tx’s in that block.

Best wishes, Roger.