gas-benchmark

Builds Docker images, triggers gas-benchmarks repricing workflows, and analyzes timing and dotTrace results.

1.6k|721|Updated Aug 23, 2017
One-click install
npx skills add https://github.com/NethermindEth/nethermind --skill gas-benchmark
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: gas-benchmark
Source: https://github.com/NethermindEth/nethermind/tree/main/.agents/skills/gas-benchmark
Command: npx skills add https://github.com/NethermindEth/nethermind --skill gas-benchmark

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) components.

What problem does it solve?

Running Ethereum gas repricing benchmarks against a Nethermind build requires manually coordinating Docker image builds, GitHub Actions workflow triggers, release discovery, and result analysis across two repositories. This Skill automates that entire pipeline and turns raw benchmark runs into actionable timing and profiling reports.

Core Features & Use Cases

  • End-to-end benchmark pipeline: Builds a diag or release Docker image from any Nethermind branch, discovers the correct gas-benchmarks release and branch, triggers the repricing workflow, and waits for completion.
  • Automated result analysis: Scans run logs for Nethermind exceptions, extracts per-test engine_newPayload timings from result artifacts, and computes AVG, MEDIAN, P90, P95, and MAX aggregates.
  • dotTrace profiling and comparison: Downloads dotTrace XML reports, lists top hotspots by OwnTime, and compares two runs side-by-side with regression and improvement deltas.
  • Use Case: A core developer wants to check whether a PR regresses SSTORE-heavy block processing. They invoke the skill with the branch and a filter like sstore_bloated; the skill builds the image, runs the benchmark on perf-devnet-3, and returns a timing table plus a dotTrace hotspot comparison against the baseline run.

Quick Start

Ask the assistant to run gas benchmarks for your current Nethermind branch with the filter sstore_bloated on perf-devnet-3 and analyze the results.

Frequently Asked Questions about gas-benchmark

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I run gas benchmarks on a Nethermind branch?

Invoke the skill with --branch pointing to your Nethermind branch. It builds a Docker image via the publish-docker workflow, discovers the matching gas-benchmarks release, triggers the repricing-nethermind workflow, and reports timing results when the run completes.

How do I analyze an existing gas-benchmarks workflow run?

Use --analyze-run with a run ID or URL to skip the build and trigger phases entirely. The skill fetches the run, scans logs for exceptions, extracts per-test timings from result artifacts, and produces the full analysis report.

How do I compare benchmark results between two runs?

Pass --analyze-run for the first run and --compare with a second run ID. The skill downloads result artifacts and dotTrace XMLs from both runs, then produces side-by-side per-test timing tables with delta percentages and hotspot regressions.

Does the skill support dotTrace profiling of block processing?

Yes, pass --dottrace to build a diag image using Dockerfile.diag and enable diagnostics flags in the workflow. After the run, the skill downloads the dotTrace XML artifact and reports the top functions by OwnTime using scripts/dottrace-report.sh.

Why does a benchmark run fail with 'dottrace: not found'?

This happens when diagnostics_mode=dottrace is passed but the Docker image was not built with Dockerfile.diag. The skill prevents this by only adding diagnostics flags when the image is a diag build.

What networks and forks does the gas benchmark support?

Supported networks include perf-devnet-3, jochemnet, and mainnet, with forks such as amsterdam and osaka. The skill maps each network to its genesis file and discovers the correct release tag for the requested fork automatically.