Fix getting the start time so the first block is no longer empty
This commit is contained in:
parent
f04a087546
commit
e785d6851c
|
@ -51,15 +51,26 @@ with the last command being in a seperate window.
|
||||||
## How stats are collected
|
## How stats are collected
|
||||||
|
|
||||||
These stats are derived by having each connection send transactions at the
|
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 rate (or as close as it can get) for the specified time.
|
||||||
specified time, it iterates over all of the blocks that were created in that
|
After the specified time, it iterates over all of the blocks that were created
|
||||||
time. The average and stddev per second are computed based off of that, by
|
in that time.
|
||||||
|
The average and stddev per second are computed based off of that, by
|
||||||
grouping the data by second.
|
grouping the data by second.
|
||||||
|
|
||||||
To send transactions at the specified rate in each connection, we loop
|
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.
|
through the number of transactions.
|
||||||
If its too fast, we wait until the one second mark ends. The transactions per
|
If its too slow, the loop stops at one second.
|
||||||
second stat is computed based off of what ends up in the block.
|
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.
|
||||||
|
|
||||||
|
Note that there will be edge effects on the number of transactions in the first
|
||||||
|
and last blocks.
|
||||||
|
This is because transactions may start sending midway through when tendermint
|
||||||
|
starts building the next block, so it only has half as much time to gather txs
|
||||||
|
that tm-bench sends.
|
||||||
|
Similarly the end of the duration will likely end mid-way through tendermint
|
||||||
|
trying to build the next block.
|
||||||
|
|
||||||
Each of the connections is handled via two separate goroutines.
|
Each of the connections is handled via two separate goroutines.
|
||||||
|
|
||||||
|
|
|
@ -101,7 +101,20 @@ Examples:
|
||||||
"broadcast_tx_"+broadcastTxMethod,
|
"broadcast_tx_"+broadcastTxMethod,
|
||||||
)
|
)
|
||||||
|
|
||||||
// record time start
|
// Wait until transacters have begun until we get the start time
|
||||||
|
for {
|
||||||
|
started := true
|
||||||
|
for _, t := range transacters {
|
||||||
|
for i := 0; i < t.Connections; i++ {
|
||||||
|
if !t.connsStarted[i] && !t.connsBroken[i] {
|
||||||
|
started = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if started {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
timeStart := time.Now()
|
timeStart := time.Now()
|
||||||
logger.Info("Time last transacter started", "t", timeStart)
|
logger.Info("Time last transacter started", "t", timeStart)
|
||||||
|
|
||||||
|
|
|
@ -34,10 +34,11 @@ type transacter struct {
|
||||||
Connections int
|
Connections int
|
||||||
BroadcastTxMethod string
|
BroadcastTxMethod string
|
||||||
|
|
||||||
conns []*websocket.Conn
|
conns []*websocket.Conn
|
||||||
connsBroken []bool
|
connsStarted []bool
|
||||||
wg sync.WaitGroup
|
connsBroken []bool
|
||||||
stopped bool
|
wg sync.WaitGroup
|
||||||
|
stopped bool
|
||||||
|
|
||||||
logger log.Logger
|
logger log.Logger
|
||||||
}
|
}
|
||||||
|
@ -50,6 +51,7 @@ func newTransacter(target string, connections, rate int, size int, broadcastTxMe
|
||||||
Connections: connections,
|
Connections: connections,
|
||||||
BroadcastTxMethod: broadcastTxMethod,
|
BroadcastTxMethod: broadcastTxMethod,
|
||||||
conns: make([]*websocket.Conn, connections),
|
conns: make([]*websocket.Conn, connections),
|
||||||
|
connsStarted: make([]bool, connections),
|
||||||
connsBroken: make([]bool, connections),
|
connsBroken: make([]bool, connections),
|
||||||
logger: log.NewNopLogger(),
|
logger: log.NewNopLogger(),
|
||||||
}
|
}
|
||||||
|
@ -156,6 +158,7 @@ func (t *transacter) sendLoop(connIndex int) {
|
||||||
startTime := time.Now()
|
startTime := time.Now()
|
||||||
endTime := startTime.Add(time.Second)
|
endTime := startTime.Add(time.Second)
|
||||||
numTxSent := t.Rate
|
numTxSent := t.Rate
|
||||||
|
t.connsStarted[connIndex] = true
|
||||||
|
|
||||||
for i := 0; i < t.Rate; i++ {
|
for i := 0; i < t.Rate; i++ {
|
||||||
// each transaction embeds connection index, tx number and hash of the hostname
|
// each transaction embeds connection index, tx number and hash of the hostname
|
||||||
|
|
Loading…
Reference in New Issue