Skip to content

Commit

Permalink
Add benchmarking support for digest items (paritytech#12159)
Browse files Browse the repository at this point in the history
* Add benchmarking support for digest items

* fmt
  • Loading branch information
notlesh authored and ark0f committed Feb 27, 2023
1 parent 000d4c8 commit 8cb6406
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 11 deletions.
10 changes: 8 additions & 2 deletions bin/node-template/node/src/command.rs
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,13 @@ pub fn run() -> sc_cli::Result<()> {
let PartialComponents { client, .. } = service::new_partial(&config)?;
let ext_builder = RemarkBuilder::new(client.clone());

cmd.run(config, client, inherent_benchmark_data()?, &ext_builder)
cmd.run(
config,
client,
inherent_benchmark_data()?,
Vec::new(),
&ext_builder,
)
},
BenchmarkCmd::Extrinsic(cmd) => {
let PartialComponents { client, .. } = service::new_partial(&config)?;
Expand All @@ -153,7 +159,7 @@ pub fn run() -> sc_cli::Result<()> {
)),
]);

cmd.run(client, inherent_benchmark_data()?, &ext_factory)
cmd.run(client, inherent_benchmark_data()?, Vec::new(), &ext_factory)
},
BenchmarkCmd::Machine(cmd) =>
cmd.run(&config, SUBSTRATE_REFERENCE_HARDWARE.clone()),
Expand Down
15 changes: 13 additions & 2 deletions bin/node/cli/src/command.rs
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,13 @@ pub fn run() -> Result<()> {
let partial = new_partial(&config)?;
let ext_builder = RemarkBuilder::new(partial.client.clone());

cmd.run(config, partial.client, inherent_benchmark_data()?, &ext_builder)
cmd.run(
config,
partial.client,
inherent_benchmark_data()?,
Vec::new(),
&ext_builder,
)
},
BenchmarkCmd::Extrinsic(cmd) => {
// ensure that we keep the task manager alive
Expand All @@ -147,7 +153,12 @@ pub fn run() -> Result<()> {
)),
]);

cmd.run(partial.client, inherent_benchmark_data()?, &ext_factory)
cmd.run(
partial.client,
inherent_benchmark_data()?,
Vec::new(),
&ext_factory,
)
},
BenchmarkCmd::Machine(cmd) =>
cmd.run(&config, SUBSTRATE_REFERENCE_HARDWARE.clone()),
Expand Down
8 changes: 5 additions & 3 deletions utils/frame/benchmarking-cli/src/extrinsic/bench.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ use sp_blockchain::{
use sp_runtime::{
traits::{Block as BlockT, Zero},
transaction_validity::{InvalidTransaction, TransactionValidityError},
OpaqueExtrinsic,
Digest, DigestItem, OpaqueExtrinsic,
};

use clap::Args;
Expand Down Expand Up @@ -65,6 +65,7 @@ pub(crate) struct Benchmark<Block, BA, C> {
client: Arc<C>,
params: BenchmarkParams,
inherent_data: sp_inherents::InherentData,
digest_items: Vec<DigestItem>,
_p: PhantomData<(Block, BA)>,
}

Expand All @@ -80,8 +81,9 @@ where
client: Arc<C>,
params: BenchmarkParams,
inherent_data: sp_inherents::InherentData,
digest_items: Vec<DigestItem>,
) -> Self {
Self { client, params, inherent_data, _p: PhantomData }
Self { client, params, inherent_data, digest_items, _p: PhantomData }
}

/// Benchmark a block with only inherents.
Expand Down Expand Up @@ -125,7 +127,7 @@ where
&self,
ext_builder: Option<&dyn ExtrinsicBuilder>,
) -> Result<(Block, Option<u64>)> {
let mut builder = self.client.new_block(Default::default())?;
let mut builder = self.client.new_block(Digest { logs: self.digest_items.clone() })?;
// Create and insert the inherents.
let inherents = builder.create_inherents(self.inherent_data.clone())?;
for inherent in inherents {
Expand Down
5 changes: 3 additions & 2 deletions utils/frame/benchmarking-cli/src/extrinsic/cmd.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ use sc_block_builder::{BlockBuilderApi, BlockBuilderProvider};
use sc_cli::{CliConfiguration, ImportParams, Result, SharedParams};
use sc_client_api::Backend as ClientBackend;
use sp_api::{ApiExt, ProvideRuntimeApi};
use sp_runtime::{traits::Block as BlockT, OpaqueExtrinsic};
use sp_runtime::{traits::Block as BlockT, DigestItem, OpaqueExtrinsic};

use clap::{Args, Parser};
use log::info;
Expand Down Expand Up @@ -82,6 +82,7 @@ impl ExtrinsicCmd {
&self,
client: Arc<C>,
inherent_data: sp_inherents::InherentData,
digest_items: Vec<DigestItem>,
ext_factory: &ExtrinsicFactory,
) -> Result<()>
where
Expand Down Expand Up @@ -109,7 +110,7 @@ impl ExtrinsicCmd {
return Err("Unknown pallet or extrinsic. Use --list for a complete list.".into()),
};

let bench = Benchmark::new(client, self.params.bench.clone(), inherent_data);
let bench = Benchmark::new(client, self.params.bench.clone(), inherent_data, digest_items);
let stats = bench.bench_extrinsic(ext_builder)?;
info!(
"Executing a {}::{} extrinsic takes[ns]:\n{:?}",
Expand Down
5 changes: 3 additions & 2 deletions utils/frame/benchmarking-cli/src/overhead/cmd.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ use sc_cli::{CliConfiguration, ImportParams, Result, SharedParams};
use sc_client_api::Backend as ClientBackend;
use sc_service::Configuration;
use sp_api::{ApiExt, ProvideRuntimeApi};
use sp_runtime::{traits::Block as BlockT, OpaqueExtrinsic};
use sp_runtime::{traits::Block as BlockT, DigestItem, OpaqueExtrinsic};

use clap::{Args, Parser};
use log::info;
Expand Down Expand Up @@ -90,6 +90,7 @@ impl OverheadCmd {
cfg: Configuration,
client: Arc<C>,
inherent_data: sp_inherents::InherentData,
digest_items: Vec<DigestItem>,
ext_builder: &dyn ExtrinsicBuilder,
) -> Result<()>
where
Expand All @@ -101,7 +102,7 @@ impl OverheadCmd {
if ext_builder.pallet() != "system" || ext_builder.extrinsic() != "remark" {
return Err(format!("The extrinsic builder is required to build `System::Remark` extrinsics but builds `{}` extrinsics instead", ext_builder.name()).into());
}
let bench = Benchmark::new(client, self.params.bench.clone(), inherent_data);
let bench = Benchmark::new(client, self.params.bench.clone(), inherent_data, digest_items);

// per-block execution overhead
{
Expand Down

0 comments on commit 8cb6406

Please sign in to comment.