Skip to content

Commit

Permalink
Merge pull request #1406 from cffls/accurate_chain_execution
Browse files Browse the repository at this point in the history
Make block execution timer more accurate
  • Loading branch information
avalkov authored Jan 16, 2025
2 parents 62e7448 + 99be105 commit 0d1b857
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 2 deletions.
3 changes: 3 additions & 0 deletions consensus/bor/bor.go
Original file line number Diff line number Diff line change
Expand Up @@ -832,6 +832,7 @@ func (c *Bor) Finalize(chain consensus.ChainHeaderReader, header *types.Header,
}

if IsSprintStart(headerNumber, c.config.CalculateSprint(headerNumber)) {
start := time.Now()
ctx := context.Background()
cx := statefull.ChainContext{Chain: chain, Bor: c}
// check and commit span
Expand All @@ -848,6 +849,8 @@ func (c *Bor) Finalize(chain consensus.ChainHeaderReader, header *types.Header,
return
}
}

state.BorConsensusTime = time.Since(start)
}

if err = c.changeContractCodeIfNeeded(headerNumber, state); err != nil {
Expand Down
6 changes: 4 additions & 2 deletions core/blockchain.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@ var (
snapshotStorageReadTimer = metrics.NewRegisteredResettingTimer("chain/snapshot/storage/reads", nil)
snapshotCommitTimer = metrics.NewRegisteredResettingTimer("chain/snapshot/commits", nil)

borConsensusTime = metrics.NewRegisteredTimer("chain/bor/consensus", nil)

blockImportTimer = metrics.NewRegisteredMeter("chain/imports", nil)
triedbCommitTimer = metrics.NewRegisteredTimer("chain/triedb/commits", nil)

Expand Down Expand Up @@ -2355,7 +2357,7 @@ func (bc *BlockChain) insertChain(chain types.Blocks, setHead bool) (int, error)
bc.stateSyncFeed.Send(StateSyncEvent{Data: data})
}
// BOR
ptime := time.Since(pstart) - vtime
ptime := time.Since(pstart) - vtime - statedb.BorConsensusTime

proctime := time.Since(start) // processing + validation

Expand All @@ -2374,7 +2376,7 @@ func (bc *BlockChain) insertChain(chain types.Blocks, setHead bool) (int, error)
trieRead += statedb.SnapshotStorageReads + statedb.StorageReads // The time spent on storage read
blockExecutionTimer.Update(ptime - trieRead) // The time spent on EVM processing
blockValidationTimer.Update(vtime - (triehash + trieUpdate)) // The time spent on block validation

borConsensusTime.Update(statedb.BorConsensusTime) // The time spent on bor consensus (span + state sync)
// Write the block to the chain and get the status.
var (
wstart = time.Now()
Expand Down
3 changes: 3 additions & 0 deletions core/state/statedb.go
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,9 @@ type StateDB struct {
SnapshotCommits time.Duration
TrieDBCommits time.Duration

// Bor metrics
BorConsensusTime time.Duration

AccountUpdated int
StorageUpdated atomic.Int64
AccountDeleted int
Expand Down

0 comments on commit 0d1b857

Please sign in to comment.