mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-21 02:45:43 +00:00
subsystem-bench: adjust test config to Kusama (#3583)
Fixes https://github.com/paritytech/polkadot-sdk/issues/3528 ```rust latency: mean_latency_ms = 30 // common sense std_dev = 2.0 // common sense n_validators = 300 // max number of validators, from chain config n_cores = 60 // 300/5 max_validators_per_core = 5 // default min_pov_size = 5120 // max max_pov_size = 5120 // max peer_bandwidth = 44040192 // from the Parity's kusama validators bandwidth = 44040192 // from the Parity's kusama validators connectivity = 90 // we need to be connected to 90-95% of peers ```
This commit is contained in:
+5
-14
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
//! availability-read regression tests
|
//! availability-read regression tests
|
||||||
//!
|
//!
|
||||||
//! TODO: Explain the test case after configuration adjusted to Kusama
|
//! Availability read benchmark based on Kusama parameters and scale.
|
||||||
//!
|
//!
|
||||||
//! Subsystems involved:
|
//! Subsystems involved:
|
||||||
//! - availability-distribution
|
//! - availability-distribution
|
||||||
@@ -25,28 +25,19 @@
|
|||||||
|
|
||||||
use polkadot_subsystem_bench::{
|
use polkadot_subsystem_bench::{
|
||||||
availability::{benchmark_availability_write, prepare_test, TestDataAvailability, TestState},
|
availability::{benchmark_availability_write, prepare_test, TestDataAvailability, TestState},
|
||||||
configuration::{PeerLatency, TestConfiguration},
|
configuration::TestConfiguration,
|
||||||
usage::BenchmarkUsage,
|
usage::BenchmarkUsage,
|
||||||
};
|
};
|
||||||
|
|
||||||
const BENCH_COUNT: usize = 3;
|
const BENCH_COUNT: usize = 3;
|
||||||
const WARM_UP_COUNT: usize = 20;
|
const WARM_UP_COUNT: usize = 30;
|
||||||
const WARM_UP_PRECISION: f64 = 0.01;
|
const WARM_UP_PRECISION: f64 = 0.01;
|
||||||
|
|
||||||
fn main() -> Result<(), String> {
|
fn main() -> Result<(), String> {
|
||||||
let mut messages = vec![];
|
let mut messages = vec![];
|
||||||
|
|
||||||
// TODO: Adjust the test configurations to Kusama values
|
|
||||||
let mut config = TestConfiguration::default();
|
let mut config = TestConfiguration::default();
|
||||||
config.latency = Some(PeerLatency { mean_latency_ms: 30, std_dev: 2.0 });
|
// A single node effort roughly n_cores * needed_approvals / n_validators = 60 * 30 / 300
|
||||||
config.n_validators = 1000;
|
config.n_cores = 6;
|
||||||
config.n_cores = 200;
|
|
||||||
config.max_validators_per_core = 5;
|
|
||||||
config.min_pov_size = 5120;
|
|
||||||
config.max_pov_size = 5120;
|
|
||||||
config.peer_bandwidth = 52428800;
|
|
||||||
config.bandwidth = 52428800;
|
|
||||||
config.connectivity = 75;
|
|
||||||
config.num_blocks = 3;
|
config.num_blocks = 3;
|
||||||
config.generate_pov_sizes();
|
config.generate_pov_sizes();
|
||||||
|
|
||||||
|
|||||||
+2
-11
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
//! availability-write regression tests
|
//! availability-write regression tests
|
||||||
//!
|
//!
|
||||||
//! TODO: Explain the test case after configuration adjusted to Kusama
|
//! Availability write benchmark based on Kusama parameters and scale.
|
||||||
//!
|
//!
|
||||||
//! Subsystems involved:
|
//! Subsystems involved:
|
||||||
//! - availability-recovery
|
//! - availability-recovery
|
||||||
@@ -26,7 +26,7 @@ use polkadot_subsystem_bench::{
|
|||||||
benchmark_availability_read, prepare_test, DataAvailabilityReadOptions,
|
benchmark_availability_read, prepare_test, DataAvailabilityReadOptions,
|
||||||
TestDataAvailability, TestState,
|
TestDataAvailability, TestState,
|
||||||
},
|
},
|
||||||
configuration::{PeerLatency, TestConfiguration},
|
configuration::TestConfiguration,
|
||||||
usage::BenchmarkUsage,
|
usage::BenchmarkUsage,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -37,18 +37,9 @@ const WARM_UP_PRECISION: f64 = 0.01;
|
|||||||
fn main() -> Result<(), String> {
|
fn main() -> Result<(), String> {
|
||||||
let mut messages = vec![];
|
let mut messages = vec![];
|
||||||
|
|
||||||
// TODO: Adjust the test configurations to Kusama values
|
|
||||||
let options = DataAvailabilityReadOptions { fetch_from_backers: true };
|
let options = DataAvailabilityReadOptions { fetch_from_backers: true };
|
||||||
let mut config = TestConfiguration::default();
|
let mut config = TestConfiguration::default();
|
||||||
config.latency = Some(PeerLatency { mean_latency_ms: 100, std_dev: 1.0 });
|
|
||||||
config.n_validators = 300;
|
|
||||||
config.n_cores = 20;
|
|
||||||
config.min_pov_size = 5120;
|
|
||||||
config.max_pov_size = 5120;
|
|
||||||
config.peer_bandwidth = 52428800;
|
|
||||||
config.bandwidth = 52428800;
|
|
||||||
config.num_blocks = 3;
|
config.num_blocks = 3;
|
||||||
config.connectivity = 90;
|
|
||||||
config.generate_pov_sizes();
|
config.generate_pov_sizes();
|
||||||
|
|
||||||
warm_up(config.clone(), options.clone())?;
|
warm_up(config.clone(), options.clone())?;
|
||||||
|
|||||||
@@ -35,19 +35,34 @@ pub struct PeerLatency {
|
|||||||
pub std_dev: f64,
|
pub std_dev: f64,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Default PoV size in KiB.
|
// Based on Kusama `max_validators`
|
||||||
fn default_pov_size() -> usize {
|
fn default_n_validators() -> usize {
|
||||||
5120
|
300
|
||||||
}
|
}
|
||||||
|
|
||||||
// Default bandwidth in bytes
|
// Based on Kusama cores
|
||||||
|
fn default_n_cores() -> usize {
|
||||||
|
60
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default PoV size in KiB.
|
||||||
|
fn default_pov_size() -> usize {
|
||||||
|
5 * 1024
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default bandwidth in bytes, based stats from Kusama validators
|
||||||
fn default_bandwidth() -> usize {
|
fn default_bandwidth() -> usize {
|
||||||
52428800
|
42 * 1024 * 1024
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default peer latency
|
||||||
|
fn default_peer_latency() -> Option<PeerLatency> {
|
||||||
|
Some(PeerLatency { mean_latency_ms: 30, std_dev: 2.0 })
|
||||||
}
|
}
|
||||||
|
|
||||||
// Default connectivity percentage
|
// Default connectivity percentage
|
||||||
fn default_connectivity() -> usize {
|
fn default_connectivity() -> usize {
|
||||||
100
|
90
|
||||||
}
|
}
|
||||||
|
|
||||||
// Default backing group size
|
// Default backing group size
|
||||||
@@ -63,6 +78,7 @@ fn default_needed_approvals() -> usize {
|
|||||||
fn default_zeroth_delay_tranche_width() -> usize {
|
fn default_zeroth_delay_tranche_width() -> usize {
|
||||||
0
|
0
|
||||||
}
|
}
|
||||||
|
|
||||||
fn default_relay_vrf_modulo_samples() -> usize {
|
fn default_relay_vrf_modulo_samples() -> usize {
|
||||||
6
|
6
|
||||||
}
|
}
|
||||||
@@ -78,8 +94,10 @@ fn default_no_show_slots() -> usize {
|
|||||||
#[derive(Clone, Debug, Serialize, Deserialize)]
|
#[derive(Clone, Debug, Serialize, Deserialize)]
|
||||||
pub struct TestConfiguration {
|
pub struct TestConfiguration {
|
||||||
/// Number of validators
|
/// Number of validators
|
||||||
|
#[serde(default = "default_n_validators")]
|
||||||
pub n_validators: usize,
|
pub n_validators: usize,
|
||||||
/// Number of cores
|
/// Number of cores
|
||||||
|
#[serde(default = "default_n_cores")]
|
||||||
pub n_cores: usize,
|
pub n_cores: usize,
|
||||||
/// The number of needed votes to approve a candidate.
|
/// The number of needed votes to approve a candidate.
|
||||||
#[serde(default = "default_needed_approvals")]
|
#[serde(default = "default_needed_approvals")]
|
||||||
@@ -111,10 +129,10 @@ pub struct TestConfiguration {
|
|||||||
#[serde(default = "default_bandwidth")]
|
#[serde(default = "default_bandwidth")]
|
||||||
pub bandwidth: usize,
|
pub bandwidth: usize,
|
||||||
/// Optional peer emulation latency (round trip time) wrt node under test
|
/// Optional peer emulation latency (round trip time) wrt node under test
|
||||||
#[serde(default)]
|
#[serde(default = "default_peer_latency")]
|
||||||
pub latency: Option<PeerLatency>,
|
pub latency: Option<PeerLatency>,
|
||||||
/// Connectivity ratio, the percentage of peers we are not connected to, but ar part of
|
/// Connectivity ratio, the percentage of peers we are connected to, but as part of the
|
||||||
/// the topology.
|
/// topology.
|
||||||
#[serde(default = "default_connectivity")]
|
#[serde(default = "default_connectivity")]
|
||||||
pub connectivity: usize,
|
pub connectivity: usize,
|
||||||
/// Number of blocks to run the test for
|
/// Number of blocks to run the test for
|
||||||
@@ -124,8 +142,8 @@ pub struct TestConfiguration {
|
|||||||
impl Default for TestConfiguration {
|
impl Default for TestConfiguration {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self {
|
Self {
|
||||||
n_validators: Default::default(),
|
n_validators: default_n_validators(),
|
||||||
n_cores: Default::default(),
|
n_cores: default_n_cores(),
|
||||||
needed_approvals: default_needed_approvals(),
|
needed_approvals: default_needed_approvals(),
|
||||||
zeroth_delay_tranche_width: default_zeroth_delay_tranche_width(),
|
zeroth_delay_tranche_width: default_zeroth_delay_tranche_width(),
|
||||||
relay_vrf_modulo_samples: default_relay_vrf_modulo_samples(),
|
relay_vrf_modulo_samples: default_relay_vrf_modulo_samples(),
|
||||||
@@ -137,7 +155,7 @@ impl Default for TestConfiguration {
|
|||||||
pov_sizes: Default::default(),
|
pov_sizes: Default::default(),
|
||||||
peer_bandwidth: default_bandwidth(),
|
peer_bandwidth: default_bandwidth(),
|
||||||
bandwidth: default_bandwidth(),
|
bandwidth: default_bandwidth(),
|
||||||
latency: Default::default(),
|
latency: default_peer_latency(),
|
||||||
connectivity: default_connectivity(),
|
connectivity: default_connectivity(),
|
||||||
num_blocks: Default::default(),
|
num_blocks: Default::default(),
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user