Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[test] baseline #15493

Draft
wants to merge 31 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 27 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
74559a2
opt proposal
danielxiangzl Nov 22, 2024
016ab97
test
Nov 19, 2024
5c3fd36
disable CO and precommit
danielxiangzl Dec 4, 2024
4d225ae
150 nodes
danielxiangzl Dec 4, 2024
64de81f
don't be paranoid
danielxiangzl Dec 7, 2024
b02d907
scale down
danielxiangzl Dec 7, 2024
f7fdcd7
more fns
danielxiangzl Dec 10, 2024
ba846f3
scale down
danielxiangzl Dec 10, 2024
d62129d
Fix txn-emitter precission of worker sleeping
igor-aptos Dec 10, 2024
2b57207
more FNs
danielxiangzl Dec 10, 2024
c3b9bf9
Merge branch 'main' into daniel-baseline
danielxiangzl Dec 10, 2024
376054b
multiregion cluster support
ibalajiarun Dec 11, 2024
a902721
small test
danielxiangzl Dec 11, 2024
1942f72
multiregion cluster large genesis support
ibalajiarun Dec 12, 2024
296d009
fix internal image tag
ibalajiarun Dec 12, 2024
0e92d03
update internal image tag
ibalajiarun Dec 12, 2024
bc1e7ca
qs configs
danielxiangzl Dec 14, 2024
632792c
disable failover
danielxiangzl Dec 14, 2024
3597dd0
test more tps
danielxiangzl Dec 14, 2024
461b5bf
Update testsuite/forge/src/backend/k8s/cluster_helper.rs
danielxiangzl Dec 17, 2024
d7d4a34
Update testsuite/forge/src/backend/k8s/cluster_helper.rs
danielxiangzl Dec 17, 2024
c36c6b1
tps
danielxiangzl Dec 17, 2024
c495ac9
tps
danielxiangzl Dec 17, 2024
0a068ab
execution syncing
danielxiangzl Dec 17, 2024
d4c78ad
bigger block size
danielxiangzl Dec 19, 2024
174562d
bigger block
danielxiangzl Dec 20, 2024
cb4008f
tps
danielxiangzl Dec 20, 2024
de9a498
Update testsuite/forge/src/backend/k8s/cluster_helper.rs
danielxiangzl Dec 20, 2024
c03f2c2
Update testsuite/forge-cli/src/suites/realistic_environment.rs
danielxiangzl Dec 20, 2024
cc7eeb5
Update testsuite/forge-cli/src/suites/realistic_environment.rs
danielxiangzl Dec 20, 2024
d997889
48 threads for execution
danielxiangzl Dec 21, 2024
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
227 changes: 115 additions & 112 deletions config/src/config/consensus_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ use serde::{Deserialize, Serialize};
use std::path::PathBuf;

