fix: make perf-self-profile compile on macOS #16
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 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@main | |
| - name: Benchmark — poll_overhead | |
| 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 poll_overhead --features task-dump" | |
| - 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@main | |
| - name: Benchmark — poll_overhead | |
| 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-upper-boundary 0.25 \ | |
| --threshold-measure throughput \ | |
| --threshold-test percentage \ | |
| --threshold-lower-boundary 0.25 \ | |
| --error-on-alert \ | |
| --github-actions '${{ secrets.GITHUB_TOKEN }}' \ | |
| "cargo bench --package dial9-tokio-telemetry --bench poll_overhead --features task-dump" | |
| - 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-upper-boundary 0.25 \ | |
| --threshold-measure throughput \ | |
| --threshold-test percentage \ | |
| --threshold-lower-boundary 0.25 \ | |
| --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-upper-boundary 0.25 \ | |
| --threshold-measure throughput \ | |
| --threshold-test percentage \ | |
| --threshold-lower-boundary 0.25 \ | |
| --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-upper-boundary 0.25 \ | |
| --threshold-measure throughput \ | |
| --threshold-test percentage \ | |
| --threshold-lower-boundary 0.25 \ | |
| --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-upper-boundary 0.25 \ | |
| --threshold-measure throughput \ | |
| --threshold-test percentage \ | |
| --threshold-lower-boundary 0.25 \ | |
| --error-on-alert \ | |
| --github-actions '${{ secrets.GITHUB_TOKEN }}' \ | |
| "cargo bench --bench e2e_workload -- --bmf 10" |