-
Notifications
You must be signed in to change notification settings - Fork 725
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
A step towards #4782 In order to nail down the right preludes in `polkadot-sdk-frame`, we need to migrate a number of pallets to be written with it. Moreover, migrating our pallets to this simpler patter will encourage the ecosystem to also follow along. If this PR is approved and has no unwanted negative consequences, I will make a tracking issue to migrate all pallets to this umbrella crate. TODO: - [x] fix frame benchmarking template. Can we detect the umbrella crate in there and have an `if else`? cc @ggwpez - [x] Migrate benchmarking to v2 @re-gius a good candidate for you, you can open a PR against my branch. - [x] tracking issue with follow-ups --------- Co-authored-by: Guillaume Thiolliere <[email protected]> Co-authored-by: Giuseppe Re <[email protected]> Co-authored-by: Dónal Murray <[email protected]> Co-authored-by: Shawn Tabrizi <[email protected]> Co-authored-by: Oliver Tale-Yazdi <[email protected]>
- Loading branch information
1 parent
35535ef
commit 9584dbd
Showing
21 changed files
with
735 additions
and
337 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Schema: Polkadot SDK PRDoc Schema (prdoc) v1.0.0 | ||
# See doc at https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/prdoc/schema_user.json | ||
|
||
title: Use frame umbrella crate in pallet-proxy and pallet-multisig | ||
|
||
doc: | ||
- audience: Runtime Dev | ||
description: | | ||
Extends the FRAME umbrella crate and uses it in pallet-proxy and pallet-multisig. | ||
Migrates benchmarking from v1 to v2 for pallet-proxy and pallet-multisig. | ||
Allows CI to pick the umbrella crate weights template to run benchmarks. | ||
|
||
crates: | ||
- name: pallet-multisig | ||
bump: minor | ||
- name: pallet-proxy | ||
bump: minor | ||
- name: polkadot-sdk-frame | ||
bump: major | ||
- name: pallet-migrations | ||
bump: patch |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,120 @@ | ||
{{header}} | ||
//! Autogenerated weights for `{{pallet}}` | ||
//! | ||
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION {{version}} | ||
//! DATE: {{date}}, STEPS: `{{cmd.steps}}`, REPEAT: `{{cmd.repeat}}`, LOW RANGE: `{{cmd.lowest_range_values}}`, HIGH RANGE: `{{cmd.highest_range_values}}` | ||
//! WORST CASE MAP SIZE: `{{cmd.worst_case_map_values}}` | ||
//! HOSTNAME: `{{hostname}}`, CPU: `{{cpuname}}` | ||
//! WASM-EXECUTION: `{{cmd.wasm_execution}}`, CHAIN: `{{cmd.chain}}`, DB CACHE: `{{cmd.db_cache}}` | ||
|
||
// Executed Command: | ||
{{#each args as |arg|}} | ||
// {{arg}} | ||
{{/each}} | ||
|
||
#![cfg_attr(rustfmt, rustfmt_skip)] | ||
#![allow(unused_parens)] | ||
#![allow(unused_imports)] | ||
#![allow(missing_docs)] | ||
|
||
use frame::weights_prelude::*; | ||
|
||
/// Weight functions needed for `{{pallet}}`. | ||
pub trait WeightInfo { | ||
{{#each benchmarks as |benchmark|}} | ||
fn {{benchmark.name~}} | ||
( | ||
{{~#each benchmark.components as |c| ~}} | ||
{{c.name}}: u32, {{/each~}} | ||
) -> Weight; | ||
{{/each}} | ||
} | ||
|
||
/// Weights for `{{pallet}}` using the Substrate node and recommended hardware. | ||
pub struct SubstrateWeight<T>(PhantomData<T>); | ||
{{#if (eq pallet "frame_system")}} | ||
impl<T: crate::Config> WeightInfo for SubstrateWeight<T> { | ||
{{else}} | ||
impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { | ||
{{/if}} | ||
{{#each benchmarks as |benchmark|}} | ||
{{#each benchmark.comments as |comment|}} | ||
/// {{comment}} | ||
{{/each}} | ||
{{#each benchmark.component_ranges as |range|}} | ||
/// The range of component `{{range.name}}` is `[{{range.min}}, {{range.max}}]`. | ||
{{/each}} | ||
fn {{benchmark.name~}} | ||
( | ||
{{~#each benchmark.components as |c| ~}} | ||
{{~#if (not c.is_used)}}_{{/if}}{{c.name}}: u32, {{/each~}} | ||
) -> Weight { | ||
// Proof Size summary in bytes: | ||
// Measured: `{{benchmark.base_recorded_proof_size}}{{#each benchmark.component_recorded_proof_size as |cp|}} + {{cp.name}} * ({{cp.slope}} ±{{underscore cp.error}}){{/each}}` | ||
// Estimated: `{{benchmark.base_calculated_proof_size}}{{#each benchmark.component_calculated_proof_size as |cp|}} + {{cp.name}} * ({{cp.slope}} ±{{underscore cp.error}}){{/each}}` | ||
// Minimum execution time: {{underscore benchmark.min_execution_time}}_000 picoseconds. | ||
Weight::from_parts({{underscore benchmark.base_weight}}, {{benchmark.base_calculated_proof_size}}) | ||
{{#each benchmark.component_weight as |cw|}} | ||
// Standard Error: {{underscore cw.error}} | ||
.saturating_add(Weight::from_parts({{underscore cw.slope}}, 0).saturating_mul({{cw.name}}.into())) | ||
{{/each}} | ||
{{#if (ne benchmark.base_reads "0")}} | ||
.saturating_add(T::DbWeight::get().reads({{benchmark.base_reads}}_u64)) | ||
{{/if}} | ||
{{#each benchmark.component_reads as |cr|}} | ||
.saturating_add(T::DbWeight::get().reads(({{cr.slope}}_u64).saturating_mul({{cr.name}}.into()))) | ||
{{/each}} | ||
{{#if (ne benchmark.base_writes "0")}} | ||
.saturating_add(T::DbWeight::get().writes({{benchmark.base_writes}}_u64)) | ||
{{/if}} | ||
{{#each benchmark.component_writes as |cw|}} | ||
.saturating_add(T::DbWeight::get().writes(({{cw.slope}}_u64).saturating_mul({{cw.name}}.into()))) | ||
{{/each}} | ||
{{#each benchmark.component_calculated_proof_size as |cp|}} | ||
.saturating_add(Weight::from_parts(0, {{cp.slope}}).saturating_mul({{cp.name}}.into())) | ||
{{/each}} | ||
} | ||
{{/each}} | ||
} | ||
|
||
// For backwards compatibility and tests. | ||
impl WeightInfo for () { | ||
{{#each benchmarks as |benchmark|}} | ||
{{#each benchmark.comments as |comment|}} | ||
/// {{comment}} | ||
{{/each}} | ||
{{#each benchmark.component_ranges as |range|}} | ||
/// The range of component `{{range.name}}` is `[{{range.min}}, {{range.max}}]`. | ||
{{/each}} | ||
fn {{benchmark.name~}} | ||
( | ||
{{~#each benchmark.components as |c| ~}} | ||
{{~#if (not c.is_used)}}_{{/if}}{{c.name}}: u32, {{/each~}} | ||
) -> Weight { | ||
// Proof Size summary in bytes: | ||
// Measured: `{{benchmark.base_recorded_proof_size}}{{#each benchmark.component_recorded_proof_size as |cp|}} + {{cp.name}} * ({{cp.slope}} ±{{underscore cp.error}}){{/each}}` | ||
// Estimated: `{{benchmark.base_calculated_proof_size}}{{#each benchmark.component_calculated_proof_size as |cp|}} + {{cp.name}} * ({{cp.slope}} ±{{underscore cp.error}}){{/each}}` | ||
// Minimum execution time: {{underscore benchmark.min_execution_time}}_000 picoseconds. | ||
Weight::from_parts({{underscore benchmark.base_weight}}, {{benchmark.base_calculated_proof_size}}) | ||
{{#each benchmark.component_weight as |cw|}} | ||
// Standard Error: {{underscore cw.error}} | ||
.saturating_add(Weight::from_parts({{underscore cw.slope}}, 0).saturating_mul({{cw.name}}.into())) | ||
{{/each}} | ||
{{#if (ne benchmark.base_reads "0")}} | ||
.saturating_add(RocksDbWeight::get().reads({{benchmark.base_reads}}_u64)) | ||
{{/if}} | ||
{{#each benchmark.component_reads as |cr|}} | ||
.saturating_add(RocksDbWeight::get().reads(({{cr.slope}}_u64).saturating_mul({{cr.name}}.into()))) | ||
{{/each}} | ||
{{#if (ne benchmark.base_writes "0")}} | ||
.saturating_add(RocksDbWeight::get().writes({{benchmark.base_writes}}_u64)) | ||
{{/if}} | ||
{{#each benchmark.component_writes as |cw|}} | ||
.saturating_add(RocksDbWeight::get().writes(({{cw.slope}}_u64).saturating_mul({{cw.name}}.into()))) | ||
{{/each}} | ||
{{#each benchmark.component_calculated_proof_size as |cp|}} | ||
.saturating_add(Weight::from_parts(0, {{cp.slope}}).saturating_mul({{cp.name}}.into())) | ||
{{/each}} | ||
} | ||
{{/each}} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.