eth: add base per-peer metrics

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
This commit is contained in:
Csaba Kiraly 2025-04-29 22:43:06 +02:00
parent 0296361785
commit d8dd9d4c20
No known key found for this signature in database
GPG key ID: 0FE274EE8C95166E
3 changed files with 21 additions and 18 deletions

View file

@ -448,6 +448,7 @@ func handleNewPooledTransactionHashes(backend Backend, msg Decoder, peer *Peer)
for _, hash := range ann.Hashes {
peer.markTransaction(hash)
}
peer.meters.annReceived.Mark(int64(len(ann.Hashes)))
return backend.Handle(peer, ann)
}
@ -524,6 +525,7 @@ func handlePooledTransactions(backend Backend, msg Decoder, peer *Peer) error {
}
requestTracker.Fulfil(peer.id, peer.version, PooledTransactionsMsg, txs.RequestId)
peer.meters.pooledTxReceived.Mark(int64(len(txs.PooledTransactionsResponse)))
return backend.Handle(peer, &txs.PooledTransactionsResponse)
}

View file

@ -140,6 +140,7 @@ func (p *Peer) SendTransactions(txs types.Transactions) error {
for _, tx := range txs {
p.knownTxs.Add(tx.Hash())
}
p.meters.txSent.Mark(int64(len(txs)))
return p2p.Send(p.rw, TransactionsMsg, txs)
}
@ -166,6 +167,7 @@ func (p *Peer) AsyncSendTransactions(hashes []common.Hash) {
func (p *Peer) sendPooledTransactionHashes(hashes []common.Hash, types []byte, sizes []uint32) error {
// Mark all the transactions as known, but ensure we don't overflow our limits
p.knownTxs.Add(hashes...)
p.meters.annSent.Mark(int64(len(hashes)))
return p2p.Send(p.rw, NewPooledTransactionHashesMsg, NewPooledTransactionHashesPacket{Types: types, Sizes: sizes, Hashes: hashes})
}
@ -188,6 +190,7 @@ func (p *Peer) ReplyPooledTransactionsRLP(id uint64, hashes []common.Hash, txs [
p.knownTxs.Add(hashes...)
// Not packed into PooledTransactionsResponse to avoid RLP decoding
p.meters.pooledTxSent.Mark(int64(len(txs)))
return p2p.Send(p.rw, PooledTransactionsMsg, &PooledTransactionsRLPPacket{
RequestId: id,
PooledTransactionsRLPResponse: txs,

View file

@ -22,13 +22,12 @@ type peerMeters struct {
base string
reg metrics.Registry
txReceived *metrics.Meter
txSent *metrics.Meter
txReplyInMeter *metrics.Meter
txReplyKnownMeter *metrics.Meter
txReplyUnderpricedMeter *metrics.Meter
txReplyOtherRejectMeter *metrics.Meter
txReceived *metrics.Meter
txSent *metrics.Meter
pooledTxSent *metrics.Meter
pooledTxReceived *metrics.Meter
annReceived *metrics.Meter
annSent *metrics.Meter
}
// newPeerMeters registers and returns peer-level meters.
@ -40,21 +39,20 @@ func newPeerMeters(base string, r metrics.Registry) *peerMeters {
base: base,
reg: r,
txReceived: metrics.NewRegisteredMeter(base+"/txReceived", r),
txSent: metrics.NewRegisteredMeter(base+"/txSent", r),
txReplyInMeter: metrics.NewRegisteredMeter(base+"/eth/fetcher/transaction/replies/in", r),
txReplyKnownMeter: metrics.NewRegisteredMeter(base+"/eth/fetcher/transaction/replies/known", r),
txReplyUnderpricedMeter: metrics.NewRegisteredMeter(base+"/eth/fetcher/transaction/replies/underpriced", r),
txReplyOtherRejectMeter: metrics.NewRegisteredMeter(base+"/eth/fetcher/transaction/replies/otherreject", r),
txReceived: metrics.NewRegisteredMeter(base+"/txReceived", r),
txSent: metrics.NewRegisteredMeter(base+"/txSent", r),
pooledTxSent: metrics.NewRegisteredMeter(base+"/pooledTxSent", r),
pooledTxReceived: metrics.NewRegisteredMeter(base+"/pooledTxReceived", r),
annReceived: metrics.NewRegisteredMeter(base+"/annReceived", r),
annSent: metrics.NewRegisteredMeter(base+"/annSent", r),
}
}
func (m *peerMeters) Close() {
m.reg.Unregister(m.base + "/txReceived")
m.reg.Unregister(m.base + "/txSent")
m.reg.Unregister(m.base + "/eth/fetcher/transaction/replies/in")
m.reg.Unregister(m.base + "/eth/fetcher/transaction/replies/known")
m.reg.Unregister(m.base + "/eth/fetcher/transaction/replies/underpriced")
m.reg.Unregister(m.base + "/eth/fetcher/transaction/replies/otherreject")
m.reg.Unregister(m.base + "/pooledTxSent")
m.reg.Unregister(m.base + "/pooledTxReceived")
m.reg.Unregister(m.base + "/annReceived")
m.reg.Unregister(m.base + "/annSent")
}