mirror of
https://github.com/status-im/nimbus-eth1.git
synced 2025-01-13 05:44:40 +00:00
103656dbb5
details: For documentation, see comments in the file tx_pool.nim. For prettified manual pages run 'make docs' in the nimbus directory and point your web browser to the newly created 'docs' directory.
143 lines
5.3 KiB
Nim
143 lines
5.3 KiB
Nim
# Nimbus
|
|
# Copyright (c) 2018 Status Research & Development GmbH
|
|
# Licensed under either of
|
|
# * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
|
|
# http://www.apache.org/licenses/LICENSE-2.0)
|
|
# * MIT license ([LICENSE-MIT](LICENSE-MIT) or
|
|
# http://opensource.org/licenses/MIT)
|
|
# at your option. This file may not be copied, modified, or distributed except
|
|
# according to those terms.
|
|
|
|
## Transaction Pool Meters
|
|
## =======================
|
|
##
|
|
|
|
import
|
|
metrics
|
|
|
|
{.push raises: [Defect].}
|
|
|
|
const
|
|
# Provide some fall-back counters available for unit tests
|
|
FallBackMetrics4Debugging = not defined(metrics)
|
|
|
|
when FallBackMetrics4Debugging:
|
|
{.warning: "Debugging fall back mode for some gauges".}
|
|
type
|
|
DummyCounter* = ref object
|
|
value: float64
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# Private settings
|
|
# ------------------------------------------------------------------------------
|
|
|
|
# Metrics for the pending pool
|
|
|
|
# core/tx_pool.go(97): pendingDiscardMeter = metrics.NewRegisteredMeter(..
|
|
declareGauge pendingDiscard, "n/a"
|
|
declareGauge pendingReplace, "n/a"
|
|
declareGauge pendingRateLimit, "n/a" # Dropped due to rate limiting
|
|
declareGauge pendingNofunds, "n/a" # Dropped due to out-of-funds
|
|
|
|
|
|
# Metrics for the queued pool
|
|
|
|
# core/tx_pool.go(103): queuedDiscardMeter = metrics.NewRegisteredMeter(..
|
|
declareGauge queuedDiscard, "n/a"
|
|
declareGauge queuedReplace, "n/a"
|
|
declareGauge queuedRateLimit, "n/a" # Dropped due to rate limiting
|
|
declareGauge queuedNofunds, "n/a" # Dropped due to out-of-funds
|
|
|
|
declareGauge evictionGauge,
|
|
"A transaction has been on the system for too long so it was removed"
|
|
|
|
declareGauge impliedEvictionGauge,
|
|
"Implied disposal for greater nonces (same sender) when base tx was removed"
|
|
|
|
# General tx metrics
|
|
|
|
# core/tx_pool.go(110): knownTxMeter = metrics.NewRegisteredMeter(..
|
|
declareGauge knownTransactions, "n/a"
|
|
declareGauge validTransactions, "n/a"
|
|
declareGauge invalidTransactions, "n/a"
|
|
declareGauge underpricedTransactions, "n/a"
|
|
declareGauge overflowedTransactions, "n/a"
|
|
|
|
# core/tx_pool.go(117): throttleTxMeter = metrics.NewRegisteredMeter(..
|
|
declareGauge throttleTransactions,
|
|
"Rejected transactions due to too-many-changes between txpool reorgs"
|
|
|
|
# core/tx_pool.go(119): reorgDurationTimer = metrics.NewRegisteredTimer(..
|
|
declareGauge reorgDurationTimer, "Measures how long time a txpool reorg takes"
|
|
|
|
# core/tx_pool.go(122): dropBetweenReorgHistogram = metrics..
|
|
declareGauge dropBetweenReorgHistogram,
|
|
"Number of expected drops between two reorg runs. It is expected that "&
|
|
"this number is pretty low, since txpool reorgs happen very frequently"
|
|
|
|
# core/tx_pool.go(124): pendingGauge = metrics.NewRegisteredGauge(..
|
|
declareGauge pendingGauge, "n/a"
|
|
declareGauge queuedGauge, "n/a"
|
|
declareGauge localGauge, "n/a"
|
|
declareGauge slotsGauge, "n/a"
|
|
|
|
# core/tx_pool.go(129): reheapTimer = metrics.NewRegisteredTimer(..
|
|
declareGauge reheapTimer, "n/a"
|
|
|
|
# ----------------------
|
|
|
|
declareGauge unspecifiedError,
|
|
"Some error occured but was not specified in any way. This counter should "&
|
|
"stay zero."
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# Exports
|
|
# ------------------------------------------------------------------------------
|
|
|
|
when FallBackMetrics4Debugging:
|
|
let
|
|
evictionMeter* = DummyCounter()
|
|
impliedEvictionMeter* = DummyCounter()
|
|
|
|
proc inc(w: DummyCounter; val: int64|float64 = 1,) =
|
|
w.value = w.value + val.float64
|
|
else:
|
|
let
|
|
evictionMeter* = evictionGauge
|
|
impliedEvictionMeter* = impliedEvictionGauge
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# Global functions -- deprecated
|
|
# ------------------------------------------------------------------------------
|
|
|
|
proc pendingDiscardMeter*(n = 1i64) = pendingDiscard.inc(n)
|
|
proc pendingReplaceMeter*(n = 1i64) = pendingReplace.inc(n)
|
|
proc pendingRateLimitMeter*(n = 1i64) = pendingRateLimit.inc(n)
|
|
proc pendingNofundsMeter*(n = 1i64) = pendingNofunds.inc(n)
|
|
|
|
proc queuedDiscardMeter*(n = 1i64) = queuedDiscard.inc(n)
|
|
proc queuedReplaceMeter*(n = 1i64) = queuedReplace.inc(n)
|
|
proc queuedRateLimitMeter*(n = 1i64) = queuedRateLimit.inc(n)
|
|
proc queuedNofundsMeter*(n = 1i64) = queuedNofunds.inc(n)
|
|
|
|
proc knownTxMeter*(n = 1i64) = knownTransactions.inc(n)
|
|
proc invalidTxMeter*(n = 1i64) = invalidTransactions.inc(n)
|
|
proc validTxMeter*(n = 1i64) = validTransactions.inc(n)
|
|
proc underpricedTxMeter*(n = 1i64) = underpricedTransactions.inc(n)
|
|
proc overflowedTxMeter*(n = 1i64) = overflowedTransactions.inc(n)
|
|
proc throttleTxMeter*(n = 1i64) = throttleTransactions.inc(n)
|
|
|
|
proc unspecifiedErrorMeter*(n = 1i64) = unspecifiedError.inc(n)
|
|
|
|
proc reorgDurationTimerMeter*(n = 1i64) = reorgDurationTimer.inc(n)
|
|
proc dropBetweenReorgHistogramMeter*(n = 1i64) =
|
|
dropBetweenReorgHistogram.inc(n)
|
|
proc pendingGaugeMeter*(n = 1i64) = pendingGauge.inc(n)
|
|
proc queuedGaugeMeter*(n = 1i64) = queuedGauge.inc(n)
|
|
proc localGaugeMeter*(n = 1i64) = localGauge.inc(n)
|
|
proc slotsGaugeMeter*(n = 1i64) = slotsGauge.inc(n)
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# End
|
|
# ------------------------------------------------------------------------------
|