triedb: add history cache metrics

Signed-off-by: jsvisa <delweng@gmail.com>
This commit is contained in:
jsvisa 2025-08-05 14:59:45 +08:00
parent 2bb24fa3fa
commit dc9562592d
2 changed files with 11 additions and 0 deletions

View file

@ -83,12 +83,14 @@ func loadIndexData(db ethdb.KeyValueReader, state stateIdent, cacher *historyCac
var blob []byte var blob []byte
if cacher != nil && cacher.index.Contains(key) { if cacher != nil && cacher.index.Contains(key) {
blob, _ = cacher.index.Get(key) blob, _ = cacher.index.Get(key)
historyIndexCacheHitMeter.Mark(1)
} else { } else {
if state.account { if state.account {
blob = rawdb.ReadAccountHistoryIndex(db, state.addressHash) blob = rawdb.ReadAccountHistoryIndex(db, state.addressHash)
} else { } else {
blob = rawdb.ReadStorageHistoryIndex(db, state.addressHash, state.storageHash) blob = rawdb.ReadStorageHistoryIndex(db, state.addressHash, state.storageHash)
} }
historyIndexCacheMissMeter.Mark(1)
} }
if len(blob) == 0 { if len(blob) == 0 {
return nil, nil return nil, nil
@ -154,12 +156,14 @@ func (r *indexReader) readGreaterThan(id uint64) (uint64, error) {
key := fmt.Sprintf("%s:%d", r.state.CacheKey(), desc.id) key := fmt.Sprintf("%s:%d", r.state.CacheKey(), desc.id)
if r.cacher != nil && r.cacher.block.Contains(key) { if r.cacher != nil && r.cacher.block.Contains(key) {
blob, _ = r.cacher.block.Get(key) blob, _ = r.cacher.block.Get(key)
historyBlockCacheHitMeter.Mark(1)
} else { } else {
if r.state.account { if r.state.account {
blob = rawdb.ReadAccountHistoryIndexBlock(r.db, r.state.addressHash, desc.id) blob = rawdb.ReadAccountHistoryIndexBlock(r.db, r.state.addressHash, desc.id)
} else { } else {
blob = rawdb.ReadStorageHistoryIndexBlock(r.db, r.state.addressHash, r.state.storageHash, desc.id) blob = rawdb.ReadStorageHistoryIndexBlock(r.db, r.state.addressHash, r.state.storageHash, desc.id)
} }
historyBlockCacheMissMeter.Mark(1)
if r.cacher != nil && len(blob) > 0 { if r.cacher != nil && len(blob) > 0 {
r.cacher.block.Add(key, blob) r.cacher.block.Add(key, blob)
@ -230,12 +234,14 @@ func newIndexWriter(db ethdb.KeyValueReader, state stateIdent, cacher *historyCa
key = fmt.Sprintf("%s:%d", state.CacheKey(), lastDesc.id) key = fmt.Sprintf("%s:%d", state.CacheKey(), lastDesc.id)
if cacher != nil && cacher.block.Contains(key) { if cacher != nil && cacher.block.Contains(key) {
indexBlock, _ = cacher.block.Get(key) indexBlock, _ = cacher.block.Get(key)
historyBlockCacheHitMeter.Mark(1)
} else { } else {
if state.account { if state.account {
indexBlock = rawdb.ReadAccountHistoryIndexBlock(db, state.addressHash, lastDesc.id) indexBlock = rawdb.ReadAccountHistoryIndexBlock(db, state.addressHash, lastDesc.id)
} else { } else {
indexBlock = rawdb.ReadStorageHistoryIndexBlock(db, state.addressHash, state.storageHash, lastDesc.id) indexBlock = rawdb.ReadStorageHistoryIndexBlock(db, state.addressHash, state.storageHash, lastDesc.id)
} }
historyBlockCacheMissMeter.Mark(1)
if cacher != nil { if cacher != nil {
cacher.block.Add(key, indexBlock) cacher.block.Add(key, indexBlock)
} }

View file

@ -81,6 +81,11 @@ var (
historicalAccountReadTimer = metrics.NewRegisteredResettingTimer("pathdb/history/account/reads", nil) historicalAccountReadTimer = metrics.NewRegisteredResettingTimer("pathdb/history/account/reads", nil)
historicalStorageReadTimer = metrics.NewRegisteredResettingTimer("pathdb/history/storage/reads", nil) historicalStorageReadTimer = metrics.NewRegisteredResettingTimer("pathdb/history/storage/reads", nil)
historyIndexCacheHitMeter = metrics.NewRegisteredMeter("pathdb/history/index/cache/hit", nil)
historyIndexCacheMissMeter = metrics.NewRegisteredMeter("pathdb/history/index/cache/miss", nil)
historyBlockCacheHitMeter = metrics.NewRegisteredMeter("pathdb/history/block/cache/hit", nil)
historyBlockCacheMissMeter = metrics.NewRegisteredMeter("pathdb/history/block/cache/miss", nil)
) )
// Metrics in generation // Metrics in generation