Metrics for sync aggregate fullness (#2439)
## Issue Addressed NA ## Proposed Changes Adds a metric to see how many set bits are in the sync aggregate for each beacon block being imported. ## Additional Info NA
This commit is contained in:
parent
27aec1962c
commit
9656ffee7c
@ -1976,10 +1976,22 @@ impl<T: BeaconChainTypes> BeaconChain<T> {
|
|||||||
|
|
||||||
drop(validator_monitor);
|
drop(validator_monitor);
|
||||||
|
|
||||||
metrics::observe(
|
// Only present some metrics for blocks from the previous epoch or later.
|
||||||
&metrics::OPERATIONS_PER_BLOCK_ATTESTATION,
|
//
|
||||||
block.body().attestations().len() as f64,
|
// This helps avoid noise in the metrics during sync.
|
||||||
);
|
if block.slot().epoch(T::EthSpec::slots_per_epoch()) + 1 >= self.epoch()? {
|
||||||
|
metrics::observe(
|
||||||
|
&metrics::OPERATIONS_PER_BLOCK_ATTESTATION,
|
||||||
|
block.body().attestations().len() as f64,
|
||||||
|
);
|
||||||
|
|
||||||
|
if let Some(sync_aggregate) = block.body().sync_aggregate() {
|
||||||
|
metrics::set_gauge(
|
||||||
|
&metrics::BLOCK_SYNC_AGGREGATE_SET_BITS,
|
||||||
|
sync_aggregate.num_set_bits() as i64,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let db_write_timer = metrics::start_timer(&metrics::BLOCK_PROCESSING_DB_WRITE);
|
let db_write_timer = metrics::start_timer(&metrics::BLOCK_PROCESSING_DB_WRITE);
|
||||||
|
|
||||||
|
@ -54,6 +54,10 @@ lazy_static! {
|
|||||||
"beacon_block_processing_attestation_observation_seconds",
|
"beacon_block_processing_attestation_observation_seconds",
|
||||||
"Time spent hashing and remembering all the attestations in the block"
|
"Time spent hashing and remembering all the attestations in the block"
|
||||||
);
|
);
|
||||||
|
pub static ref BLOCK_SYNC_AGGREGATE_SET_BITS: Result<IntGauge> = try_create_int_gauge(
|
||||||
|
"block_sync_aggregate_set_bits",
|
||||||
|
"The number of true bits in the last sync aggregate in a block"
|
||||||
|
);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Block Production
|
* Block Production
|
||||||
|
@ -45,6 +45,16 @@ pub struct BeaconBlockBody<T: EthSpec> {
|
|||||||
pub sync_aggregate: SyncAggregate<T>,
|
pub sync_aggregate: SyncAggregate<T>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<'a, T: EthSpec> BeaconBlockBodyRef<'a, T> {
|
||||||
|
/// Access the sync aggregate from the block's body, if one exists.
|
||||||
|
pub fn sync_aggregate(self) -> Option<&'a SyncAggregate<T>> {
|
||||||
|
match self {
|
||||||
|
BeaconBlockBodyRef::Base(_) => None,
|
||||||
|
BeaconBlockBodyRef::Altair(inner) => Some(&inner.sync_aggregate),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
mod base {
|
mod base {
|
||||||
|
@ -33,4 +33,9 @@ impl<T: EthSpec> SyncAggregate<T> {
|
|||||||
sync_committee_signature: AggregateSignature::empty(),
|
sync_committee_signature: AggregateSignature::empty(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns how many bits are `true` in `self.sync_committee_bits`.
|
||||||
|
pub fn num_set_bits(&self) -> usize {
|
||||||
|
self.sync_committee_bits.num_set_bits()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user