core: track account trie wait

This commit is contained in:
Gary Rong 2025-10-16 14:37:05 +08:00
parent c6b2a6c05d
commit 97b516bb89
3 changed files with 18 additions and 13 deletions

View file

@ -2158,6 +2158,7 @@ func (bc *BlockChain) ProcessBlock(parentRoot common.Hash, block *types.Block, s
stats.AccountReads = statedb.AccountReads // Account reads are complete(in processing) stats.AccountReads = statedb.AccountReads // Account reads are complete(in processing)
stats.StorageReads = statedb.StorageReads // Storage reads are complete(in processing) stats.StorageReads = statedb.StorageReads // Storage reads are complete(in processing)
stats.AccountUpdates = statedb.AccountUpdates // Account updates are complete(in validation) stats.AccountUpdates = statedb.AccountUpdates // Account updates are complete(in validation)
stats.AccountUpdateWait = statedb.AccountUpdateWait
stats.StorageUpdates = statedb.StorageUpdates // Storage updates are complete(in validation) stats.StorageUpdates = statedb.StorageUpdates // Storage updates are complete(in validation)
stats.AccountHashes = statedb.AccountHashes // Account hashes are complete(in validation) stats.AccountHashes = statedb.AccountHashes // Account hashes are complete(in validation)

View file

@ -30,13 +30,14 @@ import (
// ExecuteStats includes all the statistics of a block execution in details. // ExecuteStats includes all the statistics of a block execution in details.
type ExecuteStats struct { type ExecuteStats struct {
// State read times // State read times
AccountReads time.Duration // Time spent on the account reads AccountReads time.Duration // Time spent on the account reads
StorageReads time.Duration // Time spent on the storage reads StorageReads time.Duration // Time spent on the storage reads
AccountHashes time.Duration // Time spent on the account trie hash AccountHashes time.Duration // Time spent on the account trie hash
AccountUpdates time.Duration // Time spent on the account trie update AccountUpdates time.Duration // Time spent on the account trie update
AccountCommits time.Duration // Time spent on the account trie commit AccountUpdateWait time.Duration // Time spent on waiting the account trie from prefetching
StorageUpdates time.Duration // Time spent on the storage trie update AccountCommits time.Duration // Time spent on the account trie commit
StorageCommits time.Duration // Time spent on the storage trie commit StorageUpdates time.Duration // Time spent on the storage trie update
StorageCommits time.Duration // Time spent on the storage trie commit
AccountLoaded int // Number of accounts loaded AccountLoaded int // Number of accounts loaded
AccountUpdated int // Number of accounts updated AccountUpdated int // Number of accounts updated
@ -114,7 +115,7 @@ EVM execution: %v
Validation: %v Validation: %v
Account read: %v(%d) Account read: %v(%d)
Storage read: %v(%d) Storage read: %v(%d)
Account hash: %v Account hash: %v(wait=%v)
Storage hash: %v Storage hash: %v
DB commit: %v DB commit: %v
Block write: %v Block write: %v
@ -126,7 +127,7 @@ Total: %v
common.PrettyDuration(s.Execution), common.PrettyDuration(s.Validation+s.CrossValidation), common.PrettyDuration(s.Execution), common.PrettyDuration(s.Validation+s.CrossValidation),
common.PrettyDuration(s.AccountReads), s.AccountLoaded, common.PrettyDuration(s.AccountReads), s.AccountLoaded,
common.PrettyDuration(s.StorageReads), s.StorageLoaded, common.PrettyDuration(s.StorageReads), s.StorageLoaded,
common.PrettyDuration(s.AccountHashes+s.AccountCommits+s.AccountUpdates), common.PrettyDuration(s.AccountHashes+s.AccountCommits+s.AccountUpdates), common.PrettyDuration(s.AccountUpdateWait),
common.PrettyDuration(s.StorageCommits+s.StorageUpdates), common.PrettyDuration(s.StorageCommits+s.StorageUpdates),
common.PrettyDuration(s.TrieDBCommit+s.SnapshotCommit), common.PrettyDuration(s.BlockWrite), common.PrettyDuration(s.TrieDBCommit+s.SnapshotCommit), common.PrettyDuration(s.BlockWrite),
common.PrettyDuration(s.TotalTime), s.StateReadCacheStats) common.PrettyDuration(s.TotalTime), s.StateReadCacheStats)

View file

@ -140,10 +140,12 @@ type StateDB struct {
witnessStats *stateless.WitnessStats witnessStats *stateless.WitnessStats
// Measurements gathered during execution for debugging purposes // Measurements gathered during execution for debugging purposes
AccountReads time.Duration AccountReads time.Duration
AccountHashes time.Duration AccountHashes time.Duration
AccountUpdates time.Duration AccountUpdates time.Duration
AccountCommits time.Duration AccountCommits time.Duration
AccountUpdateWait time.Duration
StorageReads time.Duration StorageReads time.Duration
StorageUpdates time.Duration StorageUpdates time.Duration
StorageCommits time.Duration StorageCommits time.Duration
@ -915,6 +917,7 @@ func (s *StateDB) IntermediateRoot(deleteEmptyObjects bool) common.Hash {
} else { } else {
s.trie = trie s.trie = trie
} }
s.AccountUpdateWait += time.Since(start)
} }
// Perform updates before deletions. This prevents resolution of unnecessary trie nodes // Perform updates before deletions. This prevents resolution of unnecessary trie nodes
// in circumstances similar to the following: // in circumstances similar to the following: