Skip to content

Commit

Permalink
Add prometheus metrics for block authorship (paritytech#10316)
Browse files Browse the repository at this point in the history
* Add prom metric  to basic authorship

* Add proposer_block_proposal_time

* +nightly-2021-10-29 fmt

* Use saturating_duration_since, not elasped

* Update client/basic-authorship/src/basic_authorship.rs

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* Update client/basic-authorship/src/basic_authorship.rs

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* +nightly-2021-10-29 fmt

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
  • Loading branch information
2 people authored and grishasobol committed Mar 28, 2022
1 parent f9b288e commit bb165fd
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 1 deletion.
23 changes: 22 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,23 @@ 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_end
.saturating_duration_since(create_inherents_start)
.as_secs_f64(),
);
});

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 +542,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_end.saturating_duration_since(propose_with_start).as_secs_f64(),
);
});

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,
)?,
})
}
}

0 comments on commit bb165fd

Please sign in to comment.