Skip to content

fix 3 benchmarks suite #20

fix 3 benchmarks suite

fix 3 benchmarks suite #20

Workflow file for this run

name: zThread Continuous Performance Benchmark Suite
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
workflow_dispatch:
jobs:
# Job 1: Isolated Matrix Microbenchmarks (Parallel)
microbenchmarks:
runs-on: ubuntu-latest
permissions:
contents: read
strategy:
matrix:
suite: [throughput, latency, memory, timers, eventfd, inotify, lifecycle]
fail-fast: false
steps:
- uses: actions/checkout@v4
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
java-version: '25'
distribution: 'temurin'
- name: Run Microbenchmark Suite
run: ./mvnw test -pl zthread-benchmark --also-make -DskipTests=false -Dbenchmark.suite=${{ matrix.suite }}
continue-on-error: true
- name: Upload Benchmark JSON Artifact
uses: actions/upload-artifact@v4
with:
name: benchmark-${{ matrix.suite }}
path: zthread-benchmark/target/benchmark-results/*.json
# Job 2: Heavy Application & Scalability Benchmarks (Sequential / Dedicated)
application-benchmarks:
runs-on: ubuntu-latest
permissions:
contents: read
needs: microbenchmarks
steps:
- uses: actions/checkout@v4
- name: Set up JDK 25 & Benchmark Tools
uses: actions/setup-java@v5
with:
java-version: '25'
distribution: 'temurin'
- name: Install Network Benchmark Harnesses
run: sudo apt-get update && sudo apt-get install -y wrk sysstat iperf
- name: Run Sequential Heavy Benchmarks (Socket, HTTP, WebSocket, Scaling, Idle)
run: |
./mvnw test -pl zthread-benchmark --also-make -DskipTests=false -Dbenchmark.suite=socket
./mvnw test -pl zthread-benchmark --also-make -DskipTests=false -Dbenchmark.suite=http
./mvnw test -pl zthread-benchmark --also-make -DskipTests=false -Dbenchmark.suite=websocket
./mvnw test -pl zthread-benchmark --also-make -DskipTests=false -Dbenchmark.suite=scaling
./mvnw test -pl zthread-benchmark --also-make -DskipTests=false -Dbenchmark.suite=idle
continue-on-error: true
- name: Upload Heavy Benchmark Artifacts
uses: actions/upload-artifact@v4
with:
name: benchmark-heavy
path: zthread-benchmark/target/benchmark-results/*.json
# Job 3: Generate Dashboard, Visual Charts & Update README
dashboard-update:
runs-on: ubuntu-latest
permissions:
contents: write
needs: [microbenchmarks, application-benchmarks]
if: github.ref == 'refs/heads/master'
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.AUTO_COMMIT_PAT || github.token }}
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install Charting Dependencies
run: pip install matplotlib pandas seaborn tabulate
- name: Download All Benchmark Artifacts
uses: actions/download-artifact@v4
with:
path: target/benchmark-results/
merge-multiple: true
- name: Generate SVG Charts and Update README.md
run: python3 scripts/generate_report.py
- name: Commit & Push Updated README & Benchmark Assets
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "chrono(benchmark): auto-update performance dashboard & SVG charts"
file_pattern: "README.md assets/benchmarks/* target/benchmark-results/*.json"