Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
29708f2
Update benchmark_action.sh
JohnReedV Jun 25, 2026
4239fd8
auto-update benchmark weights
github-actions[bot] Jun 25, 2026
900fbd4
bump spec
JohnReedV Jun 25, 2026
a80f02e
fix bad failures
JohnReedV Jun 25, 2026
538098e
auto-update benchmark weights
github-actions[bot] Jun 25, 2026
f48cb35
test benchmark
JohnReedV Jun 25, 2026
524e551
auto-update benchmark weights
github-actions[bot] Jun 25, 2026
46bff83
auto-update benchmark weights
github-actions[bot] Jun 26, 2026
36ae2e5
add block_step benchmark
JohnReedV Jun 26, 2026
37d9bed
add benchmark lint
JohnReedV Jun 26, 2026
7d97e23
fix lint
JohnReedV Jun 26, 2026
38109a8
chore: auditor auto-fix
Jun 26, 2026
af5d43b
lint ignores mock benches
JohnReedV Jun 26, 2026
952a23a
Merge branch 'apply-benchmark-to-only-bad-benches' of github.com:open…
JohnReedV Jun 26, 2026
f0b1c62
make benches heavier
JohnReedV Jun 26, 2026
7ed9929
make block-step bench heavier
JohnReedV Jun 26, 2026
4bb693c
fix compile
JohnReedV Jun 26, 2026
eb92fc1
clippy
JohnReedV Jun 26, 2026
dd7ae13
fix benchmark state
JohnReedV Jun 26, 2026
c71bc73
fix bench reveal_mechanism_weights
JohnReedV Jun 26, 2026
a12cd5e
Update benchmarks.rs
JohnReedV Jun 27, 2026
b148869
auto-update benchmark weights
github-actions[bot] Jun 29, 2026
a4bdc03
make block step bench realistic
JohnReedV Jun 29, 2026
4ac0494
clippy
JohnReedV Jun 29, 2026
f12ad70
don't ignore `proof_size`
JohnReedV Jun 29, 2026
5d8e3a8
add is plugged in check to lint
JohnReedV Jun 29, 2026
e5a0129
plug in weights
JohnReedV Jun 29, 2026
a8536ef
chore: auditor auto-fix
Jun 29, 2026
267680e
clippy
JohnReedV Jun 29, 2026
d0738e8
fix store_encrypted
JohnReedV Jun 29, 2026
2ef1378
auto-update benchmark weights
github-actions[bot] Jun 29, 2026
95c1e86
Update require_extrinsic_benchmarks.rs
JohnReedV Jun 29, 2026
020e750
auto-update benchmark weights
github-actions[bot] Jun 30, 2026
fe77ff9
fmt
JohnReedV Jun 30, 2026
1566739
Merge branch 'devnet-ready' into apply-benchmark-to-only-bad-benches
JohnReedV Jun 30, 2026
e14d5df
revert
JohnReedV Jun 30, 2026
a0de6ba
fix merge
JohnReedV Jun 30, 2026
88b970e
fix lint tests
JohnReedV Jun 30, 2026
8388cd7
stabilize some
JohnReedV Jun 30, 2026
c2639fb
Update benchmarking.rs
JohnReedV Jun 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ fn main() {

// Collect all Rust source files in the workspace
let rust_files = collect_rust_files(workspace_root);

for error in RequireExtrinsicBenchmarks::lint_workspace(workspace_root) {
println!("cargo:warning={error}");
}
// Channel used to communicate errors back to the main thread from the parallel processing
// as we process each Rust file
let (tx, rx) = channel();
Expand Down
206 changes: 203 additions & 3 deletions pallets/admin-utils/src/benchmarking.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
//! Benchmarking setup
#![cfg(feature = "runtime-benchmarks")]
#![allow(clippy::arithmetic_side_effects)]
#![allow(clippy::unwrap_used)]

extern crate alloc;
use alloc::vec::Vec;
Expand All @@ -9,10 +10,11 @@ use alloc::vec::Vec;
use crate::Pallet as AdminUtils;
use frame_benchmarking::v1::account;
use frame_benchmarking::v2::*;
use frame_support::dispatch::UnfilteredDispatchable;
use frame_support::{BoundedVec, assert_noop};
use frame_support::{BoundedVec, assert_noop, dispatch::UnfilteredDispatchable};
use frame_system::RawOrigin;
use pallet_subtensor::SubnetworkN;
use scale_info::prelude::vec;
use sp_runtime::traits::Get;

use super::*;

Expand All @@ -21,7 +23,8 @@ mod benchmarks {
use super::*;
#[cfg(test)]
use crate::tests::mock;
use subtensor_runtime_common::NetUid;
use substrate_fixed::types::{I64F64, U64F64};
use subtensor_runtime_common::{NetUid, TaoBalance};

#[benchmark]
fn swap_authorities(a: Linear<0, 32>) {
Expand Down Expand Up @@ -700,5 +703,202 @@ mod benchmarks {
);
}

fn setup_worst_case_admin_subnet<T: Config>(netuid: NetUid) -> T::AccountId {
let owner: T::AccountId = whitelisted_caller();
pallet_subtensor::Pallet::<T>::set_admin_freeze_window(0);
pallet_subtensor::Pallet::<T>::init_new_network(netuid, 1u16);
pallet_subtensor::Pallet::<T>::set_max_allowed_uids(netuid, 1);
pallet_subtensor::SubnetOwner::<T>::insert(netuid, owner.clone());
owner
}

fn max_emission_split() -> Vec<u16> {
let mut split = vec![4096u16; 15];
split.push(4095u16);
split
}

#[benchmark]
fn sudo_set_adjustment_alpha() {
let netuid = NetUid::from(1);
let owner = setup_worst_case_admin_subnet::<T>(netuid);

#[extrinsic_call]
_(RawOrigin::Signed(owner), netuid, u64::MAX);
}

#[benchmark]
fn sudo_set_network_pow_registration_allowed() {
#[block]
{
assert!(
AdminUtils::<T>::sudo_set_network_pow_registration_allowed(
RawOrigin::Root.into(),
NetUid::from(u16::MAX),
true,
)
.is_err()
);
}
}

#[benchmark]
fn sudo_set_subnet_owner_cut() {
#[extrinsic_call]
_(RawOrigin::Root, u16::MAX);
}

#[benchmark]
fn sudo_set_network_rate_limit() {
#[extrinsic_call]
_(RawOrigin::Root, u64::MAX);
}

#[benchmark]
fn sudo_set_network_immunity_period() {
#[extrinsic_call]
_(RawOrigin::Root, u64::MAX);
}

#[benchmark]
fn sudo_set_network_min_lock_cost() {
#[extrinsic_call]
_(RawOrigin::Root, TaoBalance::from(u64::MAX));
}

#[benchmark]
fn sudo_set_subnet_limit() {
#[extrinsic_call]
_(RawOrigin::Root, u16::MAX);
}

#[benchmark]
fn sudo_set_lock_reduction_interval() {
#[extrinsic_call]
_(RawOrigin::Root, u64::MAX);
}

#[benchmark]
fn sudo_set_evm_chain_id() {
#[extrinsic_call]
_(RawOrigin::Root, u64::MAX);
}

#[benchmark]
fn sudo_set_recycle_or_burn() {
let netuid = NetUid::from(1);
let owner = setup_worst_case_admin_subnet::<T>(netuid);

#[extrinsic_call]
_(
RawOrigin::Signed(owner),
netuid,
pallet_subtensor::RecycleOrBurnEnum::Burn,
);
}

#[benchmark]
fn sudo_set_ck_burn() {
#[extrinsic_call]
_(RawOrigin::Root, u64::MAX);
}
#[benchmark]
fn sudo_set_mechanism_count() {
let netuid = NetUid::from(1);
let owner = setup_worst_case_admin_subnet::<T>(netuid);
let mechanism_count = 16u8.into();
assert!(pallet_subtensor::Pallet::<T>::do_set_max_mechanism_count(mechanism_count).is_ok());

#[extrinsic_call]
_(RawOrigin::Signed(owner), netuid, mechanism_count);
}

#[benchmark]
fn sudo_set_mechanism_emission_split() {
let netuid = NetUid::from(1);
let owner = setup_worst_case_admin_subnet::<T>(netuid);
let mechanism_count = 16u8.into();
assert!(pallet_subtensor::Pallet::<T>::do_set_max_mechanism_count(mechanism_count).is_ok());
assert!(
pallet_subtensor::Pallet::<T>::do_set_mechanism_count(netuid, mechanism_count).is_ok()
);

#[extrinsic_call]
_(RawOrigin::Signed(owner), netuid, Some(max_emission_split()));
}

#[benchmark]
fn sudo_set_tao_flow_cutoff() {
#[extrinsic_call]
_(RawOrigin::Root, I64F64::from_num(i64::MAX));
}

#[benchmark]
fn sudo_set_tao_flow_normalization_exponent() {
#[extrinsic_call]
_(RawOrigin::Root, U64F64::from_num(2));
}

#[benchmark]
fn sudo_set_tao_flow_smoothing_factor() {
#[extrinsic_call]
_(RawOrigin::Root, u64::MAX);
}

#[benchmark]
fn sudo_set_net_tao_flow_enabled() {
#[extrinsic_call]
_(RawOrigin::Root, true);
}

#[benchmark]
fn sudo_set_max_mechanism_count() {
#[extrinsic_call]
_(RawOrigin::Root, 16u8.into());
}

#[benchmark]
fn sudo_set_start_call_delay() {
#[extrinsic_call]
_(RawOrigin::Root, u64::MAX);
}

#[benchmark]
fn sudo_set_burn_half_life() {
let netuid = NetUid::from(1);
let owner = setup_worst_case_admin_subnet::<T>(netuid);
let max_half_life = pallet_subtensor::MaxBurnHalfLife::<T>::get();

#[extrinsic_call]
_(RawOrigin::Signed(owner), netuid, max_half_life);
}

#[benchmark]
fn sudo_set_burn_increase_mult() {
let netuid = NetUid::from(1);
let owner = setup_worst_case_admin_subnet::<T>(netuid);

#[extrinsic_call]
_(RawOrigin::Signed(owner), netuid, U64F64::from_num(3));
}

#[benchmark]
fn sudo_set_owner_cut_enabled() {
let netuid = NetUid::from(1);
let owner = setup_worst_case_admin_subnet::<T>(netuid);

#[extrinsic_call]
_(RawOrigin::Signed(owner), netuid, true);
}

#[benchmark]
fn sudo_set_owner_cut_auto_lock_enabled() {
let netuid = NetUid::from(1);
let owner = setup_worst_case_admin_subnet::<T>(netuid);

#[extrinsic_call]
_(RawOrigin::Signed(owner), netuid, true);
}

impl_benchmark_test_suite!(AdminUtils, mock::new_test_ext(), mock::Test);
}
Loading
Loading