mirror of
https://github.com/datahaven-xyz/datahaven
synced 2026-05-24 09:50:01 +00:00
## Add missing weights The aim of this PR is to complete our weights by enabling more runtime benchmarks from the pallets used in DataHaven. I will start this effort with Storage Hub pallets. ## What's included - [x] `pallet_nfts` - [x] Added signing helper for pallet nfts - [x] Add pallet to benchmarks - [x] Run benches and generate weights - [x] Wire up weights to runtimes - [x] `pallet_session` - [x] Added a `pallet_session_benchmarking` crate - [x] Added signing helpers - [x] Add pallet to benchmarks - [x] Run benches and generate weights - [x] Wire up weights to runtimes - [x] `pallet_payment_streams` - [x] Add `TreasuryAccount` helper and configure properly - [x] Add pallet to benchmarks - [x] Run benches and generate weights - [x] Wire up weights to runtimes - [x] `pallet_storage_providers` - [x] Add `TreasuryAccount` helper and configure properly - [x] Add pallet to benchmarks - [x] Run benches and generate weights - [x] Wire up weights to runtimes - [x] `pallet_file_system` - [x] Add pallet to benchmarks and configure properly - [ ] Run benches and generate weights - [x] Wire up weights to runtimes - [x] `pallet_proofs_dealer` - [x] Add pallet to benchmarks and configure properly - [x] Run benches and generate weights - [x] Wire up weights to runtimes ## What's not included - `pallet_identity` - We'll enable it once we update to `2506`, that will allow us to have a BenchmarkHelper in the config on the pallet (see [here](ac28323e7d/operator/runtime/mainnet/src/configs/mod.rs (L632-L643))) - `pallet_grandpa` - the upstream pallet defines [benchmarks](bbc435c766/substrate/frame/grandpa/src/benchmarking.rs (L25)) for `check_equivocation_proof` and `note_stalled`, but the required weights to be wired are actually `report_equivocation`, `report_equivocation_unsigned` and `note_stalled`. That means including `pallet_grandpa` in the benchmarks results in an inconsistent `WeightInfo` implementation, so further understanding in the pallet's approach to benchmarking is needed. - `pallet_file_system` -> Run benches and generate weights. Weights will fail because of a hardcoded `AccountId32` on the [benchmarks](57d2a195d5/pallets/file-system/src/benchmark_proofs.rs (L69-L71)). I'll create a PR for SH soon. These two are left for a follow up PR.
78 lines
3.5 KiB
Handlebars
78 lines
3.5 KiB
Handlebars
{{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)]
|
|
|
|
use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};
|
|
use sp_std::marker::PhantomData;
|
|
|
|
/// Weights for `{{pallet}}`.
|
|
pub struct WeightInfo<T>(PhantomData<T>);
|
|
{{#if (eq pallet "frame_system_extensions")}}
|
|
impl<T: frame_system::Config> frame_system::ExtensionsWeightInfo for WeightInfo<T> {
|
|
{{else}}
|
|
impl<T: frame_system::Config> {{pallet}}::WeightInfo for WeightInfo<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}}
|
|
{{#if (and (eq ../pallet "pallet_proxy") (eq benchmark.name "proxy"))}}
|
|
// 1 DB read that happen when filtering the proxy call transaction
|
|
.saturating_add(T::DbWeight::get().reads(1))
|
|
{{/if}}
|
|
{{#if (and (eq ../pallet "pallet_precompile_benchmarks") (eq benchmark.name "p256_verify"))}}
|
|
// TODO: Remove this multiplication once we are comfortable with the weight estimation
|
|
// Double the weight just to mitigate the possibility of having a signature that
|
|
// takes longer to verify
|
|
.saturating_mul(1u64)
|
|
{{/if}}
|
|
}
|
|
{{/each}}
|
|
}
|