瀏覽代碼

cmd/geth, trie: report on trie cache unloads, also add debug log

Péter Szilágyi 9 年之前
父節點
當前提交
88a593d559
共有 3 個文件被更改,包括 11 次插入1 次删除
  1. 2 1
      cmd/geth/chaincmd.go
  2. 2 0
      core/state/statedb.go
  3. 7 0
      trie/trie.go

+ 2 - 1
cmd/geth/chaincmd.go

@@ -99,7 +99,8 @@ func importChain(ctx *cli.Context) error {
 			utils.Fatalf("Failed to read database stats: %v", err)
 		}
 		fmt.Println(stats)
-		fmt.Printf("Trie cache misses: %d\n\n", trie.CacheMisses())
+		fmt.Printf("Trie cache misses: %d\n", trie.CacheMisses())
+		fmt.Printf("Trie cache unloads: %d\n\n", trie.CacheUnloads())
 
 		// Compact the entire database to more accurately measure disk io and print the stats
 		start = time.Now()

+ 2 - 0
core/state/statedb.go

@@ -564,6 +564,8 @@ func (s *StateDB) Commit() (root common.Hash, err error) {
 func (s *StateDB) CommitBatch() (root common.Hash, batch ethdb.Batch) {
 	batch = s.db.NewBatch()
 	root, _ = s.commit(batch)
+
+	glog.V(logger.Debug).Infof("Trie cache stats: %d misses, %d unloads", trie.CacheMisses(), trie.CacheUnloads())
 	return root, batch
 }
 

+ 7 - 0
trie/trie.go

@@ -47,6 +47,13 @@ func CacheMisses() int64 {
 	return cacheMissCounter.Count()
 }
 
+// CacheUnloads retrieves a global counter measuring the number of cache unloads
+// the trie did since process startup. This isn't useful for anything apart from
+// trie debugging purposes.
+func CacheUnloads() int64 {
+	return cacheUnloadCounter.Count()
+}
+
 func init() {
 	sha3.NewKeccak256().Sum(emptyState[:0])
 }