mirror of
https://github.com/fluencelabs/tendermint
synced 2025-04-25 06:42:16 +00:00
* lint docs with write-good, stop-words * remove package-lock.json * update changelog * fix wrong paragraph formatting * fix some docs formatting * fix docs format * fix abci spec format
81 lines
1.9 KiB
Markdown
81 lines
1.9 KiB
Markdown
# tm-bench
|
|
|
|
Tendermint blockchain benchmarking tool:
|
|
|
|
- https://github.com/tendermint/tools/tree/master/tm-bench
|
|
|
|
For example, the following:
|
|
|
|
```
|
|
tm-bench -T 10 -r 1000 localhost:26657
|
|
```
|
|
|
|
will output:
|
|
|
|
```
|
|
Stats Avg StdDev Max Total
|
|
Txs/sec 818 532 1549 9000
|
|
Blocks/sec 0.818 0.386 1 9
|
|
```
|
|
|
|
## Quick Start
|
|
|
|
[Install Tendermint](../introduction/install)
|
|
This currently is setup to work on tendermint's develop branch. Please ensure
|
|
you are on that. (If not, update `tendermint` and `tmlibs` in gopkg.toml to use
|
|
the master branch.)
|
|
|
|
then run:
|
|
|
|
```
|
|
tendermint init
|
|
tendermint node --proxy_app=kvstore
|
|
```
|
|
|
|
```
|
|
tm-bench localhost:26657
|
|
```
|
|
|
|
with the last command being in a seperate window.
|
|
|
|
## Usage
|
|
|
|
```
|
|
tm-bench [-c 1] [-T 10] [-r 1000] [-s 250] [endpoints]
|
|
|
|
Examples:
|
|
tm-bench localhost:26657
|
|
Flags:
|
|
-T int
|
|
Exit after the specified amount of time in seconds (default 10)
|
|
-c int
|
|
Connections to keep open per endpoint (default 1)
|
|
-r int
|
|
Txs per second to send in a connection (default 1000)
|
|
-s int
|
|
Size per tx in bytes
|
|
-v Verbose output
|
|
```
|
|
|
|
## How stats are collected
|
|
|
|
These stats are derived by having each connection send transactions at the
|
|
specified rate (or as close as it can get) for the specified time. After the
|
|
specified time, it iterates over all of the blocks that were created in that
|
|
time. The average and stddev per second are computed based off of that, by
|
|
grouping the data by second.
|
|
|
|
To send transactions at the specified rate in each connection, we loop
|
|
through the number of transactions. If its too slow, the loop stops at one second.
|
|
If its too fast, we wait until the one second mark ends. The transactions per
|
|
second stat is computed based off of what ends up in the block.
|
|
|
|
Each of the connections is handled via two separate goroutines.
|
|
|
|
## Development
|
|
|
|
```
|
|
make get_vendor_deps
|
|
make test
|
|
```
|