Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
120 commits
Select commit Hold shift + click to select a range
888f294
50k conns?
transmissions11 Jul 19, 2025
9772d51
rm: json parsing on testserver
transmissions11 Jul 19, 2025
29759bc
huge backlog
transmissions11 Jul 19, 2025
77431ee
allow get
transmissions11 Jul 19, 2025
2bb7ba5
log concurrent
transmissions11 Jul 19, 2025
40cf330
limit to 1 worker
transmissions11 Jul 19, 2025
a090358
50 workers
transmissions11 Jul 19, 2025
361b675
feat: hyper
transmissions11 Jul 19, 2025
0cb8886
fix?
transmissions11 Jul 19, 2025
5fe5ff0
actix -> axum
transmissions11 Jul 19, 2025
9a131d7
Update main.rs
transmissions11 Jul 19, 2025
5d50ac7
rm batch factor
transmissions11 Jul 19, 2025
f842210
3 second measurement interval
transmissions11 Jul 19, 2025
b295b55
Update main.rs
transmissions11 Jul 19, 2025
d7144e6
worker id
transmissions11 Jul 19, 2025
ee32820
request durr
transmissions11 Jul 19, 2025
ddd58f2
fix: workers
transmissions11 Jul 19, 2025
a88f544
Update network.rs
transmissions11 Jul 19, 2025
a790730
fix ids
transmissions11 Jul 20, 2025
4182948
feat: implied total rps
transmissions11 Jul 20, 2025
51573a6
Update network.rs
transmissions11 Jul 20, 2025
f53cf9b
Update network.rs
transmissions11 Jul 20, 2025
7874e2d
Create genesis.json
transmissions11 Jul 20, 2025
0804ba8
genalloc
transmissions11 Jul 20, 2025
6ed267e
25k
transmissions11 Jul 20, 2025
77dff63
start reth
transmissions11 Jul 20, 2025
ed2af20
50k again?
transmissions11 Jul 20, 2025
4d0a616
wip: try one of 10k addrs
transmissions11 Jul 20, 2025
59805d4
even workers
transmissions11 Jul 20, 2025
1f3234b
20k conns
transmissions11 Jul 20, 2025
a8c8176
Update main.rs
transmissions11 Jul 20, 2025
2407ab6
back to 20 acc
transmissions11 Jul 20, 2025
c26a9d3
100 accounts
transmissions11 Jul 20, 2025
a00726e
100 acc
transmissions11 Jul 20, 2025
21a1ce4
2500 accounts
transmissions11 Jul 20, 2025
b56b53d
oops fix tx queue reporting
transmissions11 Jul 20, 2025
76ebc2f
feat: rand addr
transmissions11 Jul 20, 2025
2a6c53a
500 accounts
transmissions11 Jul 20, 2025
93a63ec
use existing people, log
transmissions11 Jul 21, 2025
73e1f4c
allow dead code
transmissions11 Jul 21, 2025
f5177ea
Update tx_gen.rs
transmissions11 Jul 21, 2025
5fb3e85
lawging
transmissions11 Jul 21, 2025
0556336
hrmf
transmissions11 Jul 21, 2025
12ff095
1k accs
transmissions11 Jul 21, 2025
ca4cbe8
10k accounts
transmissions11 Jul 21, 2025
f70736a
wip: startup delay
transmissions11 Jul 21, 2025
580c48d
Update tx_queue.rs
transmissions11 Jul 21, 2025
315a841
Update tx_queue.rs
transmissions11 Jul 21, 2025
919de6a
log
transmissions11 Jul 21, 2025
84db517
moar thresholds
transmissions11 Jul 21, 2025
a0c0fe9
Update tx_queue.rs
transmissions11 Jul 21, 2025
af2303e
feat: rayonify
transmissions11 Jul 21, 2025
fcac70b
Update tx_gen.rs
transmissions11 Jul 21, 2025
34ec48c
50k connections?
transmissions11 Jul 21, 2025
d7d51ee
Revert "50k connections?"
transmissions11 Jul 21, 2025
eb7dde6
log rayon thread pool size
transmissions11 Jul 21, 2025
a37e867
Update tx_gen.rs
transmissions11 Jul 21, 2025
19f66b4
Initialize Rayon with explicit thread count.
transmissions11 Jul 21, 2025
5c42e43
Update tx_gen.rs
transmissions11 Jul 21, 2025
a5cf86c
Update tx_gen.rs
transmissions11 Jul 21, 2025
acd7bd4
feat: alternate ratelimit system
transmissions11 Jul 21, 2025
4ccd65a
Update tx_queue.rs
transmissions11 Jul 21, 2025
cab7c9d
Update tx_queue.rs
transmissions11 Jul 21, 2025
6bd1815
Update tx_queue.rs
transmissions11 Jul 21, 2025
3c32484
Update tx_queue.rs
transmissions11 Jul 21, 2025
18db727
Update tx_queue.rs
transmissions11 Jul 21, 2025
e152c8a
hm
transmissions11 Jul 21, 2025
94296a2
thresholds
transmissions11 Jul 21, 2025
b120def
Update tx_queue.rs
transmissions11 Jul 21, 2025
0359dfb
Update tx_queue.rs
transmissions11 Jul 21, 2025
8ee978c
Update tx_queue.rs
transmissions11 Jul 21, 2025
5a70b25
thresholds
transmissions11 Jul 21, 2025
c773e29
Update tx_queue.rs
transmissions11 Jul 21, 2025
91b0fb0
fewer socket conns
transmissions11 Jul 21, 2025
3b9f04e
10k connections
transmissions11 Jul 21, 2025
7e5d8ca
50k RPS?
transmissions11 Jul 21, 2025
9ad902b
feat: longer ramp
transmissions11 Jul 21, 2025
5c2ad33
35k rps?
transmissions11 Jul 21, 2025
67c8ab7
Update tx_queue.rs
transmissions11 Jul 21, 2025
dd6c9a8
25k
transmissions11 Jul 21, 2025
c17dfc7
Update start-reth.sh
transmissions11 Jul 21, 2025
39ef5f0
Update genesis.json
transmissions11 Jul 21, 2025
51d09c2
Update start-reth.sh
transmissions11 Jul 21, 2025
89da805
batch factor of 5
transmissions11 Jul 21, 2025
4de365f
fix: implied rps
transmissions11 Jul 21, 2025
683103a
disable batching
transmissions11 Jul 21, 2025
cf4bd59
feat: even slower ramp up
transmissions11 Jul 21, 2025
ee482ae
slightly faster
transmissions11 Jul 21, 2025
e28633d
feat: 50k genesis
transmissions11 Jul 22, 2025
10612b3
feat: better ramp
transmissions11 Jul 22, 2025
79043b9
oops
transmissions11 Jul 22, 2025
bce8fa2
worker ratio
transmissions11 Jul 22, 2025
4af668c
feat: pareto distribute recipients
transmissions11 Jul 22, 2025
fe1dd7c
Update tx_gen.rs
transmissions11 Jul 22, 2025
5120e07
Empty the rate limiter.
transmissions11 Jul 22, 2025
6b391fc
feat: empty rate limiter before AND after
transmissions11 Jul 22, 2025
e4e9879
wip: can we remove first set avail?
transmissions11 Jul 22, 2025
51d7116
15k tps
transmissions11 Jul 22, 2025
92b4d4f
20k?
transmissions11 Jul 22, 2025
856b9c4
15k again
transmissions11 Jul 22, 2025
9752bbc
feat: ramp up faster
transmissions11 Jul 22, 2025
5c8d33f
even faster
transmissions11 Jul 22, 2025
963441f
faster!
transmissions11 Jul 22, 2025
5c67176
Merge branch 'main' into dev
transmissions11 Jul 22, 2025
ca8aae7
feat: erc20 precompile testing
transmissions11 Jul 22, 2025
711c6c8
fix: bytes
transmissions11 Jul 22, 2025
765fa08
Update tx_gen.rs
transmissions11 Jul 22, 2025
39fe40f
lower limit
transmissions11 Jul 22, 2025
24e4b1d
erc20 regular spam
transmissions11 Jul 22, 2025
42e4c75
15k>
transmissions11 Jul 22, 2025
a20ad12
HIGH
transmissions11 Jul 22, 2025
9fe72ff
Update tx_queue.rs
transmissions11 Jul 22, 2025
ca12462
precompile
transmissions11 Jul 22, 2025
f826373
Update tx_queue.rs
transmissions11 Jul 22, 2025
862b731
Merge branch 'main' into dev
transmissions11 Jul 22, 2025
e2ee926
Merge branch 'main' into dev
transmissions11 Jul 22, 2025
beea55e
feat: config
transmissions11 Jul 22, 2025
85feead
fix config headers
transmissions11 Jul 22, 2025
47ca7c7
u64 gas price
transmissions11 Jul 22, 2025
85e9c3f
Update default.toml
transmissions11 Jul 22, 2025
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
149 changes: 149 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

