Skip to content

Remove poll_overhead benchmark and pin bencher action to v0.6.2 #25

Remove poll_overhead benchmark and pin bencher action to v0.6.2

Remove poll_overhead benchmark and pin bencher action to v0.6.2 #25

Workflow file for this run

# Continuous benchmarking with Bencher (https://bencher.dev)
#
# PREREQUISITES:
# 1. Create a project at https://bencher.dev and note its slug.
# 2. Add the following secrets in GitHub → Settings → Secrets and variables → Actions:
# - BENCHER_API_TOKEN: API token from bencher.dev
# - BENCHER_PROJECT: your project slug
# 3. GITHUB_TOKEN is provided automatically — no setup needed.
#
# overhead_bench uses a custom harness (not Criterion). Its --bmf flag
# outputs Bencher Metric Format directly.
name: Benchmarks
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
permissions:
checks: write
pull-requests: write
jobs:
# Runs on every push to main to build the statistical baseline.
benchmark_main:
name: Benchmark (main baseline)
if: github.event_name == 'push' || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
timeout-minutes: 30
env:
RUST_BACKTRACE: 1
BENCHER_PROJECT: ${{ secrets.BENCHER_PROJECT }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Enable perf_event_open and kallsyms
run: |
sudo sysctl kernel.perf_event_paranoid=1
sudo sysctl kernel.kptr_restrict=0
- uses: bencherdev/bencher@0f8f620172ccd6225d40a7590598eb7b41718af8 # v0.6.2
- name: Benchmark — writer_encode
run: |
bencher run \
--token '${{ secrets.BENCHER_API_TOKEN }}' \
--branch '${{ github.ref_name }}' \
--testbed ubuntu-latest \
--adapter rust_criterion \
"cargo bench --package dial9-tokio-telemetry --bench writer_encode"
- name: Benchmark — codec
run: |
bencher run \
--token '${{ secrets.BENCHER_API_TOKEN }}' \
--branch '${{ github.ref_name }}' \
--testbed ubuntu-latest \
--adapter rust_criterion \
"cargo bench --package dial9-trace-format --bench codec"
- name: Benchmark — overhead_bench
run: |
bencher run \
--token '${{ secrets.BENCHER_API_TOKEN }}' \
--branch '${{ github.ref_name }}' \
--testbed ubuntu-latest \
--adapter json \
"cargo bench --bench overhead_bench -- --bmf 10"
- name: Benchmark — e2e_workload
run: |
bencher run \
--token '${{ secrets.BENCHER_API_TOKEN }}' \
--branch '${{ github.ref_name }}' \
--testbed ubuntu-latest \
--adapter json \
"cargo bench --bench e2e_workload -- --bmf 10"
# Runs on same-repo PRs. Fork PRs are skipped — they have no access to
# BENCHER_API_TOKEN, so the job would fail rather than silently skip.
benchmark_pr:
name: Benchmark (PR regression check)
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository
runs-on: ubuntu-latest
timeout-minutes: 30
env:
RUST_BACKTRACE: 1
BENCHER_PROJECT: ${{ secrets.BENCHER_PROJECT }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Enable perf_event_open and kallsyms
run: |
sudo sysctl kernel.perf_event_paranoid=1
sudo sysctl kernel.kptr_restrict=0
- uses: bencherdev/bencher@0f8f620172ccd6225d40a7590598eb7b41718af8 # v0.6.2
- name: Benchmark — writer_encode
run: |
bencher run \
--token '${{ secrets.BENCHER_API_TOKEN }}' \
--branch '${{ github.head_ref }}' \
--start-point main \
--start-point-reset \
--testbed ubuntu-latest \
--adapter rust_criterion \
--threshold-measure latency \
--threshold-test percentage \
--threshold-lower-boundary _ \
--threshold-upper-boundary 0.25 \
--threshold-measure throughput \
--threshold-test percentage \
--threshold-lower-boundary 0.25 \
--threshold-upper-boundary _ \
--error-on-alert \
--github-actions '${{ secrets.GITHUB_TOKEN }}' \
"cargo bench --package dial9-tokio-telemetry --bench writer_encode"
- name: Benchmark — codec
run: |
bencher run \
--token '${{ secrets.BENCHER_API_TOKEN }}' \
--branch '${{ github.head_ref }}' \
--start-point main \
--start-point-reset \
--testbed ubuntu-latest \
--adapter rust_criterion \
--threshold-measure latency \
--threshold-test percentage \
--threshold-lower-boundary _ \
--threshold-upper-boundary 0.25 \
--threshold-measure throughput \
--threshold-test percentage \
--threshold-lower-boundary 0.25 \
--threshold-upper-boundary _ \
--error-on-alert \
--github-actions '${{ secrets.GITHUB_TOKEN }}' \
"cargo bench --package dial9-trace-format --bench codec"
- name: Benchmark — overhead_bench
run: |
bencher run \
--token '${{ secrets.BENCHER_API_TOKEN }}' \
--branch '${{ github.head_ref }}' \
--start-point main \
--start-point-reset \
--testbed ubuntu-latest \
--adapter json \
--threshold-measure latency \
--threshold-test percentage \
--threshold-lower-boundary _ \
--threshold-upper-boundary 0.25 \
--threshold-measure throughput \
--threshold-test percentage \
--threshold-lower-boundary 0.25 \
--threshold-upper-boundary _ \
--error-on-alert \
--github-actions '${{ secrets.GITHUB_TOKEN }}' \
"cargo bench --bench overhead_bench -- --bmf 10"
- name: Benchmark — e2e_workload
run: |
bencher run \
--token '${{ secrets.BENCHER_API_TOKEN }}' \
--branch '${{ github.head_ref }}' \
--start-point main \
--start-point-reset \
--testbed ubuntu-latest \
--adapter json \
--threshold-measure latency \
--threshold-test percentage \
--threshold-lower-boundary _ \
--threshold-upper-boundary 0.25 \
--threshold-measure throughput \
--threshold-test percentage \
--threshold-lower-boundary 0.25 \
--threshold-upper-boundary _ \
--error-on-alert \
--github-actions '${{ secrets.GITHUB_TOKEN }}' \
"cargo bench --bench e2e_workload -- --bmf 10"