Преглед изворни кода

cmd/geth, core: impl. percentile reporting, instrument insertions

Péter Szilágyi пре 10 година
родитељ
комит
7f92e708c5
2 измењених фајлова са 15 додато и 8 уклоњено
  1. 11 7
      cmd/geth/admin.go
  2. 4 1
      core/chain_manager.go

+ 11 - 7
cmd/geth/admin.go

@@ -735,7 +735,6 @@ func (js *jsre) metrics(call otto.FunctionCall) otto.Value {
 	format := func(total float64, rate float64) string {
 		return fmt.Sprintf("%s (%s/s)", round(total, 0), round(rate, 2))
 	}
-
 	// Iterate over all the metrics, and just dump for now
 	counters := make(map[string]interface{})
 	metrics.DefaultRegistry.Each(func(name string, metric interface{}) {
@@ -756,7 +755,7 @@ func (js *jsre) metrics(call otto.FunctionCall) otto.Value {
 				"Avg01Min": format(metric.Rate1()*60, metric.Rate1()),
 				"Avg05Min": format(metric.Rate5()*300, metric.Rate5()),
 				"Avg15Min": format(metric.Rate15()*900, metric.Rate15()),
-				"Overall":  format(float64(metric.Count()), metric.RateMean()),
+				"Total":    format(float64(metric.Count()), metric.RateMean()),
 			}
 
 		case metrics.Timer:
@@ -764,11 +763,16 @@ func (js *jsre) metrics(call otto.FunctionCall) otto.Value {
 				"Avg01Min": format(metric.Rate1()*60, metric.Rate1()),
 				"Avg05Min": format(metric.Rate5()*300, metric.Rate5()),
 				"Avg15Min": format(metric.Rate15()*900, metric.Rate15()),
-				"Overall":  format(float64(metric.Count()), metric.RateMean()),
-				"Perc01":   round(metric.Percentile(1), 2),
-				"Perc05":   round(metric.Percentile(5), 2),
-				"Perc25":   round(metric.Percentile(25), 2),
-				"Perc90":   round(metric.Percentile(90), 2),
+				"Count":    format(float64(metric.Count()), metric.RateMean()),
+				"Maximum":  time.Duration(metric.Max()).String(),
+				"Minimum":  time.Duration(metric.Min()).String(),
+				"Percentile": map[string]interface{}{
+					"20": time.Duration(metric.Percentile(0.2)).String(),
+					"50": time.Duration(metric.Percentile(0.5)).String(),
+					"80": time.Duration(metric.Percentile(0.8)).String(),
+					"95": time.Duration(metric.Percentile(0.95)).String(),
+					"99": time.Duration(metric.Percentile(0.99)).String(),
+				},
 			}
 
 		default:

+ 4 - 1
core/chain_manager.go

@@ -19,6 +19,7 @@ import (
 	"github.com/ethereum/go-ethereum/params"
 	"github.com/ethereum/go-ethereum/pow"
 	"github.com/ethereum/go-ethereum/rlp"
+	"github.com/rcrowley/go-metrics"
 )
 
 var (
@@ -27,6 +28,8 @@ var (
 
 	blockHashPre = []byte("block-hash-")
 	blockNumPre  = []byte("block-num-")
+
+	blockInsertTimer = metrics.GetOrRegisterTimer("core/BlockInsertions", metrics.DefaultRegistry)
 )
 
 const (
@@ -691,7 +694,7 @@ func (self *ChainManager) InsertChain(chain types.Blocks) (int, error) {
 		self.futureBlocks.Delete(block.Hash())
 
 		stats.processed++
-
+		blockInsertTimer.UpdateSince(bstart)
 	}
 
 	if (stats.queued > 0 || stats.processed > 0 || stats.ignored > 0) && bool(glog.V(logger.Info)) {