diff --git a/.github/workflows/ValidatePullRequest.yml b/.github/workflows/ValidatePullRequest.yml index f899894ec..96d5292d4 100644 --- a/.github/workflows/ValidatePullRequest.yml +++ b/.github/workflows/ValidatePullRequest.yml @@ -291,6 +291,7 @@ jobs: arch: [X64] hypervisor: ['hyperv-ws2025', mshv3, kvm] cpu_vendor: [amd, intel] + iteration: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] uses: ./.github/workflows/dep_benchmarks.yml secrets: inherit with: @@ -299,6 +300,7 @@ jobs: cpu_vendor: ${{ matrix.cpu_vendor }} arch: ${{ matrix.arch }} baseline_ref: HEAD^1...HEAD^2 + benchmark_suffix: -repeat-${{ matrix.iteration }} # Report every configuration the run measured against the commit the pull # request branched from, for the hyperlight-gh-bot to post as a PR comment. @@ -308,7 +310,8 @@ jobs: needs: - docs-pr - benchmarks - if: ${{ !cancelled() && !failure() && needs.docs-pr.outputs.docs-only == 'false' && github.event_name == 'pull_request' }} + # Repeated configurations are analyzed from their artifacts after the run. + if: ${{ false }} runs-on: ubuntu-latest permissions: contents: read diff --git a/.github/workflows/dep_benchmarks.yml b/.github/workflows/dep_benchmarks.yml index d767f1f33..1e4a42ab6 100644 --- a/.github/workflows/dep_benchmarks.yml +++ b/.github/workflows/dep_benchmarks.yml @@ -39,6 +39,11 @@ on: required: false type: string default: "" + benchmark_suffix: + description: Suffix for the runner job and benchmark artifact + required: false + type: string + default: "" env: CARGO_TERM_COLOR: always RUST_BACKTRACE: full @@ -61,7 +66,7 @@ jobs: inputs.cpu_vendor, github.run_id, github.run_number, - github.run_attempt) + format('{0}{1}', github.run_attempt, inputs.benchmark_suffix)) || '["self-hosted", "Linux", "arm64", "kvm"]') }} steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -131,7 +136,7 @@ jobs: - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: - name: benchmarks_${{ runner.os }}_${{ inputs.hypervisor }}_${{ inputs.cpu_vendor }} + name: benchmarks_${{ runner.os }}_${{ inputs.hypervisor }}_${{ inputs.cpu_vendor }}${{ inputs.benchmark_suffix }} path: ./target/criterion/ if-no-files-found: error # The longest GitHub keeps an artifact, so that a run stays readable