// NOTE: when changing, make sure to update QuorumStoreBackPressureConfig::backlog_txn_limit_count as well.
const MAX_SENDING_BLOCK_TXNS_AFTER_FILTERING: u64 = 3000;
const MAX_SENDING_BLOCK_TXNS: u64 = 7000;
const MAX_SENDING_BLOCK_TXNS_AFTER_FILTERING: u64 = 10000;
const MAX_SENDING_BLOCK_TXNS: u64 = 25000;
pub(crate) static MAX_RECEIVING_BLOCK_TXNS: Lazy<u64> =
Lazy::new(|| 10000.max(2 * MAX_SENDING_BLOCK_TXNS));
// stop reducing size at this point, so 1MB transactions can still go through
Expand Down Expand Up @@ -194,116 +194,119 @@ impl Default for ConsensusConfig {
// in the pipline very low, we can keep this limit pretty low, too.
vote_back_pressure_limit: 7,
min_max_txns_in_block_after_filtering_from_backpressure: MIN_BLOCK_TXNS_AFTER_FILTERING,
execution_backpressure: Some(ExecutionBackpressureConfig {
num_blocks_to_look_at: 12,
min_blocks_to_activate: 4,
percentile: 0.5,
target_block_time_ms: 250,
min_block_time_ms_to_activate: 100,
// allow at least two spreading group from reordering in a single block, to utilize paralellism
min_calibrated_txns_per_block: 8,
}),
pipeline_backpressure: vec![
PipelineBackpressureValues {
// pipeline_latency looks how long has the oldest block still in pipeline
// been in the pipeline.
// Block enters the pipeline after consensus orders it, and leaves the
// pipeline once quorum on execution result among validators has been reached
// (so-(badly)-called "commit certificate"), meaning 2f+1 validators have finished execution.
back_pressure_pipeline_latency_limit_ms: 1200,
max_sending_block_txns_after_filtering_override:
MAX_SENDING_BLOCK_TXNS_AFTER_FILTERING,
max_sending_block_bytes_override: 5 * 1024 * 1024,
backpressure_proposal_delay_ms: 50,
},
PipelineBackpressureValues {
back_pressure_pipeline_latency_limit_ms: 1500,
max_sending_block_txns_after_filtering_override:
MAX_SENDING_BLOCK_TXNS_AFTER_FILTERING,
max_sending_block_bytes_override: 5 * 1024 * 1024,
backpressure_proposal_delay_ms: 100,
},
PipelineBackpressureValues {
back_pressure_pipeline_latency_limit_ms: 1900,
max_sending_block_txns_after_filtering_override:
MAX_SENDING_BLOCK_TXNS_AFTER_FILTERING,
max_sending_block_bytes_override: 5 * 1024 * 1024,
backpressure_proposal_delay_ms: 200,
},
// with execution backpressure, only later start reducing block size
PipelineBackpressureValues {
back_pressure_pipeline_latency_limit_ms: 2500,
max_sending_block_txns_after_filtering_override: 1000,
max_sending_block_bytes_override: MIN_BLOCK_BYTES_OVERRIDE,
backpressure_proposal_delay_ms: 300,
},
PipelineBackpressureValues {
back_pressure_pipeline_latency_limit_ms: 3500,
max_sending_block_txns_after_filtering_override: 200,
max_sending_block_bytes_override: MIN_BLOCK_BYTES_OVERRIDE,
backpressure_proposal_delay_ms: 300,
},
PipelineBackpressureValues {
back_pressure_pipeline_latency_limit_ms: 4500,
max_sending_block_txns_after_filtering_override: 30,
max_sending_block_bytes_override: MIN_BLOCK_BYTES_OVERRIDE,
backpressure_proposal_delay_ms: 300,
},
PipelineBackpressureValues {
back_pressure_pipeline_latency_limit_ms: 6000,
// in practice, latencies and delay make it such that ~2 blocks/s is max,
// meaning that most aggressively we limit to ~10 TPS
// For transactions that are more expensive than that, we should
// instead rely on max gas per block to limit latency.
max_sending_block_txns_after_filtering_override: 5,
max_sending_block_bytes_override: MIN_BLOCK_BYTES_OVERRIDE,
backpressure_proposal_delay_ms: 300,
},
],
// execution_backpressure: Some(ExecutionBackpressureConfig {
// num_blocks_to_look_at: 20,
// min_blocks_to_activate: 4,
// percentile: 0.5,
// target_block_time_ms: 200,
// min_block_time_ms_to_activate: 100,
// // allow at least two spreading group from reordering in a single block, to utilize paralellism
// min_calibrated_txns_per_block: 8,
// }),
execution_backpressure: None,
pipeline_backpressure: vec![],
// vec![
// PipelineBackpressureValues {
// // pipeline_latency looks how long has the oldest block still in pipeline
// // been in the pipeline.
// // Block enters the pipeline after consensus orders it, and leaves the
// // pipeline once quorum on execution result among validators has been reached
// // (so-(badly)-called "commit certificate"), meaning 2f+1 validators have finished execution.
// back_pressure_pipeline_latency_limit_ms: 1200,
// max_sending_block_txns_after_filtering_override:
// MAX_SENDING_BLOCK_TXNS_AFTER_FILTERING,
// max_sending_block_bytes_override: 5 * 1024 * 1024,
// backpressure_proposal_delay_ms: 50,
// },
// PipelineBackpressureValues {
// back_pressure_pipeline_latency_limit_ms: 1500,
// max_sending_block_txns_after_filtering_override:
// MAX_SENDING_BLOCK_TXNS_AFTER_FILTERING,
// max_sending_block_bytes_override: 5 * 1024 * 1024,
// backpressure_proposal_delay_ms: 100,
// },
// PipelineBackpressureValues {
// back_pressure_pipeline_latency_limit_ms: 1900,
// max_sending_block_txns_after_filtering_override:
// MAX_SENDING_BLOCK_TXNS_AFTER_FILTERING,
// max_sending_block_bytes_override: 5 * 1024 * 1024,
// backpressure_proposal_delay_ms: 200,
// },
// // with execution backpressure, only later start reducing block size
// PipelineBackpressureValues {
// back_pressure_pipeline_latency_limit_ms: 2500,
// max_sending_block_txns_after_filtering_override: 1000,
// max_sending_block_bytes_override: MIN_BLOCK_BYTES_OVERRIDE,
// backpressure_proposal_delay_ms: 300,
// },
// PipelineBackpressureValues {
// back_pressure_pipeline_latency_limit_ms: 3500,
// max_sending_block_txns_after_filtering_override: 200,
// max_sending_block_bytes_override: MIN_BLOCK_BYTES_OVERRIDE,
// backpressure_proposal_delay_ms: 300,
// },
// PipelineBackpressureValues {
// back_pressure_pipeline_latency_limit_ms: 4500,
// max_sending_block_txns_after_filtering_override: 30,
// max_sending_block_bytes_override: MIN_BLOCK_BYTES_OVERRIDE,
// backpressure_proposal_delay_ms: 300,
// },
// PipelineBackpressureValues {
// back_pressure_pipeline_latency_limit_ms: 6000,
// // in practice, latencies and delay make it such that ~2 blocks/s is max,
// // meaning that most aggressively we limit to ~10 TPS
// // For transactions that are more expensive than that, we should
// // instead rely on max gas per block to limit latency.
// max_sending_block_txns_after_filtering_override: 5,
// max_sending_block_bytes_override: MIN_BLOCK_BYTES_OVERRIDE,
// backpressure_proposal_delay_ms: 300,
// },
// ],
window_for_chain_health: 100,
chain_health_backoff: vec![
ChainHealthBackoffValues {
backoff_if_below_participating_voting_power_percentage: 80,
max_sending_block_txns_after_filtering_override:
MAX_SENDING_BLOCK_TXNS_AFTER_FILTERING,
max_sending_block_bytes_override: 5 * 1024 * 1024,
backoff_proposal_delay_ms: 150,
},
ChainHealthBackoffValues {
backoff_if_below_participating_voting_power_percentage: 78,
max_sending_block_txns_after_filtering_override: 2000,
max_sending_block_bytes_override: MIN_BLOCK_BYTES_OVERRIDE,
backoff_proposal_delay_ms: 300,
},
ChainHealthBackoffValues {
backoff_if_below_participating_voting_power_percentage: 76,
max_sending_block_txns_after_filtering_override: 500,
max_sending_block_bytes_override: MIN_BLOCK_BYTES_OVERRIDE,
backoff_proposal_delay_ms: 300,
},
ChainHealthBackoffValues {
backoff_if_below_participating_voting_power_percentage: 74,
max_sending_block_txns_after_filtering_override: 100,
max_sending_block_bytes_override: MIN_BLOCK_BYTES_OVERRIDE,
backoff_proposal_delay_ms: 300,
},
ChainHealthBackoffValues {
backoff_if_below_participating_voting_power_percentage: 72,
max_sending_block_txns_after_filtering_override: 25,
max_sending_block_bytes_override: MIN_BLOCK_BYTES_OVERRIDE,
backoff_proposal_delay_ms: 300,
},
ChainHealthBackoffValues {
backoff_if_below_participating_voting_power_percentage: 70,
// in practice, latencies and delay make it such that ~2 blocks/s is max,
// meaning that most aggressively we limit to ~10 TPS
// For transactions that are more expensive than that, we should
// instead rely on max gas per block to limit latency.
max_sending_block_txns_after_filtering_override: 5,
max_sending_block_bytes_override: MIN_BLOCK_BYTES_OVERRIDE,
backoff_proposal_delay_ms: 300,
},
],
chain_health_backoff: vec![],
// vec![
// ChainHealthBackoffValues {
// backoff_if_below_participating_voting_power_percentage: 80,
// max_sending_block_txns_after_filtering_override:
// MAX_SENDING_BLOCK_TXNS_AFTER_FILTERING,
// max_sending_block_bytes_override: 5 * 1024 * 1024,
// backoff_proposal_delay_ms: 150,
// },
// ChainHealthBackoffValues {
// backoff_if_below_participating_voting_power_percentage: 78,
// max_sending_block_txns_after_filtering_override: 2000,
// max_sending_block_bytes_override: MIN_BLOCK_BYTES_OVERRIDE,
// backoff_proposal_delay_ms: 300,
// },
// ChainHealthBackoffValues {
// backoff_if_below_participating_voting_power_percentage: 76,
// max_sending_block_txns_after_filtering_override: 500,
// max_sending_block_bytes_override: MIN_BLOCK_BYTES_OVERRIDE,
// backoff_proposal_delay_ms: 300,
// },
// ChainHealthBackoffValues {
// backoff_if_below_participating_voting_power_percentage: 74,
// max_sending_block_txns_after_filtering_override: 100,
// max_sending_block_bytes_override: MIN_BLOCK_BYTES_OVERRIDE,
// backoff_proposal_delay_ms: 300,
// },
// ChainHealthBackoffValues {
// backoff_if_below_participating_voting_power_percentage: 72,
// max_sending_block_txns_after_filtering_override: 25,
// max_sending_block_bytes_override: MIN_BLOCK_BYTES_OVERRIDE,
// backoff_proposal_delay_ms: 300,
// },
// ChainHealthBackoffValues {
// backoff_if_below_participating_voting_power_percentage: 70,
// // in practice, latencies and delay make it such that ~2 blocks/s is max,
// // meaning that most aggressively we limit to ~10 TPS
// // For transactions that are more expensive than that, we should
// // instead rely on max gas per block to limit latency.
// max_sending_block_txns_after_filtering_override: 5,
// max_sending_block_bytes_override: MIN_BLOCK_BYTES_OVERRIDE,
// backoff_proposal_delay_ms: 300,
// },
// ],
qc_aggregator_type: QcAggregatorType::default(),
// This needs to fit into the network message size, so with quorum store it can be much bigger
max_blocks_per_sending_request: 10,
Expand All @@ -320,7 +323,7 @@ impl Default for ConsensusConfig {
rpc_timeout_ms: 10000,
},
num_bounded_executor_tasks: 16,
enable_pre_commit: true,
enable_pre_commit: false,
max_pending_rounds_in_commit_vote_cache: 100,
optimistic_sig_verification: true,
enable_round_timeout_msg: true,
Expand Down
4 changes: 2 additions & 2 deletions config/src/config/consensus_observer_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ use serde::{Deserialize, Serialize};
use serde_yaml::Value;

// Useful constants for enabling consensus observer on different node types
const ENABLE_ON_VALIDATORS: bool = true;
const ENABLE_ON_VALIDATOR_FULLNODES: bool = true;
const ENABLE_ON_VALIDATORS: bool = false;
const ENABLE_ON_VALIDATOR_FULLNODES: bool = false;
const ENABLE_ON_PUBLIC_FULLNODES: bool = false;

#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Serialize)]
Expand Down
2 changes: 1 addition & 1 deletion config/src/config/execution_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ impl Default for ExecutionConfig {
// use min of (num of cores/2, DEFAULT_CONCURRENCY_LEVEL) as default concurrency level
concurrency_level: 0,
num_proof_reading_threads: 32,
paranoid_type_verification: true,
paranoid_type_verification: false,
paranoid_hot_potato_verification: true,
discard_failed_blocks: false,
processed_transactions_detailed_counters: false,
Expand Down
2 changes: 1 addition & 1 deletion config/src/config/mempool_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ impl Default for MempoolConfig {
capacity: 2_000_000,
capacity_bytes: 2 * 1024 * 1024 * 1024,
capacity_per_user: 100,
default_failovers: 1,
default_failovers: 0,
enable_intelligent_peer_prioritization: true,
shared_mempool_peer_update_interval_ms: 1_000,
shared_mempool_priority_update_interval_secs: 600, // 10 minutes (frequent reprioritization is expensive)
Expand Down
6 changes: 3 additions & 3 deletions config/src/config/quorum_store_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ impl Default for QuorumStoreBackPressureConfig {
decrease_duration_ms: 1000,
increase_duration_ms: 1000,
decrease_fraction: 0.5,
dynamic_min_txn_per_s: 160,
dynamic_min_txn_per_s: 10000,
dynamic_max_txn_per_s: 12000,
// When the QS is no longer backpressured, we increase number of txns to be pulled from mempool
// by this amount every second until we reach dynamic_max_txn_per_s
Expand Down Expand Up @@ -106,7 +106,7 @@ impl Default for QuorumStoreConfig {
channel_size: 1000,
proof_timeout_ms: 10000,
batch_generation_poll_interval_ms: 25,
batch_generation_min_non_empty_interval_ms: 100,
batch_generation_min_non_empty_interval_ms: 200,
batch_generation_max_interval_ms: 250,
sender_max_batch_txns: DEFEAULT_MAX_BATCH_TXNS,
// TODO: on next release, remove BATCH_PADDING_BYTES
Expand Down Expand Up @@ -136,7 +136,7 @@ impl Default for QuorumStoreConfig {
num_workers_for_remote_batches: 10,
batch_buckets: DEFAULT_BUCKETS.to_vec(),
allow_batches_without_pos_in_proposal: true,
enable_opt_quorum_store: false,
enable_opt_quorum_store: true,
opt_qs_minimum_batch_age_usecs: Duration::from_millis(20).as_micros() as u64,
}
}
Expand Down
2 changes: 1 addition & 1 deletion config/src/config/state_sync_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ pub struct StateSyncDriverConfig {
impl Default for StateSyncDriverConfig {
fn default() -> Self {
Self {
bootstrapping_mode: BootstrappingMode::ExecuteOrApplyFromGenesis,
bootstrapping_mode: BootstrappingMode::ExecuteTransactionsFromGenesis,
commit_notification_timeout_ms: 5000,
continuous_syncing_mode: ContinuousSyncingMode::ExecuteTransactionsOrApplyOutputs,
enable_auto_bootstrapping: false,
Expand Down
Loading
Loading