# 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 ```