Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
15 changes: 10 additions & 5 deletions tooling/import_benchmark/Makefile
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
BENCH_ID ?= 1
NETWORK ?= hoodi
NUM_REPETITIONS ?= 3

help:
@printf "run-bench: ## Runs a bench for the current pr. \nParameters:\n -BENCH_ID: number for the log file where it will\
be saved with the format bench-BENCH_ID.log\n -NETWORK: which network to acesss (hoodi, mainnet)\nRequirements:\n This tool assumes we are running on Linux,\
be saved with the format bench-BENCH_ID.log\n -NETWORK: which network to access (hoodi, mainnet)\nRequirements:\n This tool assumes we are running on Linux,\
and that we have a valid db in ~/.local/share/ethrex_NETWORK_bench/ethrex\n with a valid state and a list of blocks for import\
in ~/.local/share/ethrex_NETWORK_bench/chain.rlp\n\n"
@printf "run-benches: ## Runs multiple repetitions of the bench for the current pr. \nParameters:\n -NUM_REPETITIONS: number of runs\n -NETWORK: which network to access (hoodi, mainnet)\nRequirements:\n This tool assumes we are running on Linux,\
and that we have a valid db in ~/.local/share/ethrex_NETWORK_bench/ethrex\n with a valid state and a list of blocks for import\
in ~/.local/share/ethrex_NETWORK_bench/chain.rlp\n\n"
@printf "python3 parse_bench.py bench_num_1 bench_num_2: ## Parses the bench log files from [bench_num_1 to bench_num_2) to find average ggas\nRequirements\n\
This script assumes we have the bench logs on the ethrex folder\n\n"

run-bench: ## Runs a bench for the current pr. parameters -BENCH_ID: number for the log file where it will be saved -NETWORK: which network to acesss
rm -rf ~/.local/share/temp
cp -r ~/.local/share/ethrex_$(NETWORK)_bench/ethrex ~/.local/share/temp
cd ../.. && cargo r --release -- --network $(NETWORK) --datadir ~/.local/share/temp import-bench ~/.local/share/ethrex_$(NETWORK)_bench/chain.rlp | tee bench-$(BENCH_ID).log
run-bench: ## Runs a bench for the current pr. parameters -BENCH_ID: number for the log file where it will be saved -NETWORK: which network to access
./benchmark.sh $(NETWORK) 1 $(BENCH_ID)

run-benches: ## Runs multiple repetitions of the bench for the current pr. parameters -NUM_REPETITIONS: number of runs -NETWORK: which network to access
./benchmark.sh $(NETWORK) $(NUM_REPETITIONS)
48 changes: 48 additions & 0 deletions tooling/import_benchmark/benchmark.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#!/bin/bash

# tooling/import_benchmark/benchmark.sh
# ----------------------------------
# Usage: tooling/import_benchmark/benchmark.sh <NETWORK> <NUM_REPETITIONS>
#
# Arguments:
# <NETWORK> Name of the network to use (e.g.: 'mainnet', 'hoodi', 'sepolia').
# <NUM_REPETITIONS> Number of times to run the benchmark (positive integer).
#
# Description:
# This script runs the import benchmark repeatedly and saves each run's output
# to an incrementally numbered log file named `bench-<id>.log`.
#
# Example:
# ./tooling/import_benchmark/benchmark.sh mainnet 5 # run 5 repetitions with mainnet
# ./tooling/import_benchmark/benchmark.sh mainnet 5 10 # same, but start with bench_id 10
#
set -euo pipefail

NETWORK=$1
NUM_REPETITIONS=$2
# Optional third argument: starting bench id. If provided, this value is used
# as the current `bench_id` (the script will increment it before the first run).
START_BENCH_ID=${3:-}

if [ -n "$START_BENCH_ID" ]; then
if ! [[ "$START_BENCH_ID" =~ ^[0-9]+$ ]]; then
echo "Error: START_BENCH_ID must be a non-negative integer" >&2
exit 2
fi
bench_id=$START_BENCH_ID
else
touch bench-0.log
bench_id=$(ls bench-*.log | cut -d '-' -f 2 | cut -d '.' -f 1 | sort -n | tail -1)
# When no START_BENCH_ID is supplied, start from the next available id
bench_id=$((bench_id + 1))
fi

cd ../..

for i in $(seq 1 $NUM_REPETITIONS); do
rm -rf ~/.local/share/temp
cp -r ~/.local/share/ethrex_${NETWORK}_bench/ethrex ~/.local/share/temp
cargo run --release -- --network $NETWORK --datadir ~/.local/share/temp import-bench ~/.local/share/ethrex_${NETWORK}_bench/chain.rlp | tee bench-${bench_id}.log

bench_id=$((bench_id + 1))
done
Loading