Skip to content

ethpandaops/benchmarkoor

Repository files navigation

Benchmarkoor

Dispatchoor Logo

Overview

Benchmarkoor is a benchmarking tool for Ethereum execution clients. It runs standardized tests against multiple clients (Geth, Nethermind, Besu, Erigon, Reth, Nimbus) in isolated Docker containers and collects performance metrics.

Documentation

Docker Quickstart

The easiest way to get started is using Docker Compose:

Start the UI. By default it will be listening on http://localhost:8080

# Starts the UI on default port 8080
make docker-run-ui

# Alternatively, you can also choose your own port like
make docker-run-ui UI_PORT=3000

Next we'll run a benchmark. By default it will use the config.example.docker.yaml configuration file. By default, it just runs a subset of tests, via the filter: bn128. Have a look at the file and change it as you want. If you're just experimenting, you can leave it as it is.

To run the benchmark we can do the following:

# Run the default config.example.docker.yaml with all clients
make docker-run-benchmark

# Limit the client. In this case, just run geth
make docker-run-benchmark CLIENT=geth

# Run with your custom configuration
make docker-run-benchmark CONFIG=config.custom.yaml

After each run, if you refresh the UI, you should see new results there.

To stop the services:

make docker-down

Development Quickstart

Build the binary

make build-core

Run the UI (On a different tab):

make run-ui

It should print the address where you can access it. By default it's http://localhost:5173/ .

Now we want to run benchmarkoor. We'll be using an example configuration file that contains some stateless tests. By default we'll be just running the bn128 subset of that suite. Have a look at the config file for more details:

./bin/benchmarkoor run --config examples/configuration/config.stateless.eest.yaml

If you don't always want to build and run, you can also use it like this:

go run cmd/benchmarkoor/*.go run --config examples/configuration/config.stateless.eest.yaml

After the run, you should be able to see the results on the UI.

Note: If you want to limit your runs to a specific client that is on the config, you can either comment out those that you don't want, or use the --limit-instance-client flag. This allows you to limit the execution to certain clients. For example --limit-instance-client=nethermind would only run any instances that are of the nethermind client type.

Example:

./bin/benchmarkoor run \
      --config examples/configuration/config.stateless.eest.yaml \
      --limit-instance-client=nethermind

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

About

Ethereum execution clients benchmarking tool

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages