# Running BAL benchmarking suite locally
Requirements to run Benchmarkoor:
- Linux machine with OverlayFS installed (easiest, works on existing FS like ext4) or ZFS (disk needs to be formatted with ZFS). You'll need `root` permissions.
- Perf-devnet-3 snapshot available for your client. Block `24358000`: https://ethpandaops.io/data/snapshots/?snapshot-network=more&more-snapshot-network=perf-devnet-3
- bal-devnet-2 spec compliant client (The tests were built using devnet-2 spec)
## Running the BAL suite using Benchmarkoor:
1. Get the `benchmarkoor` binary:
```shell=
docker run --rm -v $PWD:/out --entrypoint sh ghcr.io/ethpandaops/benchmarkoor:master -c "cp /usr/local/bin/benchmarkoor /out/"
```
You should then have a `./benchmarkoor` binary on your current path.
> Alternatively you can also build it yourself: https://github.com/ethpandaops/benchmarkoor
2. Get the benchmarkoor config:
```sh
wget https://gist.githubusercontent.com/skylenet/ab08a5c6d3fb88b011f61b3afc5b65a1/raw/ef80c311c5844585bd6d031e4f119aed272f8d4e/benchmarkoor.interop.bal.yaml
````
3. Adjust the `source_dir` for your client in that config. Also check `method` on the datadir, by default it's using `overlayfs`.
4. Verify the configs for your client in the config within the `runner.instances` section.
5. Run benchmarkoor. Example with "geth" and "full" optimizations mode. It just needs to match the instance id in the config.
```shell=
./benchmarkoor run --config benchmarkoor.interop.bal.yaml --limit-instance-id=geth-bal-full
```
6. It will dump all the results in the `results/` directory (It's also in the config file if you want to change where results are written to.)
6. Run UI to view results:
```sh
docker run -d --name benchmarkoor-ui -p 8081:80 -v $PWD/results:/usr/share/nginx/html/results:ro ghcr.io/ethpandaops/benchmarkoor-ui:master
```
Access via http://localhost:8081
### Troubleshooting:
Manually cleaning up and destroying overlayfs/zfs snapshots/mounts if this broke. It will tell you if there are any dangling resources and you'll have to confirm deletion.
```shell=
./benchmarkoor cleanup
```