Skip to content

Commit c2d65d3

Browse files
authored
Merge pull request #20415 from karalabe/trie-dirty-cache-metrics
trie: track dirty cache metrics, track clean writes on commit
2 parents 7ce7c39 + 13ccf60 commit c2d65d3

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

trie/database.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ var (
3838
memcacheCleanReadMeter = metrics.NewRegisteredMeter("trie/memcache/clean/read", nil)
3939
memcacheCleanWriteMeter = metrics.NewRegisteredMeter("trie/memcache/clean/write", nil)
4040

41+
memcacheDirtyHitMeter = metrics.NewRegisteredMeter("trie/memcache/dirty/hit", nil)
42+
memcacheDirtyMissMeter = metrics.NewRegisteredMeter("trie/memcache/dirty/miss", nil)
43+
memcacheDirtyReadMeter = metrics.NewRegisteredMeter("trie/memcache/dirty/read", nil)
44+
memcacheDirtyWriteMeter = metrics.NewRegisteredMeter("trie/memcache/dirty/write", nil)
45+
4146
memcacheFlushTimeTimer = metrics.NewRegisteredResettingTimer("trie/memcache/flush/time", nil)
4247
memcacheFlushNodesMeter = metrics.NewRegisteredMeter("trie/memcache/flush/nodes", nil)
4348
memcacheFlushSizeMeter = metrics.NewRegisteredMeter("trie/memcache/flush/size", nil)
@@ -321,6 +326,8 @@ func (db *Database) insert(hash common.Hash, blob []byte, node node) {
321326
if _, ok := db.dirties[hash]; ok {
322327
return
323328
}
329+
memcacheDirtyWriteMeter.Mark(int64(len(blob)))
330+
324331
// Create the cached entry for this node
325332
entry := &cachedNode{
326333
node: simplifyNode(node),
@@ -372,8 +379,12 @@ func (db *Database) node(hash common.Hash) node {
372379
db.lock.RUnlock()
373380

374381
if dirty != nil {
382+
memcacheDirtyHitMeter.Mark(1)
383+
memcacheDirtyReadMeter.Mark(int64(dirty.size))
375384
return dirty.obj(hash)
376385
}
386+
memcacheDirtyMissMeter.Mark(1)
387+
377388
// Content unavailable in memory, attempt to retrieve from disk
378389
enc, err := db.diskdb.Get(hash[:])
379390
if err != nil || enc == nil {
@@ -408,8 +419,12 @@ func (db *Database) Node(hash common.Hash) ([]byte, error) {
408419
db.lock.RUnlock()
409420

410421
if dirty != nil {
422+
memcacheDirtyHitMeter.Mark(1)
423+
memcacheDirtyReadMeter.Mark(int64(dirty.size))
411424
return dirty.rlp(), nil
412425
}
426+
memcacheDirtyMissMeter.Mark(1)
427+
413428
// Content unavailable in memory, attempt to retrieve from disk
414429
enc, err := db.diskdb.Get(hash[:])
415430
if err == nil && enc != nil {
@@ -812,6 +827,7 @@ func (c *cleaner) Put(key []byte, rlp []byte) error {
812827
// Move the flushed node into the clean cache to prevent insta-reloads
813828
if c.db.cleans != nil {
814829
c.db.cleans.Set(hash[:], rlp)
830+
memcacheCleanWriteMeter.Mark(int64(len(rlp)))
815831
}
816832
return nil
817833
}

0 commit comments

Comments
 (0)