cmd/geth, core: impl. percentile reporting, instrument insertions
This commit is contained in:
parent
b426301467
commit
7f92e708c5
@ -735,7 +735,6 @@ func (js *jsre) metrics(call otto.FunctionCall) otto.Value {
|
|||||||
format := func(total float64, rate float64) string {
|
format := func(total float64, rate float64) string {
|
||||||
return fmt.Sprintf("%s (%s/s)", round(total, 0), round(rate, 2))
|
return fmt.Sprintf("%s (%s/s)", round(total, 0), round(rate, 2))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Iterate over all the metrics, and just dump for now
|
// Iterate over all the metrics, and just dump for now
|
||||||
counters := make(map[string]interface{})
|
counters := make(map[string]interface{})
|
||||||
metrics.DefaultRegistry.Each(func(name string, metric 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()),
|
"Avg01Min": format(metric.Rate1()*60, metric.Rate1()),
|
||||||
"Avg05Min": format(metric.Rate5()*300, metric.Rate5()),
|
"Avg05Min": format(metric.Rate5()*300, metric.Rate5()),
|
||||||
"Avg15Min": format(metric.Rate15()*900, metric.Rate15()),
|
"Avg15Min": format(metric.Rate15()*900, metric.Rate15()),
|
||||||
"Overall": format(float64(metric.Count()), metric.RateMean()),
|
"Total": format(float64(metric.Count()), metric.RateMean()),
|
||||||
}
|
}
|
||||||
|
|
||||||
case metrics.Timer:
|
case metrics.Timer:
|
||||||
@ -764,11 +763,16 @@ func (js *jsre) metrics(call otto.FunctionCall) otto.Value {
|
|||||||
"Avg01Min": format(metric.Rate1()*60, metric.Rate1()),
|
"Avg01Min": format(metric.Rate1()*60, metric.Rate1()),
|
||||||
"Avg05Min": format(metric.Rate5()*300, metric.Rate5()),
|
"Avg05Min": format(metric.Rate5()*300, metric.Rate5()),
|
||||||
"Avg15Min": format(metric.Rate15()*900, metric.Rate15()),
|
"Avg15Min": format(metric.Rate15()*900, metric.Rate15()),
|
||||||
"Overall": format(float64(metric.Count()), metric.RateMean()),
|
"Count": format(float64(metric.Count()), metric.RateMean()),
|
||||||
"Perc01": round(metric.Percentile(1), 2),
|
"Maximum": time.Duration(metric.Max()).String(),
|
||||||
"Perc05": round(metric.Percentile(5), 2),
|
"Minimum": time.Duration(metric.Min()).String(),
|
||||||
"Perc25": round(metric.Percentile(25), 2),
|
"Percentile": map[string]interface{}{
|
||||||
"Perc90": round(metric.Percentile(90), 2),
|
"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:
|
default:
|
||||||
|
@ -19,6 +19,7 @@ import (
|
|||||||
"github.com/ethereum/go-ethereum/params"
|
"github.com/ethereum/go-ethereum/params"
|
||||||
"github.com/ethereum/go-ethereum/pow"
|
"github.com/ethereum/go-ethereum/pow"
|
||||||
"github.com/ethereum/go-ethereum/rlp"
|
"github.com/ethereum/go-ethereum/rlp"
|
||||||
|
"github.com/rcrowley/go-metrics"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -27,6 +28,8 @@ var (
|
|||||||
|
|
||||||
blockHashPre = []byte("block-hash-")
|
blockHashPre = []byte("block-hash-")
|
||||||
blockNumPre = []byte("block-num-")
|
blockNumPre = []byte("block-num-")
|
||||||
|
|
||||||
|
blockInsertTimer = metrics.GetOrRegisterTimer("core/BlockInsertions", metrics.DefaultRegistry)
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -691,7 +694,7 @@ func (self *ChainManager) InsertChain(chain types.Blocks) (int, error) {
|
|||||||
self.futureBlocks.Delete(block.Hash())
|
self.futureBlocks.Delete(block.Hash())
|
||||||
|
|
||||||
stats.processed++
|
stats.processed++
|
||||||
|
blockInsertTimer.UpdateSince(bstart)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (stats.queued > 0 || stats.processed > 0 || stats.ignored > 0) && bool(glog.V(logger.Info)) {
|
if (stats.queued > 0 || stats.processed > 0 || stats.ignored > 0) && bool(glog.V(logger.Info)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user