miner: log commit and finalize time for new block (#1904)

This commit is contained in:
Daniel Liu 2026-01-04 19:51:49 +08:00 committed by GitHub
parent be5cfd9756
commit ca9e69c924
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -42,6 +42,7 @@ import (
"github.com/XinFinOrg/XDPoSChain/ethdb"
"github.com/XinFinOrg/XDPoSChain/event"
"github.com/XinFinOrg/XDPoSChain/log"
"github.com/XinFinOrg/XDPoSChain/metrics"
"github.com/XinFinOrg/XDPoSChain/params"
"github.com/XinFinOrg/XDPoSChain/trie"
mapset "github.com/deckarep/golang-set/v2"
@ -62,6 +63,15 @@ const (
txMatchGasLimit = 40000000
)
var (
blockNumberGauge = metrics.NewRegisteredGauge("miner/number", nil)
normalTxsMeter = metrics.NewRegisteredGauge("miner/txs/normal", nil)
specialTxsMeter = metrics.NewRegisteredGauge("miner/txs/special", nil)
blockCommitTimer = metrics.NewRegisteredTimer("miner/time/commit", nil)
blockFinalizeTimer = metrics.NewRegisteredTimer("miner/time/finalize", nil)
blockTotalTimer = metrics.NewRegisteredTimer("miner/time/total", nil)
)
// Agent can register themself with the worker
type Agent interface {
Work() chan<- *Work
@ -910,6 +920,8 @@ func (w *worker) commitNewWork() {
}
}
work.commitTransactions(w.mux, feeCapacity, txs, specialTxs, w.chain, w.coinbase, &w.pendingLogsFeed)
commitEnd := time.Now()
// compute uncles for the new block.
var (
uncles []*types.Header
@ -922,7 +934,25 @@ func (w *worker) commitNewWork() {
}
if atomic.LoadInt32(&w.mining) == 1 {
log.Info("Committing new block", "number", work.Block.Number(), "txs", work.tcount, "special-txs", len(specialTxs), "uncles", len(uncles), "elapsed", common.PrettyDuration(time.Since(tstart)))
finalizeEnd := time.Now()
commitElapsed := commitEnd.Sub(tstart)
finalizeElapsed := finalizeEnd.Sub(commitEnd)
totalElapsed := finalizeEnd.Sub(tstart)
log.Info("Committing new block",
"number", work.Block.Number(),
"txs", work.tcount,
"special_txs", len(specialTxs),
"uncles", len(uncles),
"commit_time", common.PrettyDuration(commitElapsed),
"finalize_time", common.PrettyDuration(finalizeElapsed),
"total_time", common.PrettyDuration(totalElapsed),
)
blockNumberGauge.Update(work.Block.Number().Int64())
normalTxsMeter.Update(int64(work.tcount))
specialTxsMeter.Update(int64(len(specialTxs)))
blockCommitTimer.Update(commitElapsed)
blockFinalizeTimer.Update(finalizeElapsed)
blockTotalTimer.Update(totalElapsed)
w.unconfirmed.Shift(work.Block.NumberU64() - 1)
w.lastParentBlockCommit = parent.Hash().Hex()
}