gigaload

Crates.iogigaload
lib.rsgigaload
version0.1.1
created_at2026-01-22 20:16:16.229167+00
updated_at2026-01-22 20:44:39.214557+00
descriptionload testing tool for benchmarking solana RPC endpoints
homepagehttps://github.com/Not-Sarthak/gigaload
repositoryhttps://github.com/Not-Sarthak/gigaload
max_upload_size
id2062538
size2,631,582
Sarthak Shah (Not-Sarthak)

documentation

https://github.com/Not-Sarthak/gigaload

README

gigaload

gigaload

A load testing tool for benchmarking Solana nodes over RPC.

What It Measures

For each RPC method, gigaload captures:

  • Throughput - successful requests per second
  • Latency - mean, p50, p90, p95, p99, min, max
  • Error rate - success/failure ratio

Compare performance across different node clients (Solana Labs vs Jito vs Firedancer), configurations, or RPC providers.

Installation

From source:

git clone https://github.com/Not-Sarthak/gigaload.git
cd gigaload
cargo build --release

Binary available at ./target/release/gigaload

From cargo:

cargo install gigaload

Quick Start

# Basic test - getSlot at 10, 50, 100 rps for 5 seconds each
gigaload run sol_getSlot https://api.mainnet-beta.solana.com -r 10 50 100 -d 5

# Compare two providers
gigaload run sol_getSlot helius=https://mainnet.helius-rpc.com quicknode=https://your-quicknode-url -r 50 100 -d 10

# Stress test with increasing load
gigaload run sol_getSlot https://api.mainnet-beta.solana.com --mode stress

Test Modes

Mode Description Default Rates
stress Gradually increasing load 10, 50, 100, 200, 500, 1000 rps
spike Sudden load spike 10, 1000, 10 rps
soak Sustained load over time 100 rps for 5 minutes

Available Tests

gigaload ls  # List all available tests
Test Description
sol_getSlot Get current slot
sol_getBlock Get block by slot
sol_getBlockHeight Get current block height
sol_getBalance Get account balance
sol_getAccountInfo Get account info
sol_getTransaction Get transaction by signature
sol_getHealth Get node health
sol_getVersion Get node version
sol_getClusterNodes Get cluster nodes
sol_getEpochInfo Get epoch info
sol_getLatestBlockhash Get latest blockhash
sol_getTokenAccountBalance Get token account balance

Usage

Run Options

gigaload run <TEST> <NODES>... [OPTIONS]
Option Description
-r, --rates <N>... Request rates in rps (e.g., -r 10 50 100)
-d, --duration <N> Duration in seconds for each rate
-o, --output <DIR> Output directory for results
-q, --quiet Suppress verbose output
-e, --equality Run differential test
--mode <MODE> Test mode: stress, spike, soak
--network <NET> Network: mainnet-beta, testnet, devnet
--dry Dry run (don't execute)
--deep-check Validate RPC responses for errors
--save-raw-output Save raw RPC responses
--equality-samples <N> Samples for equality test (default: 10)
-s, --seed <N> Random seed for reproducibility

Examples

# test getHealth with multiple rates
gigaload run sol_getHealth https://api.mainnet-beta.solana.com -r 10 50 100 200 -d 5

# test getBalance on devnet
gigaload run sol_getBalance https://api.devnet.solana.com --network devnet -r 20 -d 10

# dry run
gigaload run sol_getSlot https://api.mainnet-beta.solana.com --dry

# deep check with raw output
gigaload run sol_getSlot https://api.mainnet-beta.solana.com -r 10 -d 5 --deep-check --save-raw-output

Print Results

gigaload print <TEST_DIR>
gigaload print <TEST_DIR_1> <TEST_DIR_2>  # Multiple tests

Generate Reports

gigaload report <TEST_DIR>
gigaload report <TEST_DIR_1> <TEST_DIR_2>  # Combine multiple tests

Differential Testing

Compare responses between nodes to validate correctness:

# compare two nodes
gigaload run sol_getSlot node1=https://api.mainnet-beta.solana.com node2=https://your-node -e

# single node validation
gigaload run sol_getSlot https://api.mainnet-beta.solana.com -e --equality-samples 20

Output

Each test creates these files in the output directory:

  • test.json - test parameters
  • results.json - full metrics
  • summary.txt - human-readable summary
  • raw_output.json - raw responses (with --save-raw-output)

Metrics

Metric Description
target_rate Target rps
actual_rate Achieved rps
throughput Successful rps
success Success rate (0.0 - 1.0)
mean Mean latency
p50, p90, p95, p99 Percentile latencies
min, max Min/max latency

Contributing

git clone https://github.com/Not-Sarthak/gigaload.git
cd gigaload
cargo build
cargo test

Issues and PRs welcome.

License

MIT

Commit count: 13

cargo fmt