From 759b8fc5edf6d088e752fc83812876771e9d56e9 Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Wed, 13 Jul 2022 18:37:36 +0000 Subject: [PATCH 01/10] perf: Add support for using a specific artifact download for running the .. benchmarks. --- .../download-specific-artifact-step.yml | 12 ++- eng/pipelines/coreclr/templates/perf-job.yml | 73 ++++++++++++------- 2 files changed, 55 insertions(+), 30 deletions(-) diff --git a/eng/pipelines/common/download-specific-artifact-step.yml b/eng/pipelines/common/download-specific-artifact-step.yml index 180eb889d5a54..9ccf241404a67 100644 --- a/eng/pipelines/common/download-specific-artifact-step.yml +++ b/eng/pipelines/common/download-specific-artifact-step.yml @@ -4,6 +4,10 @@ parameters: artifactFileName: '' artifactName: '' displayName: '' + buildId: '' + branchName: '' + pipeline: '' + project: 'public' # 'internal' or 'public' steps: # Download artifact @@ -11,11 +15,11 @@ steps: displayName: 'Download specific ${{ parameters.displayName }}' inputs: buildType: specific - project: 'public' # 'internal' or 'public' - pipeline: 'Antigen' + project: ${{ parameters.project }} + pipeline: ${{ parameters.pipeline }} buildVersionToDownload: specific - branchName: 'refs/pull/59376/head' - buildId: '1387378' + branchName: ${{ parameters.branchName }} + buildId: ${{ parameters.buildId }} downloadType: single downloadPath: '$(Build.SourcesDirectory)/__download__' artifactName: '${{ parameters.artifactName }}' diff --git a/eng/pipelines/coreclr/templates/perf-job.yml b/eng/pipelines/coreclr/templates/perf-job.yml index 49b743c0b2f0d..5e2c5a4146a70 100644 --- a/eng/pipelines/coreclr/templates/perf-job.yml +++ b/eng/pipelines/coreclr/templates/perf-job.yml @@ -22,6 +22,9 @@ parameters: skipLiveLibrariesDownload: false collectHelixLogsScript: '' timeoutInMinutes: 320 + compare: false + onlySanityCheck: false + downloadSpecificBuild: null # buildId, pipeline, branchName, project ### Perf job @@ -61,23 +64,24 @@ jobs: collectHelixLogsScript: ${{ parameters.collectHelixLogsScript }} # Test job depends on the corresponding build job - dependsOn: - - ${{ if not(in(parameters.runtimeType, 'AndroidMono', 'iOSMono', 'wasm')) }}: - - ${{ format('coreclr_{0}_product_build_{1}{2}_{3}_{4}', parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }} - - ${{ if and(ne(parameters.liveLibrariesBuildConfig, ''), eq(parameters.skipLiveLibrariesDownload, 'false')) }}: - - ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.liveLibrariesBuildConfig) }} - - ${{ if and(eq(parameters.runtimeType, 'mono'), ne(parameters.codeGenType, 'AOT')) }}: - - ${{ format('mono_{0}_product_build_{1}{2}_{3}_{4}', parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }} - - ${{ if eq(parameters.runtimeType, 'wasm')}}: - - ${{ format('build_{0}{1}_{2}_{3}_{4}_{5}', 'Browser', '', 'wasm', 'Linux', parameters.buildConfig, parameters.runtimeType) }} - - ${{ if and(eq(parameters.codeGenType, 'AOT'), ne(parameters.runtimeType, 'wasm'))}}: - - ${{ format('build_{0}{1}_{2}_{3}_{4}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.codeGenType) }} - - ${{ if eq(parameters.runtimeType, 'AndroidMono')}}: - - ${{ 'build_Android_arm64_release_AndroidMono' }} - - ${{ 'Build_iOS_arm64_release_MACiOSAndroidMaui' }} - - ${{ if eq(parameters.runtimeType, 'iOSMono')}}: - - ${{ 'build_iOS_arm64_release_iOSMono' }} - - ${{ 'Build_iOS_arm64_release_MACiOSAndroidMaui' }} + ${{ if eq(parameters.downloadSpecificBuild.buildId, '') }}: + dependsOn: + - ${{ if not(in(parameters.runtimeType, 'AndroidMono', 'iOSMono', 'wasm')) }}: + - ${{ format('coreclr_{0}_product_build_{1}{2}_{3}_{4}', parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }} + - ${{ if and(ne(parameters.liveLibrariesBuildConfig, ''), eq(parameters.skipLiveLibrariesDownload, 'false')) }}: + - ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.liveLibrariesBuildConfig) }} + - ${{ if and(eq(parameters.runtimeType, 'mono'), ne(parameters.codeGenType, 'AOT')) }}: + - ${{ format('mono_{0}_product_build_{1}{2}_{3}_{4}', parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }} + - ${{ if eq(parameters.runtimeType, 'wasm')}}: + - ${{ format('build_{0}{1}_{2}_{3}_{4}_{5}', 'Browser', '', 'wasm', 'Linux', parameters.buildConfig, parameters.runtimeType) }} + - ${{ if and(eq(parameters.codeGenType, 'AOT'), ne(parameters.runtimeType, 'wasm'))}}: + - ${{ format('build_{0}{1}_{2}_{3}_{4}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.codeGenType) }} + - ${{ if eq(parameters.runtimeType, 'AndroidMono')}}: + - ${{ 'build_Android_arm64_release_AndroidMono' }} + - ${{ 'Build_iOS_arm64_release_MACiOSAndroidMaui' }} + - ${{ if eq(parameters.runtimeType, 'iOSMono')}}: + - ${{ 'build_iOS_arm64_release_iOSMono' }} + - ${{ 'Build_iOS_arm64_release_MACiOSAndroidMaui' }} ${{ if and(eq(parameters.osGroup, 'windows'), not(in(parameters.runtimeType, 'AndroidMono', 'iOSMono'))) }}: ${{ if eq(parameters.runtimeType, 'mono') }}: @@ -88,9 +92,9 @@ jobs: ${{ if and(eq(parameters.runtimeType, 'mono'), ne(parameters.codeGenType, 'AOT')) }}: extraSetupParameters: --architecture ${{ parameters.archType }} --monodotnet $(Build.SourcesDirectory)/.dotnet-mono ${{ if and(eq(parameters.runtimeType, 'wasm'), ne(parameters.codeGenType, 'AOT')) }}: - extraSetupParameters: --architecture ${{ parameters.archType }} --wasmbundle $(librariesDownloadDir)/bin/wasm --javascriptengine ${{ parameters.javascriptEngine }} + extraSetupParameters: --architecture ${{ parameters.archType }} --wasmbundle $(librariesDownloadDir)/bin/wasm --javascriptengine ${{ parameters.javascriptEngine }} $(extraSetupParametersSuffix) ${{ if and(eq(parameters.runtimeType, 'wasm'), eq(parameters.codeGenType, 'AOT')) }}: - extraSetupParameters: --architecture ${{ parameters.archType }} --wasmbundle $(librariesDownloadDir)/bin/wasm --wasmaot --javascriptengine ${{ parameters.javascriptEngine }} + extraSetupParameters: --architecture ${{ parameters.archType }} --wasmbundle $(librariesDownloadDir)/bin/wasm --wasmaot --javascriptengine ${{ parameters.javascriptEngine }} $(extraSetupParametersSuffix) ${{ if and(eq(parameters.codeGenType, 'AOT'), ne(parameters.runtimeType, 'wasm')) }}: extraSetupParameters: --architecture ${{ parameters.archType }} --monoaot $(librariesDownloadDir)/bin/aot ${{ if and(eq(parameters.runtimeType, 'coreclr'), ne(parameters.osSubGroup, '_musl')) }}: @@ -102,7 +106,15 @@ jobs: ${{ if eq(parameters.runtimeType, 'iosMono') }}: extraSetupParameters: --architecture ${{ parameters.archType }} --iosmono --iosllvmbuild ${{ parameters.iOSLlvmBuild }} - variables: ${{ parameters.variables }} + variables: + - ${{ each variable in parameters.variables }}: + - name: ${{ variable.name }} + value: ${{ variable.value }} + - name: extraSetupParametersSuffix + ${{ if eq(parameters.compare, 'true') }}: + value: '--compare' + ${{ if eq(parameters.onlySanityCheck, 'true') }}: + value: '--only-sanity' frameworks: - ${{ parameters.framework }} @@ -140,12 +152,21 @@ jobs: # Download wasm - ${{ if eq(parameters.runtimeType, 'wasm') }}: - - template: /eng/pipelines/common/download-artifact-step.yml - parameters: - unpackFolder: $(librariesDownloadDir)/BrowserWasm - artifactFileName: BrowserWasm.zip - artifactName: BrowserWasm - displayName: BrowserWasm + - ${{ if eq(parameters.downloadSpecificBuild.buildId, '') }}: + - template: /eng/pipelines/common/download-artifact-step.yml + parameters: + unpackFolder: $(librariesDownloadDir)/BrowserWasm + artifactFileName: BrowserWasm.zip + artifactName: BrowserWasm + displayName: BrowserWasm + - ${{ if ne(parameters.downloadSpecificBuild.buildId, '') }}: + - template: /eng/pipelines/common/download-specific-artifact-step.yml + parameters: + unpackFolder: $(librariesDownloadDir)/BrowserWasm + artifactFileName: BrowserWasm.zip + artifactName: BrowserWasm + displayName: BrowserWasm + ${{ insert }}: ${{ parameters.downloadSpecificBuild }} - script: >- mkdir -p $(librariesDownloadDir)/bin/wasm/wasm-data && From bfb4143e829e7d7096e8eafa1cca4fd0f2713072 Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Wed, 13 Jul 2022 18:40:34 +0000 Subject: [PATCH 02/10] [wasm] Move perf variables into a separate file --- eng/pipelines/common/perf-variables.yml | 15 +++++++++++++++ eng/pipelines/common/variables.yml | 2 ++ eng/pipelines/coreclr/perf.yml | 14 -------------- 3 files changed, 17 insertions(+), 14 deletions(-) create mode 100644 eng/pipelines/common/perf-variables.yml diff --git a/eng/pipelines/common/perf-variables.yml b/eng/pipelines/common/perf-variables.yml new file mode 100644 index 0000000000000..a26a979fc3b1d --- /dev/null +++ b/eng/pipelines/common/perf-variables.yml @@ -0,0 +1,15 @@ +variables: + - name: _wasmCollectHelixLogsScript + value: >- + test "$_commandExitCode" -eq 0 || ( + test -d "$HELIX_WORKITEM_UPLOAD_ROOT" && ( + export _PERF_DIR=$HELIX_WORKITEM_ROOT/performance; + mkdir -p $HELIX_WORKITEM_UPLOAD_ROOT/log/MicroBenchmarks/obj; + mkdir -p $HELIX_WORKITEM_UPLOAD_ROOT/log/MicroBenchmarks/bin; + mkdir -p $HELIX_WORKITEM_UPLOAD_ROOT/log/BenchmarkDotNet.Autogenerated/obj; + mkdir -p $HELIX_WORKITEM_UPLOAD_ROOT/log/BenchmarkDotNet.Autogenerated/bin; + find $_PERF_DIR -name '*.binlog' | xargs -I{} cp {} $HELIX_WORKITEM_UPLOAD_ROOT/log; + cp -R $_PERF_DIR/artifacts/obj/MicroBenchmarks $HELIX_WORKITEM_UPLOAD_ROOT/log/MicroBenchmarks/obj; + cp -R $_PERF_DIR/artifacts/bin/MicroBenchmarks $HELIX_WORKITEM_UPLOAD_ROOT/log/MicroBenchmarks/bin; + cp -R $_PERF_DIR/artifacts/obj/BenchmarkDotNet.Autogenerated $HELIX_WORKITEM_UPLOAD_ROOT/log/BenchmarkDotNet.Autogenerated/obj; + cp -R $_PERF_DIR/artifacts/bin/BenchmarkDotNet.Autogenerated $HELIX_WORKITEM_UPLOAD_ROOT/log/BenchmarkDotNet.Autogenerated/bin)) diff --git a/eng/pipelines/common/variables.yml b/eng/pipelines/common/variables.yml index 44bde20e8a1ec..76156f4821f60 100644 --- a/eng/pipelines/common/variables.yml +++ b/eng/pipelines/common/variables.yml @@ -33,3 +33,5 @@ variables: value: Release ${{ if eq(variables['Build.Reason'], 'PullRequest') }}: value: Debug + +- template: /eng/pipelines/common/perf-variables.yml diff --git a/eng/pipelines/coreclr/perf.yml b/eng/pipelines/coreclr/perf.yml index b1ce3d0fccfe7..490efbffaa505 100644 --- a/eng/pipelines/coreclr/perf.yml +++ b/eng/pipelines/coreclr/perf.yml @@ -18,20 +18,6 @@ trigger: variables: - template: /eng/pipelines/common/variables.yml - - name: _wasmCollectHelixLogsScript - value: >- - test "$_commandExitCode" -eq 0 || ( - test -d "$HELIX_WORKITEM_UPLOAD_ROOT" && ( - export _PERF_DIR=$HELIX_WORKITEM_ROOT/performance; - mkdir -p $HELIX_WORKITEM_UPLOAD_ROOT/log/MicroBenchmarks/obj; - mkdir -p $HELIX_WORKITEM_UPLOAD_ROOT/log/MicroBenchmarks/bin; - mkdir -p $HELIX_WORKITEM_UPLOAD_ROOT/log/BenchmarkDotNet.Autogenerated/obj; - mkdir -p $HELIX_WORKITEM_UPLOAD_ROOT/log/BenchmarkDotNet.Autogenerated/bin; - find $_PERF_DIR -name '*.binlog' | xargs -I{} cp {} $HELIX_WORKITEM_UPLOAD_ROOT/log; - cp -R $_PERF_DIR/artifacts/obj/MicroBenchmarks $HELIX_WORKITEM_UPLOAD_ROOT/log/MicroBenchmarks/obj; - cp -R $_PERF_DIR/artifacts/bin/MicroBenchmarks $HELIX_WORKITEM_UPLOAD_ROOT/log/MicroBenchmarks/bin; - cp -R $_PERF_DIR/artifacts/obj/BenchmarkDotNet.Autogenerated $HELIX_WORKITEM_UPLOAD_ROOT/log/BenchmarkDotNet.Autogenerated/obj; - cp -R $_PERF_DIR/artifacts/bin/BenchmarkDotNet.Autogenerated $HELIX_WORKITEM_UPLOAD_ROOT/log/BenchmarkDotNet.Autogenerated/bin)) schedules: - cron: "30 2 * * *" From 4302cbf6844673504e8b5cf86c990e259104c94f Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Wed, 13 Jul 2022 18:55:07 +0000 Subject: [PATCH 03/10] Split perf-job.yml into wasm, and non-wasm ymls --- eng/pipelines/coreclr/perf-non-wasm-jobs.yml | 387 +++++++++++++ eng/pipelines/coreclr/perf-wasm-jobs.yml | 161 ++++++ eng/pipelines/coreclr/perf-wasm.yml | 25 + eng/pipelines/coreclr/perf.yml | 527 +----------------- eng/pipelines/coreclr/templates/perf-job.yml | 2 +- .../coreclr/templates/run-scenarios-job.yml | 4 +- .../runtime-extra-platforms-wasm.yml | 10 + eng/testing/performance/performance-setup.sh | 6 + 8 files changed, 600 insertions(+), 522 deletions(-) create mode 100644 eng/pipelines/coreclr/perf-non-wasm-jobs.yml create mode 100644 eng/pipelines/coreclr/perf-wasm-jobs.yml create mode 100644 eng/pipelines/coreclr/perf-wasm.yml diff --git a/eng/pipelines/coreclr/perf-non-wasm-jobs.yml b/eng/pipelines/coreclr/perf-non-wasm-jobs.yml new file mode 100644 index 0000000000000..9d2fa16e64b96 --- /dev/null +++ b/eng/pipelines/coreclr/perf-non-wasm-jobs.yml @@ -0,0 +1,387 @@ +jobs: + +- ${{ if and(ne(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'Schedule')) }}: + + # build mono + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: release + platforms: + - Linux_x64 + + # build coreclr and libraries + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/build-coreclr-and-libraries-job.yml + buildConfig: release + platforms: + - Linux_x64 + jobParameters: + testGroup: perf + +- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'Schedule')) }}: + + # build coreclr and libraries + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/build-coreclr-and-libraries-job.yml + buildConfig: release + platforms: + - Linux_x64 + - windows_x64 + - windows_x86 + - Linux_musl_x64 + jobParameters: + testGroup: perf + + # build mono for AOT + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: release + runtimeFlavor: mono + platforms: + - Linux_x64 + jobParameters: + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + nameSuffix: AOT + isOfficialBuild: false + extraStepsTemplate: /eng/pipelines/common/upload-artifact-step.yml + extraStepsParameters: + rootFolder: '$(Build.SourcesDirectory)/artifacts/' + includeRootFolder: true + displayName: AOT Mono Artifacts + artifactName: LinuxMonoAOTx64 + archiveExtension: '.tar.gz' + archiveType: tar + tarCompression: gz + + # build mono Android scenarios + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: release + runtimeFlavor: mono + platforms: + - Android_arm64 + jobParameters: + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + nameSuffix: AndroidMono + isOfficialBuild: false + extraStepsTemplate: /eng/pipelines/coreclr/templates/build-perf-sample-apps.yml + extraStepsParameters: + rootFolder: '$(Build.SourcesDirectory)/artifacts/' + includeRootFolder: true + displayName: Android Mono Artifacts + artifactName: AndroidMonoarm64 + archiveExtension: '.tar.gz' + archiveType: tar + tarCompression: gz + + # build mono iOS scenarios + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: release + runtimeFlavor: mono + platforms: + - iOS_arm64 + jobParameters: + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + nameSuffix: iOSMono + isOfficialBuild: false + extraStepsTemplate: /eng/pipelines/coreclr/templates/build-perf-sample-apps.yml + extraStepsParameters: + rootFolder: '$(Build.SourcesDirectory)/artifacts/' + includeRootFolder: true + displayName: iOS Mono Artifacts + artifactName: iOSMonoarm64 + archiveExtension: '.tar.gz' + archiveType: tar + tarCompression: gz + + # build mono + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: release + platforms: + - Linux_x64 + + # run mono and maui android scenarios + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml + buildConfig: release + runtimeFlavor: mono + platforms: + - Windows_x64 + variables: + - name: mauiVersion + value: $[ dependencies.Build_iOS_arm64_release_MACiOSAndroidMaui.outputs['getMauiVersion.mauiVersion'] ] + jobParameters: + testGroup: perf + runtimeType: AndroidMono + projectFile: android_scenarios.proj + runKind: android_scenarios + runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml + logicalmachine: 'perfpixel4a' + additionalSetupParameters: "-MauiVersion $env:mauiVersion" + + # run mono iOS scenarios and maui iOS scenarios + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml + buildConfig: release + runtimeFlavor: mono + platforms: + - OSX_x64 + variables: + - name: mauiVersion + value: $[ dependencies.Build_iOS_arm64_release_MACiOSAndroidMaui.outputs['getMauiVersion.mauiVersion'] ] + jobParameters: + testGroup: perf + runtimeType: iOSMono + projectFile: ios_scenarios.proj + runKind: ios_scenarios + runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml + logicalmachine: 'perfiphone12mini' + iOSLlvmBuild: False + additionalSetupParameters: "--mauiversion $(mauiVersion)" + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml + buildConfig: release + runtimeFlavor: mono + platforms: + - OSX_x64 + variables: + - name: mauiVersion + value: $[ dependencies.Build_iOS_arm64_release_MACiOSAndroidMaui.outputs['getMauiVersion.mauiVersion'] ] + jobParameters: + testGroup: perf + runtimeType: iOSMono + projectFile: ios_scenarios.proj + runKind: ios_scenarios + runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml + logicalmachine: 'perfiphone12mini' + iOSLlvmBuild: True + additionalSetupParameters: "--mauiversion $(mauiVersion)" + + # run mono microbenchmarks perf job + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml + buildConfig: release + runtimeFlavor: mono + platforms: + - Linux_x64 + jobParameters: + testGroup: perf + liveLibrariesBuildConfig: Release + runtimeType: mono + projectFile: microbenchmarks.proj + runKind: micro_mono + runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml + logicalmachine: 'perftiger' + + # run mono interpreter perf job + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml + buildConfig: release + runtimeFlavor: mono + platforms: + - Linux_x64 + jobParameters: + testGroup: perf + liveLibrariesBuildConfig: Release + runtimeType: mono + codeGenType: 'Interpreter' + projectFile: microbenchmarks.proj + runKind: micro_mono + runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml + logicalmachine: 'perftiger' + + # run mono aot microbenchmarks perf job + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml # NOTE: should we move this file out of coreclr tempelates because it contains mono jobs? + buildConfig: release + runtimeFlavor: aot + platforms: + - Linux_x64 + jobParameters: + testGroup: perf + liveLibrariesBuildConfig: Release + runtimeType: mono + codeGenType: 'AOT' + projectFile: microbenchmarks.proj + runKind: micro_mono + runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml + logicalmachine: 'perftiger' + + # run coreclr perftiger microbenchmarks perf job + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml + buildConfig: release + runtimeFlavor: coreclr + platforms: + - Linux_x64 + - windows_x64 + - windows_x86 + - Linux_musl_x64 + jobParameters: + testGroup: perf + liveLibrariesBuildConfig: Release + projectFile: microbenchmarks.proj + runKind: micro + runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml + logicalmachine: 'perftiger' + + # run coreclr perftiger microbenchmarks pgo perf jobs + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml + buildConfig: release + runtimeFlavor: coreclr + platforms: + - windows_x64 + jobParameters: + testGroup: perf + liveLibrariesBuildConfig: Release + projectFile: microbenchmarks.proj + runKind: micro + runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml + logicalmachine: 'perftiger' + pgoRunType: -NoPgo + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml + buildConfig: release + runtimeFlavor: coreclr + platforms: + - windows_x64 + jobParameters: + testGroup: perf + liveLibrariesBuildConfig: Release + projectFile: microbenchmarks.proj + runKind: micro + runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml + logicalmachine: 'perftiger' + pgoRunType: -DynamicPgo + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml + buildConfig: release + runtimeFlavor: coreclr + platforms: + - windows_x64 + jobParameters: + testGroup: perf + liveLibrariesBuildConfig: Release + projectFile: microbenchmarks.proj + runKind: micro + runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml + logicalmachine: 'perftiger' + pgoRunType: -FullPgo + + # run coreclr perfowl microbenchmarks perf job + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml + buildConfig: release + runtimeFlavor: coreclr + platforms: + - Linux_x64 + - windows_x64 + jobParameters: + testGroup: perf + liveLibrariesBuildConfig: Release + projectFile: microbenchmarks.proj + runKind: micro + runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml + logicalmachine: 'perfowl' + + # run coreclr crossgen perf job + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml + buildConfig: release + runtimeFlavor: coreclr + platforms: + - Linux_x64 + - windows_x64 + - windows_x86 + jobParameters: + testGroup: perf + liveLibrariesBuildConfig: Release + projectFile: crossgen_perf.proj + runKind: crossgen_scenarios + runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml + logicalmachine: 'perftiger' + + # Uncomment to reenable package replacement + ## build maui runtime packs + #- template: /eng/pipelines/common/platform-matrix.yml + # parameters: + # jobTemplate: /eng/pipelines/common/global-build-job.yml + # buildConfig: release + # runtimeFlavor: mono + # platforms: + # - Android_x86 + # - Android_x64 + # - Android_arm + # - Android_arm64 + # - MacCatalyst_x64 + # - iOSSimulator_x64 + # - iOS_arm64 + # - iOS_arm + # jobParameters: + # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + # nameSuffix: Maui_Packs_Mono + # isOfficialBuild: false + # extraStepsTemplate: /eng/pipelines/common/upload-intermediate-artifacts-step.yml + # extraStepsParameters: + # name: MonoRuntimePacks + + # build maui app + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: release + runtimeFlavor: mono + platforms: + - iOS_arm64 + jobParameters: + # Uncomment to reenable package replacement + #dependsOn: + # - Build_Android_arm_release_Maui_Packs_Mono + # - Build_Android_arm64_release_Maui_Packs_Mono + # - Build_Android_x86_release_Maui_Packs_Mono + # - Build_Android_x64_release_Maui_Packs_Mono + # - Build_MacCatalyst_x64_release_Maui_Packs_Mono + # - Build_iOSSimulator_x64_release_Maui_Packs_Mono + # - Build_iOS_arm_release_Maui_Packs_Mono + # - Build_iOS_arm64_release_Maui_Packs_Mono + buildArgs: -s mono -c $(_BuildConfig) + nameSuffix: MACiOSAndroidMaui + isOfficialBuild: false + pool: + vmImage: 'macos-11' + extraStepsTemplate: /eng/pipelines/coreclr/templates/build-perf-maui-apps.yml + extraStepsParameters: + rootFolder: '$(Build.SourcesDirectory)/artifacts/' + includeRootFolder: true + displayName: MAC, iOS, and Android Maui Artifacts + artifactName: MACiOSAndroidMauiArm + archiveExtension: '.tar.gz' + archiveType: tar + tarCompression: gz diff --git a/eng/pipelines/coreclr/perf-wasm-jobs.yml b/eng/pipelines/coreclr/perf-wasm-jobs.yml new file mode 100644 index 0000000000000..c75b9dfd7183f --- /dev/null +++ b/eng/pipelines/coreclr/perf-wasm-jobs.yml @@ -0,0 +1,161 @@ +# This contains all the wasm related perf jobs +# + +parameters: + runProfile: 'option#1' + compare: false + onlySanityCheck: false + downloadSpecificBuild: null # { buildId, pipeline, branchName, project } + +jobs: + +- ${{ if eq(parameters.runProfile, 'option#1') }}: + - ${{ if eq(parameters.downloadSpecificBuild.buildId, '') }}: + # build mono on wasm - if not using an existing build + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - Browser_wasm + jobParameters: + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + nameSuffix: wasm + isOfficialBuild: false + extraStepsTemplate: /eng/pipelines/coreclr/perf-wasm-prepare-artifacts-steps.yml + extraStepsParameters: + configForBuild: Release + + #run mono wasm microbenchmarks perf job + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml # NOTE: should we move this file out of coreclr tempelates because it contains mono jobs? + buildConfig: Release + runtimeFlavor: wasm + platforms: + - Linux_x64 + jobParameters: + testGroup: perf + liveLibrariesBuildConfig: Release + runtimeType: wasm + codeGenType: 'wasm' + projectFile: microbenchmarks.proj + runKind: micro + runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml + logicalmachine: 'perftiger' + javascriptEngine: 'javascriptcore' + collectHelixLogsScript: ${{ variables['_wasmCollectHelixLogsScript'] }} + downloadSpecificBuild: ${{ parameters.downloadSpecificBuild }} + #downloadSpecificBuild: + #buildId: '1693181' + #pipeline: 'perf-wasm' + #branchName: 'refs/pull/67312/head' + + #run mono wasm aot microbenchmarks perf job + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobtemplate: /eng/pipelines/coreclr/templates/perf-job.yml # note: should we move this file out of coreclr tempelates because it contains mono jobs? + buildconfig: Release + runtimeflavor: wasm + platforms: + - linux_x64 + jobparameters: + testgroup: perf + livelibrariesbuildconfig: Release + skipLiveLibrariesDownload: true + runtimetype: wasm + codegentype: 'aot' + projectfile: microbenchmarks.proj + runkind: micro + runjobtemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml + logicalmachine: 'perftiger' + javascriptengine: 'javascriptcore' + collectHelixLogsScript: ${{ variables['_wasmCollectHelixLogsScript'] }} + downloadSpecificBuild: ${{ parameters.downloadSpecificBuild }} + +- ${{ if eq(parameters.runProfile, 'option#2') }}: + - ${{ if eq(parameters.downloadSpecificBuild.buildId, '') }}: + # build mono on wasm - if not using an existing build + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - Browser_wasm + jobParameters: + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + nameSuffix: wasm + isOfficialBuild: false + extraStepsTemplate: /eng/pipelines/coreclr/perf-wasm-prepare-artifacts-steps.yml + extraStepsParameters: + configForBuild: Release + + # run mono wasm interpreter (default) microbenchmarks perf job + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml # NOTE: should we move this file out of coreclr tempelates because it contains mono jobs? + buildConfig: release + runtimeFlavor: wasm + platforms: + - Linux_x64 + jobParameters: + testGroup: perf + liveLibrariesBuildConfig: Release + skipLiveLibrariesDownload: true + runtimeType: wasm + codeGenType: 'wasm' + projectFile: microbenchmarks.proj + runKind: micro + runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml + logicalmachine: 'perftiger' + javascriptEngine: 'v8' + collectHelixLogsScript: ${{ variables['_wasmCollectHelixLogsScript'] }} + compare: ${{ parameters.compare }} + onlySanityCheck: ${{ parameters.onlySanityCheck }} + downloadSpecificBuild: ${{ parameters.downloadSpecificBuild }} + + #run mono wasm aot microbenchmarks perf job + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobtemplate: /eng/pipelines/coreclr/templates/perf-job.yml # note: should we move this file out of coreclr tempelates because it contains mono jobs? + buildconfig: release + runtimeflavor: wasm + platforms: + - linux_x64 + jobparameters: + testgroup: perf + livelibrariesbuildconfig: Release + skipLiveLibrariesDownload: true + runtimetype: wasm + codegentype: 'aot' + projectfile: microbenchmarks.proj + runkind: micro + runjobtemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml + logicalmachine: 'perftiger' + javascriptEngine: 'v8' + collectHelixLogsScript: ${{ variables['_wasmCollectHelixLogsScript'] }} + compare: ${{ parameters.compare }} + onlySanityCheck: ${{ parameters.onlySanityCheck }} + downloadSpecificBuild: ${{ parameters.downloadSpecificBuild }} + + # run mono wasm blazor perf job + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml + buildConfig: release + runtimeFlavor: wasm + platforms: + - Linux_x64 + jobParameters: + testGroup: perf + liveLibrariesBuildConfig: Release + skipLiveLibrariesDownload: true + runtimeType: wasm + projectFile: blazor_perf.proj + runKind: blazor_scenarios + runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml + #additionalSetupParameters: '--latestdotnet' - doesn't do anything, IIUC. see performance-setup.sh + logicalmachine: 'perftiger' + downloadSpecificBuild: ${{ parameters.downloadSpecificBuild }} diff --git a/eng/pipelines/coreclr/perf-wasm.yml b/eng/pipelines/coreclr/perf-wasm.yml new file mode 100644 index 0000000000000..51548a6c674f3 --- /dev/null +++ b/eng/pipelines/coreclr/perf-wasm.yml @@ -0,0 +1,25 @@ +# This is a wrapper yml for `perf-wasm-jobs`, which has all the perf related +# wasm jobs. This file is essentially so we can point the pipeline in azdo +# UI to this, and thus avoid any scheduled triggers + +trigger: none + +variables: + - template: /eng/pipelines/common/variables.yml + +jobs: + +# +# Evaluate paths +# +#- ${{ if eq(variables.dependOnEvaluatePaths, true) }}: + #- template: /eng/pipelines/common/evaluate-default-paths.yml + +- template: /eng/pipelines/coreclr/perf-wasm-jobs.yml + parameters: + runProfile: 'option#2' + #onlySanityCheck: false + #downloadSpecificBuild: + #buildId: '1694033' + #pipeline: 'perf-wasm' + #branchName: 'refs/pull/67312/head' diff --git a/eng/pipelines/coreclr/perf.yml b/eng/pipelines/coreclr/perf.yml index 490efbffaa505..13ceb887cc320 100644 --- a/eng/pipelines/coreclr/perf.yml +++ b/eng/pipelines/coreclr/perf.yml @@ -29,522 +29,11 @@ schedules: jobs: -- ${{ if and(ne(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'Schedule')) }}: - - # build mono - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: release - platforms: - - Linux_x64 - - # build coreclr and libraries - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/build-coreclr-and-libraries-job.yml - buildConfig: release - platforms: - - Linux_x64 - jobParameters: - testGroup: perf - - # build mono on wasm - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - Browser_wasm - jobParameters: - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - nameSuffix: wasm - isOfficialBuild: false - extraStepsTemplate: /eng/pipelines/coreclr/perf-wasm-prepare-artifacts-steps.yml - extraStepsParameters: - configForBuild: Release - - #run mono wasm microbenchmarks perf job - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml # NOTE: should we move this file out of coreclr tempelates because it contains mono jobs? - buildConfig: Release - runtimeFlavor: wasm - platforms: - - Linux_x64 - jobParameters: - testGroup: perf - liveLibrariesBuildConfig: Release - runtimeType: wasm - codeGenType: 'wasm' - projectFile: microbenchmarks.proj - runKind: micro - runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml - logicalmachine: 'perftiger' - javascriptEngine: 'javascriptcore' - collectHelixLogsScript: ${{ variables['_wasmCollectHelixLogsScript'] }} - - #run mono wasm aot microbenchmarks perf job - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobtemplate: /eng/pipelines/coreclr/templates/perf-job.yml # note: should we move this file out of coreclr tempelates because it contains mono jobs? - buildconfig: Release - runtimeflavor: wasm - platforms: - - linux_x64 - jobparameters: - testgroup: perf - livelibrariesbuildconfig: Release - skipLiveLibrariesDownload: true - runtimetype: wasm - codegentype: 'aot' - projectfile: microbenchmarks.proj - runkind: micro - runjobtemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml - logicalmachine: 'perftiger' - javascriptengine: 'javascriptcore' - collectHelixLogsScript: ${{ variables['_wasmCollectHelixLogsScript'] }} - -- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'Schedule')) }}: - - # build coreclr and libraries - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/build-coreclr-and-libraries-job.yml - buildConfig: release - platforms: - - Linux_x64 - - windows_x64 - - windows_x86 - - Linux_musl_x64 - jobParameters: - testGroup: perf - - # build mono on wasm - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - Browser_wasm - jobParameters: - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - nameSuffix: wasm - isOfficialBuild: false - extraStepsTemplate: /eng/pipelines/coreclr/perf-wasm-prepare-artifacts-steps.yml - extraStepsParameters: - configForBuild: Release - - # build mono for AOT - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: release - runtimeFlavor: mono - platforms: - - Linux_x64 - jobParameters: - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - nameSuffix: AOT - isOfficialBuild: false - extraStepsTemplate: /eng/pipelines/common/upload-artifact-step.yml - extraStepsParameters: - rootFolder: '$(Build.SourcesDirectory)/artifacts/' - includeRootFolder: true - displayName: AOT Mono Artifacts - artifactName: LinuxMonoAOTx64 - archiveExtension: '.tar.gz' - archiveType: tar - tarCompression: gz - - # build mono Android scenarios - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: release - runtimeFlavor: mono - platforms: - - Android_arm64 - jobParameters: - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - nameSuffix: AndroidMono - isOfficialBuild: false - extraStepsTemplate: /eng/pipelines/coreclr/templates/build-perf-sample-apps.yml - extraStepsParameters: - rootFolder: '$(Build.SourcesDirectory)/artifacts/' - includeRootFolder: true - displayName: Android Mono Artifacts - artifactName: AndroidMonoarm64 - archiveExtension: '.tar.gz' - archiveType: tar - tarCompression: gz - - # build mono iOS scenarios - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: release - runtimeFlavor: mono - platforms: - - iOS_arm64 - jobParameters: - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - nameSuffix: iOSMono - isOfficialBuild: false - extraStepsTemplate: /eng/pipelines/coreclr/templates/build-perf-sample-apps.yml - extraStepsParameters: - rootFolder: '$(Build.SourcesDirectory)/artifacts/' - includeRootFolder: true - displayName: iOS Mono Artifacts - artifactName: iOSMonoarm64 - archiveExtension: '.tar.gz' - archiveType: tar - tarCompression: gz - - # build mono - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: release - platforms: - - Linux_x64 - - # run mono and maui android scenarios - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml - buildConfig: release - runtimeFlavor: mono - platforms: - - Windows_x64 - variables: - - name: mauiVersion - value: $[ dependencies.Build_iOS_arm64_release_MACiOSAndroidMaui.outputs['getMauiVersion.mauiVersion'] ] - jobParameters: - testGroup: perf - runtimeType: AndroidMono - projectFile: android_scenarios.proj - runKind: android_scenarios - runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml - logicalmachine: 'perfpixel4a' - additionalSetupParameters: "-MauiVersion $env:mauiVersion" - - # run mono iOS scenarios and maui iOS scenarios - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml - buildConfig: release - runtimeFlavor: mono - platforms: - - OSX_x64 - variables: - - name: mauiVersion - value: $[ dependencies.Build_iOS_arm64_release_MACiOSAndroidMaui.outputs['getMauiVersion.mauiVersion'] ] - jobParameters: - testGroup: perf - runtimeType: iOSMono - projectFile: ios_scenarios.proj - runKind: ios_scenarios - runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml - logicalmachine: 'perfiphone12mini' - iOSLlvmBuild: False - additionalSetupParameters: "--mauiversion $(mauiVersion)" - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml - buildConfig: release - runtimeFlavor: mono - platforms: - - OSX_x64 - variables: - - name: mauiVersion - value: $[ dependencies.Build_iOS_arm64_release_MACiOSAndroidMaui.outputs['getMauiVersion.mauiVersion'] ] - jobParameters: - testGroup: perf - runtimeType: iOSMono - projectFile: ios_scenarios.proj - runKind: ios_scenarios - runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml - logicalmachine: 'perfiphone12mini' - iOSLlvmBuild: True - additionalSetupParameters: "--mauiversion $(mauiVersion)" - - # run mono microbenchmarks perf job - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml - buildConfig: release - runtimeFlavor: mono - platforms: - - Linux_x64 - jobParameters: - testGroup: perf - liveLibrariesBuildConfig: Release - runtimeType: mono - projectFile: microbenchmarks.proj - runKind: micro_mono - runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml - logicalmachine: 'perftiger' - - # run mono interpreter perf job - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml - buildConfig: release - runtimeFlavor: mono - platforms: - - Linux_x64 - jobParameters: - testGroup: perf - liveLibrariesBuildConfig: Release - runtimeType: mono - codeGenType: 'Interpreter' - projectFile: microbenchmarks.proj - runKind: micro_mono - runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml - logicalmachine: 'perftiger' - - # run mono wasm interpreter (default) microbenchmarks perf job - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml # NOTE: should we move this file out of coreclr tempelates because it contains mono jobs? - buildConfig: release - runtimeFlavor: wasm - platforms: - - Linux_x64 - jobParameters: - testGroup: perf - liveLibrariesBuildConfig: Release - skipLiveLibrariesDownload: true - runtimeType: wasm - codeGenType: 'wasm' - projectFile: microbenchmarks.proj - runKind: micro - runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml - logicalmachine: 'perftiger' - javascriptEngine: 'v8' - collectHelixLogsScript: ${{ variables['_wasmCollectHelixLogsScript'] }} - - #run mono wasm aot microbenchmarks perf job - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobtemplate: /eng/pipelines/coreclr/templates/perf-job.yml # note: should we move this file out of coreclr tempelates because it contains mono jobs? - buildconfig: release - runtimeflavor: wasm - platforms: - - linux_x64 - jobparameters: - testgroup: perf - livelibrariesbuildconfig: Release - skipLiveLibrariesDownload: true - runtimetype: wasm - codegentype: 'aot' - projectfile: microbenchmarks.proj - runkind: micro - runjobtemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml - logicalmachine: 'perftiger' - javascriptEngine: 'v8' - collectHelixLogsScript: ${{ variables['_wasmCollectHelixLogsScript'] }} - - # run mono aot microbenchmarks perf job - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml # NOTE: should we move this file out of coreclr tempelates because it contains mono jobs? - buildConfig: release - runtimeFlavor: aot - platforms: - - Linux_x64 - jobParameters: - testGroup: perf - liveLibrariesBuildConfig: Release - runtimeType: mono - codeGenType: 'AOT' - projectFile: microbenchmarks.proj - runKind: micro_mono - runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml - logicalmachine: 'perftiger' - - # run coreclr perftiger microbenchmarks perf job - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml - buildConfig: release - runtimeFlavor: coreclr - platforms: - - Linux_x64 - - windows_x64 - - windows_x86 - - Linux_musl_x64 - jobParameters: - testGroup: perf - liveLibrariesBuildConfig: Release - projectFile: microbenchmarks.proj - runKind: micro - runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml - logicalmachine: 'perftiger' - - # run coreclr perftiger microbenchmarks pgo perf jobs - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml - buildConfig: release - runtimeFlavor: coreclr - platforms: - - windows_x64 - jobParameters: - testGroup: perf - liveLibrariesBuildConfig: Release - projectFile: microbenchmarks.proj - runKind: micro - runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml - logicalmachine: 'perftiger' - pgoRunType: -NoPgo - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml - buildConfig: release - runtimeFlavor: coreclr - platforms: - - windows_x64 - jobParameters: - testGroup: perf - liveLibrariesBuildConfig: Release - projectFile: microbenchmarks.proj - runKind: micro - runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml - logicalmachine: 'perftiger' - pgoRunType: -DynamicPgo - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml - buildConfig: release - runtimeFlavor: coreclr - platforms: - - windows_x64 - jobParameters: - testGroup: perf - liveLibrariesBuildConfig: Release - projectFile: microbenchmarks.proj - runKind: micro - runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml - logicalmachine: 'perftiger' - pgoRunType: -FullPgo - - # run coreclr perfowl microbenchmarks perf job - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml - buildConfig: release - runtimeFlavor: coreclr - platforms: - - Linux_x64 - - windows_x64 - jobParameters: - testGroup: perf - liveLibrariesBuildConfig: Release - projectFile: microbenchmarks.proj - runKind: micro - runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml - logicalmachine: 'perfowl' - - # run coreclr crossgen perf job - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml - buildConfig: release - runtimeFlavor: coreclr - platforms: - - Linux_x64 - - windows_x64 - - windows_x86 - jobParameters: - testGroup: perf - liveLibrariesBuildConfig: Release - projectFile: crossgen_perf.proj - runKind: crossgen_scenarios - runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml - logicalmachine: 'perftiger' - - # run mono wasm blazor perf job - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml - buildConfig: release - runtimeFlavor: wasm - platforms: - - Linux_x64 - jobParameters: - testGroup: perf - liveLibrariesBuildConfig: Release - skipLiveLibrariesDownload: true - runtimeType: wasm - projectFile: blazor_perf.proj - runKind: blazor_scenarios - runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml - additionalSetupParameters: '--latestdotnet' - logicalmachine: 'perftiger' - - # Uncomment to reenable package replacement - ## build maui runtime packs - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: release - # runtimeFlavor: mono - # platforms: - # - Android_x86 - # - Android_x64 - # - Android_arm - # - Android_arm64 - # - MacCatalyst_x64 - # - iOSSimulator_x64 - # - iOS_arm64 - # - iOS_arm - # jobParameters: - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # nameSuffix: Maui_Packs_Mono - # isOfficialBuild: false - # extraStepsTemplate: /eng/pipelines/common/upload-intermediate-artifacts-step.yml - # extraStepsParameters: - # name: MonoRuntimePacks - - # build maui app - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: release - runtimeFlavor: mono - platforms: - - iOS_arm64 - jobParameters: - # Uncomment to reenable package replacement - #dependsOn: - # - Build_Android_arm_release_Maui_Packs_Mono - # - Build_Android_arm64_release_Maui_Packs_Mono - # - Build_Android_x86_release_Maui_Packs_Mono - # - Build_Android_x64_release_Maui_Packs_Mono - # - Build_MacCatalyst_x64_release_Maui_Packs_Mono - # - Build_iOSSimulator_x64_release_Maui_Packs_Mono - # - Build_iOS_arm_release_Maui_Packs_Mono - # - Build_iOS_arm64_release_Maui_Packs_Mono - buildArgs: -s mono -c $(_BuildConfig) - nameSuffix: MACiOSAndroidMaui - isOfficialBuild: false - pool: - vmImage: 'macos-11' - extraStepsTemplate: /eng/pipelines/coreclr/templates/build-perf-maui-apps.yml - extraStepsParameters: - rootFolder: '$(Build.SourcesDirectory)/artifacts/' - includeRootFolder: true - displayName: MAC, iOS, and Android Maui Artifacts - artifactName: MACiOSAndroidMauiArm - archiveExtension: '.tar.gz' - archiveType: tar - tarCompression: gz +- template: /eng/pipelines/coreclr/perf-wasm-jobs.yml + parameters: + ${{ and(ne(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'Schedule')) }}: + runProfile: 'option#1' + ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'Schedule')) }}: + runProfile: 'option#2' + +#- template: /eng/pipelines/coreclr/perf-non-wasm-jobs.yml diff --git a/eng/pipelines/coreclr/templates/perf-job.yml b/eng/pipelines/coreclr/templates/perf-job.yml index 5e2c5a4146a70..0a26d41692984 100644 --- a/eng/pipelines/coreclr/templates/perf-job.yml +++ b/eng/pipelines/coreclr/templates/perf-job.yml @@ -219,7 +219,7 @@ jobs: artifactFileName: 'MauiBlazorAndroidApp.tar.gz' artifactName: 'MauiBlazorAndroidApp' displayName: 'Maui Blazor Android App' - + # Download iOSMono tests and MauiiOS/MacCatalyst - ${{ if eq(parameters.runtimeType, 'iOSMono') }}: diff --git a/eng/pipelines/coreclr/templates/run-scenarios-job.yml b/eng/pipelines/coreclr/templates/run-scenarios-job.yml index 79907ff7084a0..f7a4a06890ffa 100644 --- a/eng/pipelines/coreclr/templates/run-scenarios-job.yml +++ b/eng/pipelines/coreclr/templates/run-scenarios-job.yml @@ -135,7 +135,7 @@ jobs: condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT')) continueOnError: ${{ parameters.continueOnError }} # run ci-setup - - script: $(Python) $(PerformanceDirectory)\scripts\ci_setup.py $(SetupArguments) $(ExtraSetupArguments) --output-file $(WorkItemDirectory)\machine-setup.cmd + - script: $(Python) $(PerformanceDirectory)\scripts\ci_setup.py $(SetupArguments) $(ExtraSetupArguments) --output-file $(WorkItemDirectory)\machine-setup.cmd displayName: Run ci setup script (Windows) condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT')) - script: $(Python) $(PerformanceDirectory)/scripts/ci_setup.py $(SetupArguments) $(ExtraSetupArguments) --output-file $(WorkItemDirectory)/machine-setup.sh @@ -196,7 +196,7 @@ jobs: includeRootFolder: false archiveFile: '$(WorkItemDirectory).zip' verbose: True - + # run perf testing in helix - template: /eng/pipelines/coreclr/templates/perf-send-to-helix.yml parameters: diff --git a/eng/pipelines/runtime-extra-platforms-wasm.yml b/eng/pipelines/runtime-extra-platforms-wasm.yml index 98a9079ece2aa..672d4a7ddb518 100644 --- a/eng/pipelines/runtime-extra-platforms-wasm.yml +++ b/eng/pipelines/runtime-extra-platforms-wasm.yml @@ -46,6 +46,11 @@ jobs: runAOT: true alwaysRun: true + - template: /eng/pipelines/coreclr/perf-wasm-jobs.yml + parameters: + runProfile: 'option#2' + onlySanityCheck: true + # # ********** For !rolling builds, IOW - PR builds ************* # - run everything, if relevant paths changed @@ -170,3 +175,8 @@ jobs: alwaysRun: ${{ parameters.isWasmOnlyBuild }} # ff tests are unstable currently shouldContinueOnError: true + + - template: /eng/pipelines/coreclr/perf-wasm-jobs.yml + parameters: + runProfile: 'option#2' + onlySanityCheck: true diff --git a/eng/testing/performance/performance-setup.sh b/eng/testing/performance/performance-setup.sh index 667b225031e49..4cc4a723d8c60 100755 --- a/eng/testing/performance/performance-setup.sh +++ b/eng/testing/performance/performance-setup.sh @@ -35,6 +35,7 @@ javascript_engine="v8" iosmono=false iosllvmbuild="" maui_version="" +only_sanity=false while (($# > 0)); do lowerI="$(echo $1 | tr "[:upper:]" "[:lower:]")" @@ -157,6 +158,10 @@ while (($# > 0)); do maui_version=$2 shift 2 ;; + --only-sanity) + only_sanity=true + shift 1 + ;; *) echo "Common settings:" echo " --corerootdirectory Directory where Core_Root exists, if running perf testing with --corerun" @@ -409,3 +414,4 @@ Write-PipelineSetVariable -name "Compare" -value "$compare" -is_multi_job_variab Write-PipelineSetVariable -name "MonoDotnet" -value "$using_mono" -is_multi_job_variable false Write-PipelineSetVariable -name "WasmDotnet" -value "$using_wasm" -is_multi_job_variable false Write-PipelineSetVariable -Name 'iOSLlvmBuild' -Value "$iosllvmbuild" -is_multi_job_variable false +Write-PipelineSetVariable -name "OnlySanityCheck" -value "$only_sanity" -is_multi_job_variable false From 97a263766cc4c7e346bc517cdceead27f7e522f0 Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Wed, 13 Jul 2022 18:58:22 +0000 Subject: [PATCH 04/10] Add support for running sanity checks as part of non perf only pipelines --- eng/pipelines/common/perf-variables.yml | 4 ++-- eng/pipelines/coreclr/perf-wasm-jobs.yml | 9 +++++---- eng/pipelines/coreclr/perf-wasm.yml | 5 +++-- eng/pipelines/coreclr/templates/perf-send-to-helix.yml | 2 ++ eng/pipelines/coreclr/templates/run-scenarios-job.yml | 2 +- eng/testing/performance/microbenchmarks.proj | 5 ++++- 6 files changed, 17 insertions(+), 10 deletions(-) diff --git a/eng/pipelines/common/perf-variables.yml b/eng/pipelines/common/perf-variables.yml index a26a979fc3b1d..c40e91741549e 100644 --- a/eng/pipelines/common/perf-variables.yml +++ b/eng/pipelines/common/perf-variables.yml @@ -7,9 +7,9 @@ variables: mkdir -p $HELIX_WORKITEM_UPLOAD_ROOT/log/MicroBenchmarks/obj; mkdir -p $HELIX_WORKITEM_UPLOAD_ROOT/log/MicroBenchmarks/bin; mkdir -p $HELIX_WORKITEM_UPLOAD_ROOT/log/BenchmarkDotNet.Autogenerated/obj; - mkdir -p $HELIX_WORKITEM_UPLOAD_ROOT/log/BenchmarkDotNet.Autogenerated/bin; + mkdir -p $HELIX_WORKITEM_UPLOAD_ROOT/log/for-running; find $_PERF_DIR -name '*.binlog' | xargs -I{} cp {} $HELIX_WORKITEM_UPLOAD_ROOT/log; cp -R $_PERF_DIR/artifacts/obj/MicroBenchmarks $HELIX_WORKITEM_UPLOAD_ROOT/log/MicroBenchmarks/obj; cp -R $_PERF_DIR/artifacts/bin/MicroBenchmarks $HELIX_WORKITEM_UPLOAD_ROOT/log/MicroBenchmarks/bin; cp -R $_PERF_DIR/artifacts/obj/BenchmarkDotNet.Autogenerated $HELIX_WORKITEM_UPLOAD_ROOT/log/BenchmarkDotNet.Autogenerated/obj; - cp -R $_PERF_DIR/artifacts/bin/BenchmarkDotNet.Autogenerated $HELIX_WORKITEM_UPLOAD_ROOT/log/BenchmarkDotNet.Autogenerated/bin)) + cp -R $_PERF_DIR/artifacts/bin/for-running $HELIX_WORKITEM_UPLOAD_ROOT/log/for-running)) diff --git a/eng/pipelines/coreclr/perf-wasm-jobs.yml b/eng/pipelines/coreclr/perf-wasm-jobs.yml index c75b9dfd7183f..2347c01cb615f 100644 --- a/eng/pipelines/coreclr/perf-wasm-jobs.yml +++ b/eng/pipelines/coreclr/perf-wasm-jobs.yml @@ -6,6 +6,7 @@ parameters: compare: false onlySanityCheck: false downloadSpecificBuild: null # { buildId, pipeline, branchName, project } + collectHelixLogsScript: '' jobs: @@ -45,7 +46,7 @@ jobs: runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml logicalmachine: 'perftiger' javascriptEngine: 'javascriptcore' - collectHelixLogsScript: ${{ variables['_wasmCollectHelixLogsScript'] }} + collectHelixLogsScript: ${{ parameters.collectHelixLogsScript }} downloadSpecificBuild: ${{ parameters.downloadSpecificBuild }} #downloadSpecificBuild: #buildId: '1693181' @@ -71,7 +72,7 @@ jobs: runjobtemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml logicalmachine: 'perftiger' javascriptengine: 'javascriptcore' - collectHelixLogsScript: ${{ variables['_wasmCollectHelixLogsScript'] }} + collectHelixLogsScript: ${{ parameters.collectHelixLogsScript }} downloadSpecificBuild: ${{ parameters.downloadSpecificBuild }} - ${{ if eq(parameters.runProfile, 'option#2') }}: @@ -111,7 +112,7 @@ jobs: runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml logicalmachine: 'perftiger' javascriptEngine: 'v8' - collectHelixLogsScript: ${{ variables['_wasmCollectHelixLogsScript'] }} + collectHelixLogsScript: ${{ parameters.collectHelixLogsScript }} compare: ${{ parameters.compare }} onlySanityCheck: ${{ parameters.onlySanityCheck }} downloadSpecificBuild: ${{ parameters.downloadSpecificBuild }} @@ -135,7 +136,7 @@ jobs: runjobtemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml logicalmachine: 'perftiger' javascriptEngine: 'v8' - collectHelixLogsScript: ${{ variables['_wasmCollectHelixLogsScript'] }} + collectHelixLogsScript: ${{ parameters.collectHelixLogsScript }} compare: ${{ parameters.compare }} onlySanityCheck: ${{ parameters.onlySanityCheck }} downloadSpecificBuild: ${{ parameters.downloadSpecificBuild }} diff --git a/eng/pipelines/coreclr/perf-wasm.yml b/eng/pipelines/coreclr/perf-wasm.yml index 51548a6c674f3..041c2e532c6d2 100644 --- a/eng/pipelines/coreclr/perf-wasm.yml +++ b/eng/pipelines/coreclr/perf-wasm.yml @@ -18,8 +18,9 @@ jobs: - template: /eng/pipelines/coreclr/perf-wasm-jobs.yml parameters: runProfile: 'option#2' + collectHelixLogsScript: ${{ variables._wasmCollectHelixLogsScript }} #onlySanityCheck: false #downloadSpecificBuild: - #buildId: '1694033' + #buildId: '1878694' #pipeline: 'perf-wasm' - #branchName: 'refs/pull/67312/head' + #branchName: 'refs/pull/72119/head' diff --git a/eng/pipelines/coreclr/templates/perf-send-to-helix.yml b/eng/pipelines/coreclr/templates/perf-send-to-helix.yml index a6f4636ce03df..44290b3f7d60f 100644 --- a/eng/pipelines/coreclr/templates/perf-send-to-helix.yml +++ b/eng/pipelines/coreclr/templates/perf-send-to-helix.yml @@ -9,6 +9,7 @@ parameters: HelixPreCommands: '' # optional -- commands to run before Helix work item execution HelixPostCommands: '' # optional -- commands to run after Helix work item execution WorkItemDirectory: '' # optional -- a payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects + WorkItemTimeout: '' # optional -- a timeout in TimeSpan.Parse-ready value (e.g. 00:02:00) for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects CorrelationPayloadDirectory: '' # optional -- a directory to zip up and send to Helix as a correlation payload IncludeDotNetCli: false # optional -- true will download a version of the .NET CLI onto the Helix machine as a correlation payload; requires DotNetCliPackageType and DotNetCliVersion DotNetCliPackageType: '' # optional -- either 'sdk', 'runtime' or 'aspnetcore-runtime'; determines whether the sdk or runtime will be sent to Helix; see https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases.json @@ -40,6 +41,7 @@ steps: HelixPreCommands: ${{ parameters.HelixPreCommands }} HelixPostCommands: ${{ parameters.HelixPostCommands }} WorkItemDirectory: ${{ parameters.WorkItemDirectory }} + WorkItemTimeout: ${{ parameters.WorkItemTimeout }} CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} diff --git a/eng/pipelines/coreclr/templates/run-scenarios-job.yml b/eng/pipelines/coreclr/templates/run-scenarios-job.yml index f7a4a06890ffa..47426ab059bd4 100644 --- a/eng/pipelines/coreclr/templates/run-scenarios-job.yml +++ b/eng/pipelines/coreclr/templates/run-scenarios-job.yml @@ -34,7 +34,7 @@ jobs: enableTelemetry: ${{ parameters.enableTelemetry }} enablePublishBuildArtifacts: true continueOnError: ${{ parameters.continueOnError }} - + ${{ if ne(parameters.displayName, '') }}: displayName: '${{ parameters.displayName }}' ${{ if eq(parameters.displayName, '') }}: diff --git a/eng/testing/performance/microbenchmarks.proj b/eng/testing/performance/microbenchmarks.proj index e91f8e72f6045..3aaa4fe7f2fc8 100644 --- a/eng/testing/performance/microbenchmarks.proj +++ b/eng/testing/performance/microbenchmarks.proj @@ -69,7 +69,7 @@ $(WorkItemCommand) $(CliArguments) - + 2:30 0:15 @@ -86,6 +86,9 @@ + + + From 2860556394ca892b8d751123cb74b784d345f1c4 Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Thu, 14 Jul 2022 16:36:09 -0400 Subject: [PATCH 05/10] [wasm] Set TrimMode=partial by default, which is equivalent to the older .. `TrimMode=link`. --- src/mono/wasm/build/WasmApp.InTree.props | 2 +- src/mono/wasm/build/WasmApp.LocalBuild.targets | 2 +- src/mono/wasm/build/WasmApp.props | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mono/wasm/build/WasmApp.InTree.props b/src/mono/wasm/build/WasmApp.InTree.props index 76c089b8dd4b8..125c4fb81f592 100644 --- a/src/mono/wasm/build/WasmApp.InTree.props +++ b/src/mono/wasm/build/WasmApp.InTree.props @@ -9,7 +9,7 @@ $([MSBuild]::NormalizeDirectory($(MonoProjectRoot), 'wasm', 'emsdk')) false true - link + partial false diff --git a/src/mono/wasm/build/WasmApp.LocalBuild.targets b/src/mono/wasm/build/WasmApp.LocalBuild.targets index 65e328b947297..97216c1750479 100644 --- a/src/mono/wasm/build/WasmApp.LocalBuild.targets +++ b/src/mono/wasm/build/WasmApp.LocalBuild.targets @@ -26,7 +26,7 @@ true - link + partial diff --git a/src/mono/wasm/build/WasmApp.props b/src/mono/wasm/build/WasmApp.props index 7fdde27c4affb..89ce6193cacbd 100644 --- a/src/mono/wasm/build/WasmApp.props +++ b/src/mono/wasm/build/WasmApp.props @@ -4,6 +4,7 @@ Browser browser-wasm true + partial <_WasmBuildCoreDependsOn> _InitializeCommonProperties; From 5a679c29f2ab00f743f3d6a69924287f7af2b32f Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Thu, 14 Jul 2022 20:50:27 -0400 Subject: [PATCH 06/10] cleanup names --- eng/pipelines/coreclr/perf-wasm-jobs.yml | 6 +++--- eng/pipelines/coreclr/perf-wasm.yml | 2 +- eng/pipelines/coreclr/perf.yml | 4 ++-- eng/pipelines/runtime-extra-platforms-wasm.yml | 18 ++++++++++-------- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/eng/pipelines/coreclr/perf-wasm-jobs.yml b/eng/pipelines/coreclr/perf-wasm-jobs.yml index 2347c01cb615f..9c84f1df28046 100644 --- a/eng/pipelines/coreclr/perf-wasm-jobs.yml +++ b/eng/pipelines/coreclr/perf-wasm-jobs.yml @@ -2,7 +2,7 @@ # parameters: - runProfile: 'option#1' + runProfile: 'non-v8' compare: false onlySanityCheck: false downloadSpecificBuild: null # { buildId, pipeline, branchName, project } @@ -10,7 +10,7 @@ parameters: jobs: -- ${{ if eq(parameters.runProfile, 'option#1') }}: +- ${{ if eq(parameters.runProfile, 'non-v8') }}: - ${{ if eq(parameters.downloadSpecificBuild.buildId, '') }}: # build mono on wasm - if not using an existing build - template: /eng/pipelines/common/platform-matrix.yml @@ -75,7 +75,7 @@ jobs: collectHelixLogsScript: ${{ parameters.collectHelixLogsScript }} downloadSpecificBuild: ${{ parameters.downloadSpecificBuild }} -- ${{ if eq(parameters.runProfile, 'option#2') }}: +- ${{ if eq(parameters.runProfile, 'v8') }}: - ${{ if eq(parameters.downloadSpecificBuild.buildId, '') }}: # build mono on wasm - if not using an existing build - template: /eng/pipelines/common/platform-matrix.yml diff --git a/eng/pipelines/coreclr/perf-wasm.yml b/eng/pipelines/coreclr/perf-wasm.yml index 041c2e532c6d2..0d554f052b98b 100644 --- a/eng/pipelines/coreclr/perf-wasm.yml +++ b/eng/pipelines/coreclr/perf-wasm.yml @@ -17,7 +17,7 @@ jobs: - template: /eng/pipelines/coreclr/perf-wasm-jobs.yml parameters: - runProfile: 'option#2' + runProfile: 'v8' collectHelixLogsScript: ${{ variables._wasmCollectHelixLogsScript }} #onlySanityCheck: false #downloadSpecificBuild: diff --git a/eng/pipelines/coreclr/perf.yml b/eng/pipelines/coreclr/perf.yml index 13ceb887cc320..19805cab86d8b 100644 --- a/eng/pipelines/coreclr/perf.yml +++ b/eng/pipelines/coreclr/perf.yml @@ -32,8 +32,8 @@ jobs: - template: /eng/pipelines/coreclr/perf-wasm-jobs.yml parameters: ${{ and(ne(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'Schedule')) }}: - runProfile: 'option#1' + runProfile: 'non-v8' ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'Schedule')) }}: - runProfile: 'option#2' + runProfile: 'v8' #- template: /eng/pipelines/coreclr/perf-non-wasm-jobs.yml diff --git a/eng/pipelines/runtime-extra-platforms-wasm.yml b/eng/pipelines/runtime-extra-platforms-wasm.yml index 672d4a7ddb518..70e862197fe35 100644 --- a/eng/pipelines/runtime-extra-platforms-wasm.yml +++ b/eng/pipelines/runtime-extra-platforms-wasm.yml @@ -46,10 +46,11 @@ jobs: runAOT: true alwaysRun: true - - template: /eng/pipelines/coreclr/perf-wasm-jobs.yml - parameters: - runProfile: 'option#2' - onlySanityCheck: true + # Disabled for now + #- template: /eng/pipelines/coreclr/perf-wasm-jobs.yml + #parameters: + #runProfile: 'v8' + #onlySanityCheck: true # # ********** For !rolling builds, IOW - PR builds ************* @@ -176,7 +177,8 @@ jobs: # ff tests are unstable currently shouldContinueOnError: true - - template: /eng/pipelines/coreclr/perf-wasm-jobs.yml - parameters: - runProfile: 'option#2' - onlySanityCheck: true + # Disable for now + #- template: /eng/pipelines/coreclr/perf-wasm-jobs.yml + #parameters: + #runProfile: 'v8' + #onlySanityCheck: true From 62c28f1b45d09b263dd6be47fbc77cb9dda05b9e Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Thu, 14 Jul 2022 21:02:54 -0400 Subject: [PATCH 07/10] Enable perf non-wasm jobs --- eng/pipelines/coreclr/perf.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/pipelines/coreclr/perf.yml b/eng/pipelines/coreclr/perf.yml index 19805cab86d8b..226b2903a4152 100644 --- a/eng/pipelines/coreclr/perf.yml +++ b/eng/pipelines/coreclr/perf.yml @@ -36,4 +36,4 @@ jobs: ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'Schedule')) }}: runProfile: 'v8' -#- template: /eng/pipelines/coreclr/perf-non-wasm-jobs.yml +- template: /eng/pipelines/coreclr/perf-non-wasm-jobs.yml From 0d5cd614c3b5023123a131eec5f35e8756861253 Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Thu, 14 Jul 2022 23:14:54 -0400 Subject: [PATCH 08/10] Use 15min timeout for sanity check --- eng/testing/performance/microbenchmarks.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/testing/performance/microbenchmarks.proj b/eng/testing/performance/microbenchmarks.proj index 3aaa4fe7f2fc8..f5c924c72d605 100644 --- a/eng/testing/performance/microbenchmarks.proj +++ b/eng/testing/performance/microbenchmarks.proj @@ -72,7 +72,7 @@ 2:30 - 0:15 + 0:15 From cd78a5833876808fb419e85f5f53b1a294cfd864 Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Mon, 18 Jul 2022 17:21:49 -0400 Subject: [PATCH 09/10] fix merge --- eng/pipelines/coreclr/perf-non-wasm-jobs.yml | 2 +- eng/pipelines/coreclr/templates/perf-job.yml | 31 ++++++++++---------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/eng/pipelines/coreclr/perf-non-wasm-jobs.yml b/eng/pipelines/coreclr/perf-non-wasm-jobs.yml index 2989fbd8f9519..9cc0e60fd0122 100644 --- a/eng/pipelines/coreclr/perf-non-wasm-jobs.yml +++ b/eng/pipelines/coreclr/perf-non-wasm-jobs.yml @@ -392,7 +392,7 @@ jobs: # extraStepsTemplate: /eng/pipelines/common/upload-intermediate-artifacts-step.yml # extraStepsParameters: # name: MonoRuntimePacks - + # build maui app net7.0 - template: /eng/pipelines/common/platform-matrix.yml parameters: diff --git a/eng/pipelines/coreclr/templates/perf-job.yml b/eng/pipelines/coreclr/templates/perf-job.yml index 53a5b7e6b8e3a..6bc2131853603 100644 --- a/eng/pipelines/coreclr/templates/perf-job.yml +++ b/eng/pipelines/coreclr/templates/perf-job.yml @@ -155,21 +155,22 @@ jobs: displayName: 'Mono runtime' # Download wasm - - ${{ if eq(parameters.downloadSpecificBuild.buildId, '') }}: - - template: /eng/pipelines/common/download-artifact-step.yml - parameters: - unpackFolder: $(librariesDownloadDir)/BrowserWasm - artifactFileName: BrowserWasm.zip - artifactName: BrowserWasm - displayName: BrowserWasm - - ${{ if ne(parameters.downloadSpecificBuild.buildId, '') }}: - - template: /eng/pipelines/common/download-specific-artifact-step.yml - parameters: - unpackFolder: $(librariesDownloadDir)/BrowserWasm - artifactFileName: BrowserWasm.zip - artifactName: BrowserWasm - displayName: BrowserWasm - ${{ insert }}: ${{ parameters.downloadSpecificBuild }} + - ${{ if eq(parameters.runtimeType, 'wasm') }}: + - ${{ if eq(parameters.downloadSpecificBuild.buildId, '') }}: + - template: /eng/pipelines/common/download-artifact-step.yml + parameters: + unpackFolder: $(librariesDownloadDir)/BrowserWasm + artifactFileName: BrowserWasm.zip + artifactName: BrowserWasm + displayName: BrowserWasm + - ${{ if ne(parameters.downloadSpecificBuild.buildId, '') }}: + - template: /eng/pipelines/common/download-specific-artifact-step.yml + parameters: + unpackFolder: $(librariesDownloadDir)/BrowserWasm + artifactFileName: BrowserWasm.zip + artifactName: BrowserWasm + displayName: BrowserWasm + ${{ insert }}: ${{ parameters.downloadSpecificBuild }} - script: >- mkdir -p $(librariesDownloadDir)/bin/wasm/wasm-data && From 6ae79e38e2515959e8d550124c71b7cf90372dcd Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Tue, 26 Jul 2022 11:59:08 -0400 Subject: [PATCH 10/10] Rename perf-wasm.yml -> runtime-wasm-perf.yml --- eng/pipelines/{coreclr/perf-wasm.yml => runtime-wasm-perf.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename eng/pipelines/{coreclr/perf-wasm.yml => runtime-wasm-perf.yml} (100%) diff --git a/eng/pipelines/coreclr/perf-wasm.yml b/eng/pipelines/runtime-wasm-perf.yml similarity index 100% rename from eng/pipelines/coreclr/perf-wasm.yml rename to eng/pipelines/runtime-wasm-perf.yml