From d8dd9d4c2073c01c51d31b4355925094d778ba0c Mon Sep 17 00:00:00 2001 From: Csaba Kiraly Date: Tue, 29 Apr 2025 22:43:06 +0200 Subject: [PATCH] eth: add base per-peer metrics Signed-off-by: Csaba Kiraly --- eth/protocols/eth/handlers.go | 2 ++ eth/protocols/eth/peer.go | 3 +++ eth/protocols/eth/peer_metrics.go | 34 +++++++++++++++---------------- 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/eth/protocols/eth/handlers.go b/eth/protocols/eth/handlers.go index 012b75ec3c..27d0e91a96 100644 --- a/eth/protocols/eth/handlers.go +++ b/eth/protocols/eth/handlers.go @@ -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) } diff --git a/eth/protocols/eth/peer.go b/eth/protocols/eth/peer.go index 586551b452..da5d4f8eb8 100644 --- a/eth/protocols/eth/peer.go +++ b/eth/protocols/eth/peer.go @@ -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, diff --git a/eth/protocols/eth/peer_metrics.go b/eth/protocols/eth/peer_metrics.go index ce6b4e2373..9e7d91440b 100644 --- a/eth/protocols/eth/peer_metrics.go +++ b/eth/protocols/eth/peer_metrics.go @@ -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") }