diff --git a/.github/workflows/Benchmarks.yml b/.github/workflows/Benchmarks.yml index 83d6ad7df..c9ba2134b 100644 --- a/.github/workflows/Benchmarks.yml +++ b/.github/workflows/Benchmarks.yml @@ -17,17 +17,39 @@ jobs: strategy: fail-fast: true matrix: - build: [windows-2022-release, linux-kvm-release, linux-hyperv-release] + build: [ + windows-2022-release-amd, + linux-kvm-release-amd, + linux-hyperv-release-amd, + windows-2022-release-intel, + linux-kvm-release-intel, + linux-hyperv-release-intel, + ] include: - - build: windows-2022-release + - build: windows-2022-release-amd os: [self-hosted, Windows, X64, "1ES.Pool=hld-win2022-amd"] - hypervisor: none - - build: linux-kvm-release + hypervisor: hyperv + arch: amd + - build: linux-kvm-release-amd os: [self-hosted, Linux, X64, "1ES.Pool=hld-kvm-amd"] hypervisor: kvm - - build: linux-hyperv-release + arch: amd + - build: linux-hyperv-release-amd os: [self-hosted, Linux, X64, "1ES.Pool=hld-mshv-amd"] hypervisor: hyperv + arch: amd + - build: windows-2022-release-intel + os: [self-hosted, Windows, X64, "1ES.Pool=hld-win2022-intel"] + hypervisor: hyperv + arch: intel + - build: linux-kvm-release-intel + os: [self-hosted, Linux, X64, "1ES.Pool=hld-kvm-intel"] + hypervisor: kvm + arch: intel + - build: linux-hyperv-release-intel + os: [self-hosted, Linux, X64, "1ES.Pool=hld-mshv-intel"] + hypervisor: hyperv + arch: intel runs-on: ${{ matrix.os }} steps: @@ -68,7 +90,7 @@ jobs: run: git fetch --tags origin - name: Download benchmarks from most recent release - run: just bench-download ${{ runner.os }} ${{ matrix.hypervisor }} # skip tag parameter to compare to latest stable release + run: just bench-download ${{ runner.os }} ${{ matrix.hypervisor }} ${{ matrix.arch }} # skip tag parameter to compare to latest stable release continue-on-error: true env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -78,6 +100,6 @@ jobs: - uses: actions/upload-artifact@v4 with: - name: benchmarks_${{runner.os}}_${{matrix.hypervisor}} + name: benchmarks_${{runner.os}}_${{matrix.hypervisor}}_${{ matrix.arch }} path: ./target/criterion/ if-no-files-found: error diff --git a/.github/workflows/CreateRelease.yml b/.github/workflows/CreateRelease.yml index faada1a21..a923a3af1 100644 --- a/.github/workflows/CreateRelease.yml +++ b/.github/workflows/CreateRelease.yml @@ -155,29 +155,20 @@ jobs: just tar-headers just tar-static-lib - - name: Download benchmarks (Windows) + - name: Download all benchmarks uses: actions/download-artifact@v4 with: - name: benchmarks_Windows_none - path: benchmarks_Windows_none - - - name: Download benchmarks (Linux hyperv) - uses: actions/download-artifact@v4 - with: - name: benchmarks_Linux_hyperv - path: benchmarks_Linux_hyperv - - - name: Download benchmarks (Linux kvm) - uses: actions/download-artifact@v4 - with: - name: benchmarks_Linux_kvm - path: benchmarks_Linux_kvm + pattern: benchmarks_* + # note: artifacts retain their upload name, so we don't have to specify the path - name: Archive benchmarks run: | - tar -zcvf benchmarks_Windows_none.tar.gz benchmarks_Windows_none - tar -zcvf benchmarks_Linux_hyperv.tar.gz benchmarks_Linux_hyperv - tar -zcvf benchmarks_Linux_kvm.tar.gz benchmarks_Linux_kvm + tar -zcvf benchmarks_Windows_hyperv.tar.gz benchmarks_Windows_hyperv_amd + tar -zcvf benchmarks_Linux_hyperv.tar.gz benchmarks_Linux_hyperv_amd + tar -zcvf benchmarks_Linux_kvm.tar.gz benchmarks_Linux_kvm_amd + tar -zcvf benchmarks_Windows_hyperv.tar.gz benchmarks_Windows_hyperv_intel + tar -zcvf benchmarks_Linux_hyperv.tar.gz benchmarks_Linux_hyperv_intel + tar -zcvf benchmarks_Linux_kvm.tar.gz benchmarks_Linux_kvm_intel - name: Install github-cli run: | @@ -202,9 +193,12 @@ jobs: src/tests/rust_guests/bin/${{ env.CONFIG }}/simpleguest ` src/tests/rust_guests/bin/${{ env.CONFIG }}/simpleguest.exe ` src/tests/rust_guests/bin/${{ env.CONFIG }}/dummyguest ` - benchmarks_Windows_none.tar.gz ` - benchmarks_Linux_hyperv.tar.gz ` - benchmarks_Linux_kvm.tar.gz ` + benchmarks_Windows_hyperv_amd.tar.gz ` + benchmarks_Linux_hyperv_amd.tar.gz ` + benchmarks_Linux_kvm_amd.tar.gz ` + benchmarks_Windows_hyperv_intel.tar.gz ` + benchmarks_Linux_hyperv_intel.tar.gz ` + benchmarks_Linux_kvm_intel.tar.gz ` hyperlight-guest-c-api-linux.tar.gz ` hyperlight-guest-c-api-windows.tar.gz ` include.tar.gz @@ -221,9 +215,12 @@ jobs: src/tests/rust_guests/bin/${{ env.CONFIG }}/simpleguest ` src/tests/rust_guests/bin/${{ env.CONFIG }}/simpleguest.exe ` src/tests/rust_guests/bin/${{ env.CONFIG }}/dummyguest ` - benchmarks_Windows_none.tar.gz ` - benchmarks_Linux_hyperv.tar.gz ` - benchmarks_Linux_kvm.tar.gz ` + benchmarks_Windows_hyperv_amd.tar.gz ` + benchmarks_Linux_hyperv_amd.tar.gz ` + benchmarks_Linux_kvm_amd.tar.gz ` + benchmarks_Windows_hyperv_intel.tar.gz ` + benchmarks_Linux_hyperv_intel.tar.gz ` + benchmarks_Linux_kvm_intel.tar.gz ` hyperlight-guest-c-api-linux.tar.gz ` hyperlight-guest-c-api-windows.tar.gz ` include.tar.gz diff --git a/.github/workflows/dep_rust.yml b/.github/workflows/dep_rust.yml index 89db2dd68..55d0c8d56 100644 --- a/.github/workflows/dep_rust.yml +++ b/.github/workflows/dep_rust.yml @@ -21,38 +21,68 @@ jobs: matrix: build: [ - windows-2022-debug, - linux-kvm-debug, - linux-hyperv-debug, - windows-2022-release, - linux-kvm-release, - linux-hyperv-release, + windows-2022-debug-amd, + linux-kvm-debug-amd, + linux-hyperv-debug-amd, + windows-2022-release-amd, + linux-kvm-release-amd, + linux-hyperv-release-amd, + windows-2022-debug-intel, + linux-kvm-debug-intel, + linux-hyperv-debug-intel, + windows-2022-release-intel, + linux-kvm-release-intel, + linux-hyperv-release-intel, ] include: - - build: windows-2022-debug + - build: windows-2022-debug-amd os: [self-hosted, Windows, X64, "1ES.Pool=hld-win2022-amd"] hypervisor: none config: debug - - build: linux-kvm-debug + - build: linux-kvm-debug-amd os: [self-hosted, Linux, X64, "1ES.Pool=hld-kvm-amd"] hypervisor: kvm config: debug - - build: linux-hyperv-debug + - build: linux-hyperv-debug-amd os: [self-hosted, Linux, X64, "1ES.Pool=hld-mshv-amd"] hypervisor: hyperv config: debug - - build: windows-2022-release + - build: windows-2022-release-amd os: [self-hosted, Windows, X64, "1ES.Pool=hld-win2022-amd"] hypervisor: none config: release - - build: linux-kvm-release + - build: linux-kvm-release-amd os: [self-hosted, Linux, X64, "1ES.Pool=hld-kvm-amd"] hypervisor: kvm config: release - - build: linux-hyperv-release + - build: linux-hyperv-release-amd os: [self-hosted, Linux, X64, "1ES.Pool=hld-mshv-amd"] hypervisor: hyperv config: release + - build: windows-2022-debug-intel + os: [self-hosted, Windows, X64, "1ES.Pool=hld-win2022-intel"] + hypervisor: none + config: debug + - build: linux-kvm-debug-intel + os: [self-hosted, Linux, X64, "1ES.Pool=hld-kvm-intel"] + hypervisor: kvm + config: debug + - build: linux-hyperv-debug-intel + os: [self-hosted, Linux, X64, "1ES.Pool=hld-mshv-intel"] + hypervisor: hyperv + config: debug + - build: windows-2022-release-intel + os: [self-hosted, Windows, X64, "1ES.Pool=hld-win2022-intel"] + hypervisor: none + config: release + - build: linux-kvm-release-intel + os: [self-hosted, Linux, X64, "1ES.Pool=hld-kvm-intel"] + hypervisor: kvm + config: release + - build: linux-hyperv-release-intel + os: [self-hosted, Linux, X64, "1ES.Pool=hld-mshv-intel"] + hypervisor: hyperv + config: release runs-on: ${{ matrix.os }} steps: diff --git a/Justfile b/Justfile index 5e7876330..0a93cc541 100644 --- a/Justfile +++ b/Justfile @@ -166,11 +166,12 @@ run-rust-examples-linux target=default-target: (build-rust target) (run-rust-exa # If tag is not given, defaults to latest release # Options for os: "Windows", or "Linux" # Options for Linux hypervisor: "kvm", "hyperv" -# Options for Windows hypervisor: "none" -bench-download os hypervisor tag="": - gh release download {{ tag }} -D ./target/ -p benchmarks_{{ os }}_{{ hypervisor }}.tar.gz +# Options for Windows hypervisor: "hyperv" +# Options for arch: "amd", "intel" +bench-download os hypervisor arch tag="": + gh release download {{ tag }} -D ./target/ -p benchmarks_{{ os }}_{{ hypervisor }}_{{ arch }}.tar.gz mkdir -p target/criterion {{ if os() == "windows" { "-Force" } else { "" } }} - tar -zxvf target/benchmarks_{{ os }}_{{ hypervisor }}.tar.gz -C target/criterion/ --strip-components=1 + tar -zxvf target/benchmarks_{{ os }}_{{ hypervisor }}_{{ arch }}.tar.gz -C target/criterion/ --strip-components=1 # Warning: compares to and then OVERWRITES the given baseline bench-ci baseline target=default-target: