more metrics (#1004)
This commit is contained in:
parent
c498103b2f
commit
a7a50824a1
|
@ -51,6 +51,9 @@ declareCounter beacon_attestations_received,
|
||||||
declareCounter beacon_blocks_received,
|
declareCounter beacon_blocks_received,
|
||||||
"Number of beacon chain blocks received by this peer"
|
"Number of beacon chain blocks received by this peer"
|
||||||
|
|
||||||
|
declareHistogram beacon_attestation_received_seconds_from_slot_start,
|
||||||
|
"Interval between slot start and attestation receival", buckets = [2.0, 4.0, 6.0, 8.0, 10.0, 12.0, 14.0, Inf]
|
||||||
|
|
||||||
logScope: topics = "beacnde"
|
logScope: topics = "beacnde"
|
||||||
|
|
||||||
proc onBeaconBlock*(node: BeaconNode, signedBlock: SignedBeaconBlock) {.gcsafe.}
|
proc onBeaconBlock*(node: BeaconNode, signedBlock: SignedBeaconBlock) {.gcsafe.}
|
||||||
|
@ -658,6 +661,8 @@ proc run*(node: BeaconNode) =
|
||||||
# Avoid double-counting attestation-topic attestations on shared codepath
|
# Avoid double-counting attestation-topic attestations on shared codepath
|
||||||
# when they're reflected through beacon blocks
|
# when they're reflected through beacon blocks
|
||||||
beacon_attestations_received.inc()
|
beacon_attestations_received.inc()
|
||||||
|
beacon_attestation_received_seconds_from_slot_start.observe(node.beaconClock.now.int64 - (attestation.data.slot.int64 * SECONDS_PER_SLOT.int64))
|
||||||
|
|
||||||
node.onAttestation(attestation)
|
node.onAttestation(attestation)
|
||||||
|
|
||||||
var attestationSubscriptions: seq[Future[void]] = @[]
|
var attestationSubscriptions: seq[Future[void]] = @[]
|
||||||
|
|
|
@ -14,6 +14,8 @@ import
|
||||||
spec/[crypto, datatypes, digest, helpers, validator]
|
spec/[crypto, datatypes, digest, helpers, validator]
|
||||||
|
|
||||||
declareCounter beacon_reorgs_total, "Total occurrences of reorganizations of the chain" # On fork choice
|
declareCounter beacon_reorgs_total, "Total occurrences of reorganizations of the chain" # On fork choice
|
||||||
|
declareCounter beacon_state_data_cache_hits, "pool.cachedStates hits"
|
||||||
|
declareCounter beacon_state_data_cache_misses, "pool.cachedStates misses"
|
||||||
|
|
||||||
logScope: topics = "blkpool"
|
logScope: topics = "blkpool"
|
||||||
|
|
||||||
|
@ -729,6 +731,7 @@ proc rewindState(pool: BlockPool, state: var StateData, bs: BlockSlot):
|
||||||
when false:
|
when false:
|
||||||
doAssert state.blck == ancestor.refs
|
doAssert state.blck == ancestor.refs
|
||||||
|
|
||||||
|
beacon_state_data_cache_hits.inc()
|
||||||
trace "Replaying state transitions via in-memory cache",
|
trace "Replaying state transitions via in-memory cache",
|
||||||
stateSlot = shortLog(state.data.data.slot),
|
stateSlot = shortLog(state.data.data.slot),
|
||||||
ancestorStateRoot = shortLog(ancestor.data.message.state_root),
|
ancestorStateRoot = shortLog(ancestor.data.message.state_root),
|
||||||
|
@ -740,6 +743,7 @@ proc rewindState(pool: BlockPool, state: var StateData, bs: BlockSlot):
|
||||||
|
|
||||||
return ancestors
|
return ancestors
|
||||||
|
|
||||||
|
beacon_state_data_cache_misses.inc()
|
||||||
if (let tmp = pool.db.getStateRoot(parBs.blck.root, parBs.slot); tmp.isSome()):
|
if (let tmp = pool.db.getStateRoot(parBs.blck.root, parBs.slot); tmp.isSome()):
|
||||||
if pool.db.containsState(tmp.get):
|
if pool.db.containsState(tmp.get):
|
||||||
stateRoot = tmp
|
stateRoot = tmp
|
||||||
|
@ -795,12 +799,14 @@ proc getStateDataCached(pool: BlockPool, state: var StateData, bs: BlockSlot): b
|
||||||
for poolStateCache in pool.cachedStates:
|
for poolStateCache in pool.cachedStates:
|
||||||
try:
|
try:
|
||||||
state = poolStateCache[(a: bs.blck.root, b: bs.slot)]
|
state = poolStateCache[(a: bs.blck.root, b: bs.slot)]
|
||||||
|
beacon_state_data_cache_hits.inc()
|
||||||
return true
|
return true
|
||||||
except KeyError:
|
except KeyError:
|
||||||
discard
|
discard
|
||||||
|
|
||||||
# In-memory caches didn't hit. Try main blockpool database. This is slower
|
# In-memory caches didn't hit. Try main blockpool database. This is slower
|
||||||
# than the caches due to SSZ (de)serializing and disk I/O, so prefer them.
|
# than the caches due to SSZ (de)serializing and disk I/O, so prefer them.
|
||||||
|
beacon_state_data_cache_misses.inc()
|
||||||
if (let tmp = pool.db.getStateRoot(bs.blck.root, bs.slot); tmp.isSome()):
|
if (let tmp = pool.db.getStateRoot(bs.blck.root, bs.slot); tmp.isSome()):
|
||||||
return pool.getState(pool.db, tmp.get(), bs.blck, state)
|
return pool.getState(pool.db, tmp.get(), bs.blck, state)
|
||||||
|
|
||||||
|
|
|
@ -61,6 +61,7 @@ declareGauge epoch_transition_times_rewards_and_penalties, "Epoch transition rew
|
||||||
declareGauge epoch_transition_registry_updates, "Epoch transition registry updates time"
|
declareGauge epoch_transition_registry_updates, "Epoch transition registry updates time"
|
||||||
declareGauge epoch_transition_slashings, "Epoch transition slashings time"
|
declareGauge epoch_transition_slashings, "Epoch transition slashings time"
|
||||||
declareGauge epoch_transition_final_updates, "Epoch transition final updates time"
|
declareGauge epoch_transition_final_updates, "Epoch transition final updates time"
|
||||||
|
declareGauge beacon_current_epoch, "Current epoch"
|
||||||
|
|
||||||
# Spec
|
# Spec
|
||||||
# --------------------------------------------------------
|
# --------------------------------------------------------
|
||||||
|
@ -424,8 +425,9 @@ func process_final_updates*(state: var BeaconState) {.nbench.}=
|
||||||
# https://github.com/ethereum/eth2.0-specs/blob/v0.11.1/specs/phase0/beacon-chain.md#epoch-processing
|
# https://github.com/ethereum/eth2.0-specs/blob/v0.11.1/specs/phase0/beacon-chain.md#epoch-processing
|
||||||
proc process_epoch*(state: var BeaconState, updateFlags: UpdateFlags)
|
proc process_epoch*(state: var BeaconState, updateFlags: UpdateFlags)
|
||||||
{.nbench.} =
|
{.nbench.} =
|
||||||
|
let currentEpoch = get_current_epoch(state)
|
||||||
trace "process_epoch",
|
trace "process_epoch",
|
||||||
current_epoch = get_current_epoch(state)
|
current_epoch = currentEpoch
|
||||||
|
|
||||||
var per_epoch_cache = get_empty_per_epoch_cache()
|
var per_epoch_cache = get_empty_per_epoch_cache()
|
||||||
|
|
||||||
|
@ -433,11 +435,11 @@ proc process_epoch*(state: var BeaconState, updateFlags: UpdateFlags)
|
||||||
process_justification_and_finalization(state, per_epoch_cache, updateFlags)
|
process_justification_and_finalization(state, per_epoch_cache, updateFlags)
|
||||||
|
|
||||||
# state.slot hasn't been incremented yet.
|
# state.slot hasn't been incremented yet.
|
||||||
if verifyFinalization in updateFlags and get_current_epoch(state) >= 3:
|
if verifyFinalization in updateFlags and currentEpoch >= 3:
|
||||||
# Rule 2/3/4 finalization results in the most pessimal case. The other
|
# Rule 2/3/4 finalization results in the most pessimal case. The other
|
||||||
# three finalization rules finalize more quickly as long as the any of
|
# three finalization rules finalize more quickly as long as the any of
|
||||||
# the finalization rules triggered.
|
# the finalization rules triggered.
|
||||||
doAssert state.finalized_checkpoint.epoch + 3 >= get_current_epoch(state)
|
doAssert state.finalized_checkpoint.epoch + 3 >= currentEpoch
|
||||||
|
|
||||||
# https://github.com/ethereum/eth2.0-specs/blob/v0.11.1/specs/phase0/beacon-chain.md#rewards-and-penalties-1
|
# https://github.com/ethereum/eth2.0-specs/blob/v0.11.1/specs/phase0/beacon-chain.md#rewards-and-penalties-1
|
||||||
process_rewards_and_penalties(state, per_epoch_cache)
|
process_rewards_and_penalties(state, per_epoch_cache)
|
||||||
|
@ -457,6 +459,7 @@ proc process_epoch*(state: var BeaconState, updateFlags: UpdateFlags)
|
||||||
process_final_updates(state)
|
process_final_updates(state)
|
||||||
|
|
||||||
# Once per epoch metrics
|
# Once per epoch metrics
|
||||||
|
beacon_current_epoch.set(currentEpoch.int64)
|
||||||
beacon_finalized_epoch.set(state.finalized_checkpoint.epoch.int64)
|
beacon_finalized_epoch.set(state.finalized_checkpoint.epoch.int64)
|
||||||
beacon_finalized_root.set(state.finalized_checkpoint.root.toGaugeValue)
|
beacon_finalized_root.set(state.finalized_checkpoint.root.toGaugeValue)
|
||||||
beacon_current_justified_epoch.set(
|
beacon_current_justified_epoch.set(
|
||||||
|
|
|
@ -128,7 +128,6 @@ fi
|
||||||
NETWORK_NIM_FLAGS=$(scripts/load-testnet-nim-flags.sh ${NETWORK})
|
NETWORK_NIM_FLAGS=$(scripts/load-testnet-nim-flags.sh ${NETWORK})
|
||||||
$MAKE LOG_LEVEL="${LOG_LEVEL}" NIMFLAGS="-d:insecure -d:testnet_servers_image ${NETWORK_NIM_FLAGS}" beacon_node
|
$MAKE LOG_LEVEL="${LOG_LEVEL}" NIMFLAGS="-d:insecure -d:testnet_servers_image ${NETWORK_NIM_FLAGS}" beacon_node
|
||||||
|
|
||||||
rm -rf "${DEPOSITS_DIR}"
|
|
||||||
./build/beacon_node makeDeposits \
|
./build/beacon_node makeDeposits \
|
||||||
--quickstart-deposits=${QUICKSTART_VALIDATORS} \
|
--quickstart-deposits=${QUICKSTART_VALIDATORS} \
|
||||||
--random-deposits=${RANDOM_VALIDATORS} \
|
--random-deposits=${RANDOM_VALIDATORS} \
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1 +1 @@
|
||||||
Subproject commit b217f1d343dce8c642b24aa8fbb7887dcea0fd4a
|
Subproject commit f91deb74228ecb14fb82575e4d0f387ad9732b8a
|
Loading…
Reference in New Issue