|
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