49 changes: 49 additions & 0 deletions configs/default.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
[network_worker]
target_url = "http://127.0.0.1:8545"
total_connections = 10_000 # Limited by # of ephemeral ports.

batch_factor = 1

error_sleep_ms = 100
tx_queue_empty_sleep_ms = 25

[tx_gen_worker]
chain_id = 1337
num_accounts = 25_000 # Limited by the number in the genesis (see generate_genesis_alloc.rs)

token_contract_address = "0x2000000000000000000000000000000000000001"

gas_price = 100000000000 # 100 gwei
gas_limit = 100_000

mnemonic = "test test test test test test test test test test test junk"

recipient_distribution_factor = 20 # 1/20 of accounts receive transfers.
max_transfer_amount = 10

[rate_limiting]
initial_ratelimit = 100 # txs/s

# Rate limit thresholds: [(threshold, rate_limit)]
# threshold = number of transactions sent
# rate_limit = new transactions per second limit
ratelimit_thresholds = [
[1_562, 250], # NUM_ACCOUNTS / 16
[3_125, 500], # NUM_ACCOUNTS / 8
[25_000, 1_000], # NUM_ACCOUNTS
[50_000, 2_500], # NUM_ACCOUNTS * 2
[100_000, 5_000], # NUM_ACCOUNTS * 4
[200_000, 7_500], # NUM_ACCOUNTS * 8
[250_000, 12_500], # NUM_ACCOUNTS * 10
[300_000, 15_000], # NUM_ACCOUNTS * 12
]

