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.StorageReads = statedb.StorageReads // Storage reads are complete(in processing)
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.AccountHashes = statedb.AccountHashes // Account hashes are complete(in validation)

View file

@ -34,6 +34,7 @@ type ExecuteStats struct {
StorageReads time.Duration // Time spent on the storage reads
AccountHashes time.Duration // Time spent on the account trie hash
AccountUpdates time.Duration // Time spent on the account trie update
AccountUpdateWait time.Duration // Time spent on waiting the account trie from prefetching
AccountCommits time.Duration // Time spent on the account trie commit
StorageUpdates time.Duration // Time spent on the storage trie update
StorageCommits time.Duration // Time spent on the storage trie commit
@ -114,7 +115,7 @@ EVM execution: %v
Validation: %v
Account read: %v(%d)
Storage read: %v(%d)
Account hash: %v
Account hash: %v(wait=%v)
Storage hash: %v
DB commit: %v
Block write: %v
@ -126,7 +127,7 @@ Total: %v
common.PrettyDuration(s.Execution), common.PrettyDuration(s.Validation+s.CrossValidation),
common.PrettyDuration(s.AccountReads), s.AccountLoaded,
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.TrieDBCommit+s.SnapshotCommit), common.PrettyDuration(s.BlockWrite),
common.PrettyDuration(s.TotalTime), s.StateReadCacheStats)

View file

@ -144,6 +144,8 @@ type StateDB struct {
AccountHashes time.Duration
AccountUpdates time.Duration
AccountCommits time.Duration
AccountUpdateWait time.Duration
StorageReads time.Duration
StorageUpdates time.Duration
StorageCommits time.Duration
@ -915,6 +917,7 @@ func (s *StateDB) IntermediateRoot(deleteEmptyObjects bool) common.Hash {
} else {
s.trie = trie
}
s.AccountUpdateWait += time.Since(start)
}
// Perform updates before deletions. This prevents resolution of unnecessary trie nodes
// in circumstances similar to the following: