Skip to content

Commit

Permalink
fix benchmarking
Browse files Browse the repository at this point in the history
  • Loading branch information
ermalkaleci committed Aug 8, 2024
1 parent b3e589a commit edde0ad
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 73 deletions.
78 changes: 31 additions & 47 deletions bin/collator/src/benchmarking.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@
// You should have received a copy of the GNU General Public License
// along with Astar. If not, see <http://www.gnu.org/licenses/>.

use crate::parachain::service::ParachainExecutor;
use astar_primitives::{AccountId, Balance, Block};
use cumulus_primitives_core::PersistedValidationData;
use cumulus_primitives_parachain_inherent::{ParachainInherentData, INHERENT_IDENTIFIER};
use cumulus_test_relay_sproof_builder::RelayStateSproofBuilder;
use parity_scale_codec::Encode;
use polkadot_runtime_common::BlockHashCount;
use sc_executor::NativeElseWasmExecutor;
use sc_service::TFullClient;
use sp_api::ConstructRuntimeApi;
use sp_core::{Pair, H256};
Expand All @@ -33,41 +33,35 @@ use std::sync::Arc;
/// Generates `System::Remark` extrinsics for the benchmarks.
///
/// Note: Should only be used for benchmarking.
pub struct RemarkBuilder<RuntimeApi, Executor>
pub struct RemarkBuilder<RuntimeApi>
where
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, ParachainExecutor>>
+ Send
+ Sync
+ 'static,
Executor: sc_executor::NativeExecutionDispatch + 'static,
{
client: Arc<TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>,
client: Arc<TFullClient<Block, RuntimeApi, ParachainExecutor>>,
}

impl<RuntimeApi, Executor> RemarkBuilder<RuntimeApi, Executor>
impl<RuntimeApi> RemarkBuilder<RuntimeApi>
where
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, ParachainExecutor>>
+ Send
+ Sync
+ 'static,
Executor: sc_executor::NativeExecutionDispatch + 'static,
{
/// Creates a new [`Self`] from the given client.
pub fn new(
client: Arc<TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>,
) -> Self {
pub fn new(client: Arc<TFullClient<Block, RuntimeApi, ParachainExecutor>>) -> Self {
Self { client }
}
}

impl<RuntimeApi, Executor> frame_benchmarking_cli::ExtrinsicBuilder
for RemarkBuilder<RuntimeApi, Executor>
impl<RuntimeApi> frame_benchmarking_cli::ExtrinsicBuilder for RemarkBuilder<RuntimeApi>
where
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, ParachainExecutor>>
+ Send
+ Sync
+ 'static,
Executor: sc_executor::NativeExecutionDispatch + 'static,
{
fn pallet(&self) -> &str {
"system"
Expand Down Expand Up @@ -100,30 +94,28 @@ where
/// Generates `Balances::TransferKeepAlive` extrinsics for the benchmarks.
///
/// Note: Should only be used for benchmarking.
pub struct TransferKeepAliveBuilder<RuntimeApi, Executor>
pub struct TransferKeepAliveBuilder<RuntimeApi>
where
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, ParachainExecutor>>
+ Send
+ Sync
+ 'static,
Executor: sc_executor::NativeExecutionDispatch + 'static,
{
client: Arc<TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>,
client: Arc<TFullClient<Block, RuntimeApi, ParachainExecutor>>,
dest: AccountId,
value: Balance,
}

impl<RuntimeApi, Executor> TransferKeepAliveBuilder<RuntimeApi, Executor>
impl<RuntimeApi> TransferKeepAliveBuilder<RuntimeApi>
where
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, ParachainExecutor>>
+ Send
+ Sync
+ 'static,
Executor: sc_executor::NativeExecutionDispatch + 'static,
{
/// Creates a new [`Self`] from the given client.
pub fn new(
client: Arc<TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>,
client: Arc<TFullClient<Block, RuntimeApi, ParachainExecutor>>,
dest: AccountId,
value: Balance,
) -> Self {
Expand All @@ -135,14 +127,12 @@ where
}
}

impl<RuntimeApi, Executor> frame_benchmarking_cli::ExtrinsicBuilder
for TransferKeepAliveBuilder<RuntimeApi, Executor>
impl<RuntimeApi> frame_benchmarking_cli::ExtrinsicBuilder for TransferKeepAliveBuilder<RuntimeApi>
where
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, ParachainExecutor>>
+ Send
+ Sync
+ 'static,
Executor: sc_executor::NativeExecutionDispatch + 'static,
{
fn pallet(&self) -> &str {
"balances"
Expand Down Expand Up @@ -192,14 +182,13 @@ trait BenchmarkCallSigner<RuntimeCall: Encode + Clone, Signer: Pair> {
) -> OpaqueExtrinsic;
}

impl<RuntimeApi, Executor> BenchmarkCallSigner<local_runtime::RuntimeCall, sp_core::sr25519::Pair>
for TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>
impl<RuntimeApi> BenchmarkCallSigner<local_runtime::RuntimeCall, sp_core::sr25519::Pair>
for TFullClient<Block, RuntimeApi, ParachainExecutor>
where
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, ParachainExecutor>>
+ Send
+ Sync
+ 'static,
Executor: sc_executor::NativeExecutionDispatch + 'static,
{
fn sign_call(
&self,
Expand Down Expand Up @@ -251,14 +240,13 @@ where
}
}

impl<RuntimeApi, Executor> BenchmarkCallSigner<astar_runtime::RuntimeCall, sp_core::sr25519::Pair>
for TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>
impl<RuntimeApi> BenchmarkCallSigner<astar_runtime::RuntimeCall, sp_core::sr25519::Pair>
for TFullClient<Block, RuntimeApi, ParachainExecutor>
where
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, ParachainExecutor>>
+ Send
+ Sync
+ 'static,
Executor: sc_executor::NativeExecutionDispatch + 'static,
{
fn sign_call(
&self,
Expand Down Expand Up @@ -310,14 +298,13 @@ where
}
}

impl<RuntimeApi, Executor> BenchmarkCallSigner<shiden_runtime::RuntimeCall, sp_core::sr25519::Pair>
for TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>
impl<RuntimeApi> BenchmarkCallSigner<shiden_runtime::RuntimeCall, sp_core::sr25519::Pair>
for TFullClient<Block, RuntimeApi, ParachainExecutor>
where
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, ParachainExecutor>>
+ Send
+ Sync
+ 'static,
Executor: sc_executor::NativeExecutionDispatch + 'static,
{
fn sign_call(
&self,
Expand Down Expand Up @@ -369,14 +356,13 @@ where
}
}

impl<RuntimeApi, Executor> BenchmarkCallSigner<shibuya_runtime::RuntimeCall, sp_core::sr25519::Pair>
for TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>
impl<RuntimeApi> BenchmarkCallSigner<shibuya_runtime::RuntimeCall, sp_core::sr25519::Pair>
for TFullClient<Block, RuntimeApi, ParachainExecutor>
where
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, ParachainExecutor>>
+ Send
+ Sync
+ 'static,
Executor: sc_executor::NativeExecutionDispatch + 'static,
{
fn sign_call(
&self,
Expand Down Expand Up @@ -434,14 +420,12 @@ pub trait ExistentialDepositProvider {
fn existential_deposit(&self) -> Balance;
}

impl<RuntimeApi, Executor> ExistentialDepositProvider
for TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>
impl<RuntimeApi> ExistentialDepositProvider for TFullClient<Block, RuntimeApi, ParachainExecutor>
where
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, ParachainExecutor>>
+ Send
+ Sync
+ 'static,
Executor: sc_executor::NativeExecutionDispatch + 'static,
{
fn existential_deposit(&self) -> Balance {
with_runtime! {
Expand Down
36 changes: 12 additions & 24 deletions bin/collator/src/command.rs
Original file line number Diff line number Diff line change
Expand Up @@ -535,12 +535,9 @@ pub fn run() -> Result<()> {
})
} else if chain_spec.is_shibuya() {
runner.sync_run(|config| {
let params = parachain::new_partial::<
shibuya::RuntimeApi,
shibuya::Executor,
_,
>(
&config, parachain::build_import_queue
let params = parachain::new_partial::<shibuya_runtime::RuntimeApi, _>(
&config,
parachain::build_import_queue,
)?;
cmd.run(params.client)
})
Expand Down Expand Up @@ -576,12 +573,9 @@ pub fn run() -> Result<()> {
})
} else if chain_spec.is_shibuya() {
runner.sync_run(|config| {
let params = parachain::new_partial::<
shibuya::RuntimeApi,
shibuya::Executor,
_,
>(
&config, parachain::build_import_queue
let params = parachain::new_partial::<shibuya_runtime::RuntimeApi, _>(
&config,
parachain::build_import_queue,
)?;
let db = params.backend.expose_db();
let storage = params.backend.expose_storage();
Expand Down Expand Up @@ -638,12 +632,9 @@ pub fn run() -> Result<()> {
})
} else if chain_spec.is_shibuya() {
runner.sync_run(|config| {
let params = parachain::new_partial::<
shibuya::RuntimeApi,
shibuya::Executor,
_,
>(
&config, parachain::build_import_queue
let params = parachain::new_partial::<shibuya_runtime::RuntimeApi, _>(
&config,
parachain::build_import_queue,
)?;

let ext_builder = RemarkBuilder::new(params.client.clone());
Expand Down Expand Up @@ -720,12 +711,9 @@ pub fn run() -> Result<()> {
})
} else if chain_spec.is_shibuya() {
runner.sync_run(|config| {
let params = parachain::new_partial::<
shibuya::RuntimeApi,
shibuya::Executor,
_,
>(
&config, parachain::build_import_queue
let params = parachain::new_partial::<shibuya_runtime::RuntimeApi, _>(
&config,
parachain::build_import_queue,
)?;
let remark_builder = RemarkBuilder::new(params.client.clone());
let tka_builder = TransferKeepAliveBuilder::new(
Expand Down
3 changes: 2 additions & 1 deletion bin/collator/src/parachain/service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,8 @@ pub type HostFunctions = (
#[cfg(not(feature = "evm-tracing"))]
pub type HostFunctions = (cumulus_client_service::ParachainHostFunctions,);

type ParachainExecutor = WasmExecutor<HostFunctions>;
/// Parachain executor
pub type ParachainExecutor = WasmExecutor<HostFunctions>;

/// Starts a `ServiceBuilder` for a full service.
///
Expand Down
1 change: 0 additions & 1 deletion scripts/run_benchmarks.sh
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,6 @@ for chain in ${chains//,/ }; do
--repeat=20 \
--pallet="$PALLET" \
--extrinsic="*" \
--execution=wasm \
--wasm-execution=compiled \
--heap-pages=4096 \
--output="$WEIGHT_FILE" \
Expand Down

0 comments on commit edde0ad

Please sign in to comment.