aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2015-06-22 03:10:24 +0800
committerPéter Szilágyi <peterke@gmail.com>2015-06-24 23:34:04 +0800
commit7f92e708c504e1c4a7382c68b5a4ed68db9c8deb (patch)
tree1b951d5231eb295e39766ab6a833e15ddbb8f926
parentb426301467304a6c047df9baa033a042ddf3c4bb (diff)
downloadgo-tangerine-7f92e708c504e1c4a7382c68b5a4ed68db9c8deb.tar.gz
go-tangerine-7f92e708c504e1c4a7382c68b5a4ed68db9c8deb.tar.zst
go-tangerine-7f92e708c504e1c4a7382c68b5a4ed68db9c8deb.zip
cmd/geth, core: impl. percentile reporting, instrument insertions
-rw-r--r--cmd/geth/admin.go18
-rw-r--r--core/chain_manager.go5
2 files changed, 15 insertions, 8 deletions
diff --git a/cmd/geth/admin.go b/cmd/geth/admin.go
index 7d8780ef0..0c26cc97c 100644
--- a/cmd/geth/admin.go
+++ b/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:
diff --git a/core/chain_manager.go b/core/chain_manager.go
index e3795f561..6a017b63f 100644
--- a/core/chain_manager.go
+++ b/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)) {