[workers]
thread_pinning = true

tx_gen_worker_percentage = 0.1
network_worker_percentage = 0.9

[reporters]
tx_queue_report_interval_secs = 3
network_stats_report_interval_secs = 3
4 changes: 3 additions & 1 deletion crescendo/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,6 @@ serde_json = "1.0"
hex = "0.4"
simple-tqdm = { version = "0.2.0", features = ["rayon"] }
rand = "0.9.1"
ratelimit = "0.10"
ratelimit = "0.10"
clap = { version = "4.5", features = ["derive", "env"] }
toml = "0.8"
81 changes: 81 additions & 0 deletions crescendo/src/config.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
use std::path::PathBuf;
use std::sync::OnceLock;

use serde::{Deserialize, Serialize};

/// Global configuration instance for the application.
static CONFIG_INSTANCE: OnceLock<Config> = OnceLock::new();

/// Initialize the global configuration instance.
pub fn init(config: Config) {
CONFIG_INSTANCE.set(config).unwrap();
}

/// Gets the global configuration instance's value,
/// blocking until initialized if necessary.
pub fn get() -> &'static Config {
CONFIG_INSTANCE.wait()
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Config {
pub tx_gen_worker: TxGenWorkerConfig,
pub network_worker: NetworkWorkerConfig,
pub rate_limiting: RateLimitingConfig,

pub workers: WorkersConfig,
pub reporters: ReportersConfig,
}

impl Config {
pub fn from_file(path: &PathBuf) -> Result<Self, Box<dyn std::error::Error>> {
let config_str = std::fs::read_to_string(path)?;
let config: Config = toml::from_str(&config_str)?;
Ok(config)
}
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NetworkWorkerConfig {
pub target_url: String,
pub total_connections: u64,

pub batch_factor: usize,

pub error_sleep_ms: u64,
pub tx_queue_empty_sleep_ms: u64,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TxGenWorkerConfig {
pub chain_id: u64,

pub mnemonic: String,
pub num_accounts: u32,

pub gas_price: u64,
pub gas_limit: u64,

pub token_contract_address: String,
pub recipient_distribution_factor: u32,
pub max_transfer_amount: u64,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RateLimitingConfig {
pub initial_ratelimit: u64,
pub ratelimit_thresholds: Vec<(u32, u64)>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WorkersConfig {
pub thread_pinning: bool,
pub tx_gen_worker_percentage: f64,
pub network_worker_percentage: f64,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReportersConfig {
pub tx_queue_report_interval_secs: u64,
pub network_stats_report_interval_secs: u64,
}
Loading
Loading