Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Add prometheus metrics for block authorship #10316

Merged
merged 7 commits into from
Nov 19, 2021
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 21 additions & 1 deletion client/basic-authorship/src/basic_authorship.rs
Original file line number Diff line number Diff line change
Expand Up @@ -346,10 +346,22 @@ where
block_size_limit: Option<usize>,
) -> Result<Proposal<Block, backend::TransactionFor<B, Block>, PR::Proof>, sp_blockchain::Error>
{
let propose_with_start = time::Instant::now();
let mut block_builder =
self.client.new_block_at(&self.parent_id, inherent_digests, PR::ENABLED)?;

for inherent in block_builder.create_inherents(inherent_data)? {
let create_inherents_start = time::Instant::now();
let inherents = block_builder.create_inherents(inherent_data)?;
let create_inherents_end = time::Instant::now();

self.metrics.report(|metrics| {
metrics
.create_inherents_time
.observe(create_inherents_start
.saturating_duration_since(create_inherents_end).as_secs_f64());
emostov marked this conversation as resolved.
Show resolved Hide resolved
});

for inherent in inherents {
match block_builder.push(inherent) {
Err(ApplyExtrinsicFailed(Validity(e))) if e.exhausted_resources() => {
warn!("⚠️ Dropping non-mandatory inherent from overweight block.")
Expand Down Expand Up @@ -529,6 +541,14 @@ where

let proof =
PR::into_proof(proof).map_err(|e| sp_blockchain::Error::Application(Box::new(e)))?;

let propose_with_end = time::Instant::now();
self.metrics.report(|metrics| {
metrics
.create_block_proposal_time
.observe(propose_with_start.saturating_duration_since(propose_with_end).as_secs_f64());
emostov marked this conversation as resolved.
Show resolved Hide resolved
});

Ok(Proposal { block, proof, storage_changes })
}
}
Expand Down
16 changes: 16 additions & 0 deletions client/proposer-metrics/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ impl MetricsLink {
pub struct Metrics {
pub block_constructed: Histogram,
pub number_of_transactions: Gauge<U64>,
pub create_inherents_time: Histogram,
pub create_block_proposal_time: Histogram,
}

impl Metrics {
Expand All @@ -66,6 +68,20 @@ impl Metrics {
)?,
registry,
)?,
create_inherents_time: register(
Histogram::with_opts(HistogramOpts::new(
"proposer_create_inherents_time",
"Histogram of time taken to execute create inherents",
))?,
registry,
)?,
create_block_proposal_time: register(
Histogram::with_opts(HistogramOpts::new(
"proposer_block_proposal_time",
"Histogram of time taken to construct a block and prepare it for proposal",
))?,
registry,
)?,
})
}
}