Skip to content

feat(benchmarking): add mixed workload benchmark (TestMixedTraffic) #3186

@chatton

Description

@chatton

Summary

Add a benchmark test that runs multiple spamoor scenarios simultaneously against the same chain to simulate realistic L2 traffic patterns. Currently each benchmark test isolates a single workload type, which measures that workload ceiling but does not represent production traffic mixes.

Motivation

The DeFi simulation benchmark (TestDeFiSimulation) is bottlenecked by spamoor uniswap-swaps scenario - each swap requires a synchronous eth_call to GetAmountsIn/GetAmountsOut before sending, limiting injection to ~150-300 TPS regardless of config. A mixed workload avoids this single-scenario bottleneck while producing more realistic throughput numbers.

Proposed workload mix

Spammers Scenario Gas/tx Role
2 eoatx ~21K simple transfers, high TPS filler
2 erc20tx ~65K storage-heavy contract calls
1 uniswap-swaps ~200K DeFi call chains
1 gasburnertx configurable compute pressure

This mix exercises simple transfers, storage reads/writes, deep call chains, and compute simultaneously - closer to what a production L2 mempool looks like.

Acceptance criteria

  • New TestMixedTraffic in test/e2e/benchmark/
  • Uses benchConfig env vars for system config (block time, gas limit, etc.)
  • All spammer types run concurrently against the same chain
  • Measurement window excludes warmup from all scenarios
  • Results include per-scenario and aggregate metrics

Related

  • Epic: [EPIC] Benchmarks #2288
  • DeFi benchmark: cian/add-defi-simulation-benchmark
  • Spamoor bottleneck analysis: see PR for TestDeFiSimulation

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions