|
38 | 38 | memcacheCleanReadMeter = metrics.NewRegisteredMeter("trie/memcache/clean/read", nil) |
39 | 39 | memcacheCleanWriteMeter = metrics.NewRegisteredMeter("trie/memcache/clean/write", nil) |
40 | 40 |
|
| 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 | + |
41 | 46 | memcacheFlushTimeTimer = metrics.NewRegisteredResettingTimer("trie/memcache/flush/time", nil) |
42 | 47 | memcacheFlushNodesMeter = metrics.NewRegisteredMeter("trie/memcache/flush/nodes", nil) |
43 | 48 | memcacheFlushSizeMeter = metrics.NewRegisteredMeter("trie/memcache/flush/size", nil) |
@@ -321,6 +326,8 @@ func (db *Database) insert(hash common.Hash, blob []byte, node node) { |
321 | 326 | if _, ok := db.dirties[hash]; ok { |
322 | 327 | return |
323 | 328 | } |
| 329 | + memcacheDirtyWriteMeter.Mark(int64(len(blob))) |
| 330 | + |
324 | 331 | // Create the cached entry for this node |
325 | 332 | entry := &cachedNode{ |
326 | 333 | node: simplifyNode(node), |
@@ -372,8 +379,12 @@ func (db *Database) node(hash common.Hash) node { |
372 | 379 | db.lock.RUnlock() |
373 | 380 |
|
374 | 381 | if dirty != nil { |
| 382 | + memcacheDirtyHitMeter.Mark(1) |
| 383 | + memcacheDirtyReadMeter.Mark(int64(dirty.size)) |
375 | 384 | return dirty.obj(hash) |
376 | 385 | } |
| 386 | + memcacheDirtyMissMeter.Mark(1) |
| 387 | + |
377 | 388 | // Content unavailable in memory, attempt to retrieve from disk |
378 | 389 | enc, err := db.diskdb.Get(hash[:]) |
379 | 390 | if err != nil || enc == nil { |
@@ -408,8 +419,12 @@ func (db *Database) Node(hash common.Hash) ([]byte, error) { |
408 | 419 | db.lock.RUnlock() |
409 | 420 |
|
410 | 421 | if dirty != nil { |
| 422 | + memcacheDirtyHitMeter.Mark(1) |
| 423 | + memcacheDirtyReadMeter.Mark(int64(dirty.size)) |
411 | 424 | return dirty.rlp(), nil |
412 | 425 | } |
| 426 | + memcacheDirtyMissMeter.Mark(1) |
| 427 | + |
413 | 428 | // Content unavailable in memory, attempt to retrieve from disk |
414 | 429 | enc, err := db.diskdb.Get(hash[:]) |
415 | 430 | if err == nil && enc != nil { |
@@ -812,6 +827,7 @@ func (c *cleaner) Put(key []byte, rlp []byte) error { |
812 | 827 | // Move the flushed node into the clean cache to prevent insta-reloads |
813 | 828 | if c.db.cleans != nil { |
814 | 829 | c.db.cleans.Set(hash[:], rlp) |
| 830 | + memcacheCleanWriteMeter.Mark(int64(len(rlp))) |
815 | 831 | } |
816 | 832 | return nil |
817 | 833 | } |
|
0 commit comments