diff --git a/templates/keynote-2/DEVELOP.md b/templates/keynote-2/DEVELOP.md index 3c1c5b83783..1451abafe7d 100644 --- a/templates/keynote-2/DEVELOP.md +++ b/templates/keynote-2/DEVELOP.md @@ -193,7 +193,7 @@ From `src/cli.ts`: - **`--alpha A`** - Zipf α parameter for account selection (hot vs cold distribution) - - Default: `0.5` + - Default: `1.5` - **`--connectors list`** - Optional, comma-separated list of connector `system` names diff --git a/templates/keynote-2/README.md b/templates/keynote-2/README.md index f4603a3982d..4af1b9ace47 100644 --- a/templates/keynote-2/README.md +++ b/templates/keynote-2/README.md @@ -195,7 +195,7 @@ docker compose up -d pg crdb npm run prep # Run benchmark -npm run bench -- --seconds 10 --concurrency 50 --alpha 0 --connectors spacetimedb,postgres_rpc,sqlite_rpc +npm run bench -- --seconds 10 --concurrency 50 --alpha 1.5 --connectors spacetimedb,postgres_rpc,sqlite_rpc ``` ## Output diff --git a/templates/keynote-2/docker-compose-linux-raid-crdb.yml b/templates/keynote-2/docker-compose-linux-raid-crdb.yml index 3e0053aed6e..f41210721c5 100644 --- a/templates/keynote-2/docker-compose-linux-raid-crdb.yml +++ b/templates/keynote-2/docker-compose-linux-raid-crdb.yml @@ -194,7 +194,7 @@ volumes: - /mnt/local-ssd/sqlite_data:/data - ./runs:/app/runs - command: ["--seconds", "5", "--concurrency", "50", "--alpha", "1", "--connectors", "sqlite"] + command: ["--seconds", "5", "--concurrency", "50", "--alpha", "1.5", "--connectors", "sqlite"] network_mode: host sqlite-seed: diff --git a/templates/keynote-2/docker-compose-linux-raid.yml b/templates/keynote-2/docker-compose-linux-raid.yml index f67ad919078..fc1f9371594 100644 --- a/templates/keynote-2/docker-compose-linux-raid.yml +++ b/templates/keynote-2/docker-compose-linux-raid.yml @@ -315,7 +315,7 @@ volumes: - /mnt/local-ssd/sqlite_data:/data - ./runs:/app/runs - command: ["--seconds", "5", "--concurrency", "50", "--alpha", "1", "--connectors", "sqlite"] + command: ["--seconds", "5", "--concurrency", "50", "--alpha", "1.5", "--connectors", "sqlite"] network_mode: host sqlite-seed: diff --git a/templates/keynote-2/docker-compose.yml b/templates/keynote-2/docker-compose.yml index a20879ed977..aab6734c923 100644 --- a/templates/keynote-2/docker-compose.yml +++ b/templates/keynote-2/docker-compose.yml @@ -276,7 +276,7 @@ volumes: - sqlite_data:/data - ./runs:/app/runs - command: ["--seconds", "5", "--concurrency", "50", "--alpha", "1", "--connectors", "sqlite"] + command: ["--seconds", "5", "--concurrency", "50", "--alpha", "1.5", "--connectors", "sqlite"] network_mode: host sqlite-seed: diff --git a/templates/keynote-2/spacetimedb-rust-client/src/main.rs b/templates/keynote-2/spacetimedb-rust-client/src/main.rs index dfb430608e6..05aa572b844 100644 --- a/templates/keynote-2/spacetimedb-rust-client/src/main.rs +++ b/templates/keynote-2/spacetimedb-rust-client/src/main.rs @@ -21,13 +21,12 @@ const LOCALHOST: &str = "http://localhost:3000"; const MODULE: &str = "sim"; const DURATION: &str = "5s"; -const WARMUP_DURATION: &str = "5s"; -const ALPHA: f32 = 0.5; +const ALPHA: f32 = 1.5; const CONNECTIONS: usize = 10; const INIT_BALANCE: i64 = 1_000_000; const AMOUNT: u32 = 1; const ACCOUNTS: u32 = 100_000; -const CONFIRMED_READS: bool = false; +const CONFIRMED_READS: bool = true; // Max inflight reducer calls imposed by the server. const MAX_INFLIGHT_REDUCERS: u64 = 16384; @@ -139,9 +138,11 @@ fn bench(cli: &Common, bench: &Bench) { println!(); } - // Parse the durations. + // Parse the duration. let duration = parse_duration(&bench.duration).expect("invalid duration passed"); - let warmup_duration = parse_duration(&bench.warmup_duration).expect("invalid warmup duration passed"); + if !cli.quiet { + eprintln!("benchmarking for {}...", format_duration(duration)); + } // Initialize connections. let connections = bench.connections; @@ -160,15 +161,10 @@ fn bench(cli: &Common, bench: &Bench) { let transfer_pairs = &make_transfers(accounts, alpha); let transfers_per_worker = transfer_pairs.len() / conns.len(); - let warmup_start_all = Instant::now(); - let mut start_all = warmup_start_all; - let barrier = &std::sync::Barrier::new(conns.len()); + let mut start_all = Instant::now(); let completed = Arc::new(AtomicU64::default()); thread::scope(|scope| { - if !cli.quiet { - eprintln!("warming up for {}...", format_duration(warmup_duration)); - } let mut start_all = Some(&mut start_all); for (worker_idx, (mut rx, tx)) in conns.into_iter().enumerate() { let completed = completed.clone(); @@ -214,14 +210,6 @@ fn bench(cli: &Common, bench: &Bench) { transfers }; - while warmup_start_all.elapsed() < warmup_duration { - run(); - } - - if barrier.wait().is_leader() && !cli.quiet { - eprintln!("finished warmup..."); - eprintln!("benchmarking for {}...", format_duration(duration)); - } let start = Instant::now(); if let Some(start_all) = start_all { *start_all = start; @@ -315,9 +303,6 @@ struct Bench { #[arg(short, long, default_value = DURATION)] duration: String, - #[arg(short, long, default_value = WARMUP_DURATION)] - warmup_duration: String, - #[arg(short, long)] tps_write_path: Option, } diff --git a/templates/keynote-2/src/cli.ts b/templates/keynote-2/src/cli.ts index 3b1a26ec936..0ce7ea5721b 100644 --- a/templates/keynote-2/src/cli.ts +++ b/templates/keynote-2/src/cli.ts @@ -22,7 +22,7 @@ let seconds = 1, accounts = process.env.SEED_ACCOUNTS ? Number(process.env.SEED_ACCOUNTS) : 100_000, - alpha = 0.5, + alpha = 1.5, connectors: string[] | null = null, contentionTests: { startAlpha: number; @@ -173,7 +173,7 @@ class BenchmarkTester { startConc: number = 1, endConc: number = 100, step: number = 1, - alpha: number = 1, + alpha: number = 1.5, ) { const results: { concurrency: number; avgResult: RunResult }[] = []; for (let conc = startConc; conc <= endConc; conc += step) { @@ -189,7 +189,7 @@ class BenchmarkTester { startConc: number = 1, endConc: number = 100, factor: number = 2, - alpha: number = 1, + alpha: number = 1.5, ) { if (factor <= 1) { throw new Error('factor must be > 1 to avoid infinite loop'); diff --git a/templates/keynote-2/src/demo.ts b/templates/keynote-2/src/demo.ts index 7a4a27e61d5..099bd974b55 100644 --- a/templates/keynote-2/src/demo.ts +++ b/templates/keynote-2/src/demo.ts @@ -71,7 +71,7 @@ function hasFlag(name: string): boolean { const seconds = getArg('seconds', 10); const concurrency = getArg('concurrency', 10); -const alpha = getArg('alpha', 0.5); +const alpha = getArg('alpha', 1.5); const systems = getStringArg('systems', 'convex,spacetimedb') .split(',') .map((s) => s.trim());