mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
les: detailed relative cost metrics
This commit is contained in:
parent
52a967cfab
commit
5510b761d5
2 changed files with 36 additions and 7 deletions
|
|
@ -226,6 +226,7 @@ type reqInfo struct {
|
||||||
// servingTime is the CPU time corresponding to the actual processing of
|
// servingTime is the CPU time corresponding to the actual processing of
|
||||||
// the request.
|
// the request.
|
||||||
servingTime float64
|
servingTime float64
|
||||||
|
msgCode uint64
|
||||||
}
|
}
|
||||||
|
|
||||||
// gfLoop starts an event loop which updates the global cost factor which is
|
// gfLoop starts an event loop which updates the global cost factor which is
|
||||||
|
|
@ -273,7 +274,27 @@ func (ct *costTracker) gfLoop() {
|
||||||
requestServedTimer.Update(time.Duration(r.servingTime))
|
requestServedTimer.Update(time.Duration(r.servingTime))
|
||||||
requestEstimatedMeter.Mark(int64(r.avgTimeCost / factor))
|
requestEstimatedMeter.Mark(int64(r.avgTimeCost / factor))
|
||||||
requestEstimatedTimer.Update(time.Duration(r.avgTimeCost / factor))
|
requestEstimatedTimer.Update(time.Duration(r.avgTimeCost / factor))
|
||||||
relativeCostHistogram.Update(int64(r.avgTimeCost / factor / r.servingTime))
|
|
||||||
|
relCost := int64(factor * r.servingTime * 10000 / r.avgTimeCost)
|
||||||
|
relativeCostHistogram.Update(relCost)
|
||||||
|
switch r.msgCode {
|
||||||
|
case GetBlockHeadersMsg:
|
||||||
|
relativeCostHeaderHistogram.Update(relCost)
|
||||||
|
case GetBlockBodiesMsg:
|
||||||
|
relativeCostBodyHistogram.Update(relCost)
|
||||||
|
case GetReceiptsMsg:
|
||||||
|
relativeCostReceiptHistogram.Update(relCost)
|
||||||
|
case GetCodeMsg:
|
||||||
|
relativeCostCodeHistogram.Update(relCost)
|
||||||
|
case GetProofsV2Msg:
|
||||||
|
relativeCostProofHistogram.Update(relCost)
|
||||||
|
case GetHelperTrieProofsMsg:
|
||||||
|
relativeCostHelperProofHistogram.Update(relCost)
|
||||||
|
case SendTxV2Msg:
|
||||||
|
relativeCostSendTxHistogram.Update(relCost)
|
||||||
|
case GetTxStatusMsg:
|
||||||
|
relativeCostTxStatusHistogram.Update(relCost)
|
||||||
|
}
|
||||||
|
|
||||||
now := mclock.Now()
|
now := mclock.Now()
|
||||||
dt := float64(now - expUpdate)
|
dt := float64(now - expUpdate)
|
||||||
|
|
@ -375,7 +396,7 @@ func (ct *costTracker) updateStats(code, amount, servingTime, realCost uint64) {
|
||||||
avg := reqAvgTimeCost[code]
|
avg := reqAvgTimeCost[code]
|
||||||
avgTimeCost := avg.baseCost + amount*avg.reqCost
|
avgTimeCost := avg.baseCost + amount*avg.reqCost
|
||||||
select {
|
select {
|
||||||
case ct.reqInfoCh <- reqInfo{float64(avgTimeCost), float64(servingTime)}:
|
case ct.reqInfoCh <- reqInfo{float64(avgTimeCost), float64(servingTime), code}:
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
if makeCostStats {
|
if makeCostStats {
|
||||||
|
|
|
||||||
|
|
@ -69,11 +69,19 @@ var (
|
||||||
totalConnectedGauge = metrics.NewRegisteredGauge("les/server/totalConnected", nil)
|
totalConnectedGauge = metrics.NewRegisteredGauge("les/server/totalConnected", nil)
|
||||||
blockProcessingTimer = metrics.NewRegisteredTimer("les/server/blockProcessingTime", nil)
|
blockProcessingTimer = metrics.NewRegisteredTimer("les/server/blockProcessingTime", nil)
|
||||||
|
|
||||||
requestServedMeter = metrics.NewRegisteredMeter("les/server/req/avgServedTime", nil)
|
requestServedMeter = metrics.NewRegisteredMeter("les/server/req/avgServedTime", nil)
|
||||||
requestServedTimer = metrics.NewRegisteredTimer("les/server/req/servedTime", nil)
|
requestServedTimer = metrics.NewRegisteredTimer("les/server/req/servedTime", nil)
|
||||||
requestEstimatedMeter = metrics.NewRegisteredMeter("les/server/req/avgEstimatedTime", nil)
|
requestEstimatedMeter = metrics.NewRegisteredMeter("les/server/req/avgEstimatedTime", nil)
|
||||||
requestEstimatedTimer = metrics.NewRegisteredTimer("les/server/req/estimatedTime", nil)
|
requestEstimatedTimer = metrics.NewRegisteredTimer("les/server/req/estimatedTime", nil)
|
||||||
relativeCostHistogram = metrics.NewRegisteredHistogram("les/server/req/relative", nil, metrics.NewExpDecaySample(1028, 0.015))
|
relativeCostHistogram = metrics.NewRegisteredHistogram("les/server/req/relative", nil, metrics.NewExpDecaySample(1028, 0.015))
|
||||||
|
relativeCostHeaderHistogram = metrics.NewRegisteredHistogram("les/server/req/relative/header", nil, metrics.NewExpDecaySample(1028, 0.015))
|
||||||
|
relativeCostBodyHistogram = metrics.NewRegisteredHistogram("les/server/req/relative/body", nil, metrics.NewExpDecaySample(1028, 0.015))
|
||||||
|
relativeCostReceiptHistogram = metrics.NewRegisteredHistogram("les/server/req/relative/receipt", nil, metrics.NewExpDecaySample(1028, 0.015))
|
||||||
|
relativeCostCodeHistogram = metrics.NewRegisteredHistogram("les/server/req/relative/code", nil, metrics.NewExpDecaySample(1028, 0.015))
|
||||||
|
relativeCostProofHistogram = metrics.NewRegisteredHistogram("les/server/req/relative/proof", nil, metrics.NewExpDecaySample(1028, 0.015))
|
||||||
|
relativeCostHelperProofHistogram = metrics.NewRegisteredHistogram("les/server/req/relative/helperproof", nil, metrics.NewExpDecaySample(1028, 0.015))
|
||||||
|
relativeCostSendTxHistogram = metrics.NewRegisteredHistogram("les/server/req/relative/sendtx", nil, metrics.NewExpDecaySample(1028, 0.015))
|
||||||
|
relativeCostTxStatusHistogram = metrics.NewRegisteredHistogram("les/server/req/relative/txstatus", nil, metrics.NewExpDecaySample(1028, 0.015))
|
||||||
|
|
||||||
recentServedGauge = metrics.NewRegisteredGauge("les/server/recentRequestServed", nil)
|
recentServedGauge = metrics.NewRegisteredGauge("les/server/recentRequestServed", nil)
|
||||||
recentEstimatedGauge = metrics.NewRegisteredGauge("les/server/recentRequestEstimated", nil)
|
recentEstimatedGauge = metrics.NewRegisteredGauge("les/server/recentRequestEstimated", nil)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue