Merge pull request #1406 from cffls/accurate_chain_execution

Make block execution timer more accurate
This commit is contained in:
avalkov 2025-01-16 10:21:44 +02:00 committed by GitHub
commit 0d1b857a79
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 10 additions and 2 deletions

View file

@ -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
@ -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 {

View file

@ -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)
@ -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
@ -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()

View file

@ -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