core: add code cache hit/miss meters

- register `codeCacheHitMeter` / `codeCacheMissMeter` under `chain/code/reads/cache/process/{hit,miss}`, mirroring the account/storage pair
- wire them from `StateReadCacheStats.CodeStats` in `reportMetrics()` so the data already exposed in the slow-block JSON is also scrapable from Prometheus
- code cache efficiency matters — bytecode misses can be tens of KB each, so operators need a live meter, not just slow-block postmortems
This commit is contained in:
Tooshi 2026-04-25 02:48:01 +08:00
parent b70d9a4b8e
commit 120bd3ad36
2 changed files with 4 additions and 0 deletions

View file

@ -84,6 +84,8 @@ var (
accountCacheMissMeter = metrics.NewRegisteredMeter("chain/account/reads/cache/process/miss", nil)
storageCacheHitMeter = metrics.NewRegisteredMeter("chain/storage/reads/cache/process/hit", nil)
storageCacheMissMeter = metrics.NewRegisteredMeter("chain/storage/reads/cache/process/miss", nil)
codeCacheHitMeter = metrics.NewRegisteredMeter("chain/code/reads/cache/process/hit", nil)
codeCacheMissMeter = metrics.NewRegisteredMeter("chain/code/reads/cache/process/miss", nil)
accountCacheHitPrefetchMeter = metrics.NewRegisteredMeter("chain/account/reads/cache/prefetch/hit", nil)
accountCacheMissPrefetchMeter = metrics.NewRegisteredMeter("chain/account/reads/cache/prefetch/miss", nil)

View file

@ -101,6 +101,8 @@ func (s *ExecuteStats) reportMetrics() {
accountCacheMissMeter.Mark(s.StateReadCacheStats.StateStats.AccountCacheMiss)
storageCacheHitMeter.Mark(s.StateReadCacheStats.StateStats.StorageCacheHit)
storageCacheMissMeter.Mark(s.StateReadCacheStats.StateStats.StorageCacheMiss)
codeCacheHitMeter.Mark(s.StateReadCacheStats.CodeStats.CacheHit)
codeCacheMissMeter.Mark(s.StateReadCacheStats.CodeStats.CacheMiss)
}
// slowBlockLog represents the JSON structure for slow block logging.