diff --git a/eng/pipelines/coreclr/perf-non-wasm-jobs.yml b/eng/pipelines/coreclr/perf-non-wasm-jobs.yml index 7c409fb265e417..fb908c5226f5f2 100644 --- a/eng/pipelines/coreclr/perf-non-wasm-jobs.yml +++ b/eng/pipelines/coreclr/perf-non-wasm-jobs.yml @@ -2,24 +2,159 @@ jobs: - ${{ if and(ne(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'Schedule')) }}: - # build mono + # build mono iOS scenarios HybridGlobalization - template: /eng/pipelines/common/platform-matrix.yml parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml + 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 + hybridGlobalization: True + + # build NativeAOT iOS scenarios HybridGlobalization + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml buildConfig: release + runtimeFlavor: coreclr platforms: - - linux_x64 + - ios_arm64 + jobParameters: + buildArgs: --cross -s clr.alljits+clr.tools+clr.nativeaotruntime+clr.nativeaotlibs+libs -c $(_BuildConfig) + nameSuffix: iOSNativeAOT + isOfficialBuild: false + extraStepsTemplate: /eng/pipelines/coreclr/templates/build-perf-sample-apps.yml + extraStepsParameters: + rootFolder: '$(Build.SourcesDirectory)/artifacts/' + includeRootFolder: true + displayName: iOS NativeAOT Artifacts + artifactName: iOSNativeAOTarm64 + archiveExtension: '.tar.gz' + archiveType: tar + tarCompression: gz + hybridGlobalization: True - # build coreclr and libraries + # run mono iOS scenarios scenarios HybridGlobalization - template: /eng/pipelines/common/platform-matrix.yml parameters: - jobTemplate: /eng/pipelines/common/build-coreclr-and-libraries-job.yml + jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml buildConfig: release + runtimeFlavor: mono platforms: - - linux_x64 + - osx_x64 + 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 + iOSStripSymbols: False + hybridGlobalization: True + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml + buildConfig: release + runtimeFlavor: mono + platforms: + - osx_x64 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 + iOSStripSymbols: True + hybridGlobalization: True + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml + buildConfig: release + runtimeFlavor: mono + platforms: + - osx_x64 + 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 + iOSStripSymbols: False + hybridGlobalization: True + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml + buildConfig: release + runtimeFlavor: mono + platforms: + - osx_x64 + 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 + iOSStripSymbols: True + hybridGlobalization: True + + # run NativeAOT iOS scenarios HybridGlobalization + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml + buildConfig: release + runtimeFlavor: coreclr + platforms: + - osx_x64 + jobParameters: + testGroup: perf + runtimeType: iOSNativeAOT + projectFile: ios_scenarios.proj + runKind: ios_scenarios + runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml + logicalmachine: 'perfiphone12mini' + iOSStripSymbols: False + hybridGlobalization: True + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml + buildConfig: release + runtimeFlavor: coreclr + platforms: + - osx_x64 + jobParameters: + testGroup: perf + runtimeType: iOSNativeAOT + projectFile: ios_scenarios.proj + runKind: ios_scenarios + runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml + logicalmachine: 'perfiphone12mini' + iOSStripSymbols: True + hybridGlobalization: True - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'Schedule')) }}: diff --git a/eng/pipelines/coreclr/perf-wasm-jobs.yml b/eng/pipelines/coreclr/perf-wasm-jobs.yml index aea24283deeb88..b4cffe4f1cb4a0 100644 --- a/eng/pipelines/coreclr/perf-wasm-jobs.yml +++ b/eng/pipelines/coreclr/perf-wasm-jobs.yml @@ -171,3 +171,25 @@ jobs: logicalmachine: 'perftiger' downloadSpecificBuild: ${{ parameters.downloadSpecificBuild }} perfForkToUse: ${{ parameters.perfForkToUse }} + +- ${{if and(ne(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'Schedule')) }}: + # 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 + logicalmachine: 'perftiger' + downloadSpecificBuild: ${{ parameters.downloadSpecificBuild }} + perfForkToUse: ${{ parameters.perfForkToUse }} + hybridGlobalization: True diff --git a/eng/pipelines/coreclr/perf.yml b/eng/pipelines/coreclr/perf.yml index edaadde3e511ee..969d660218cfca 100644 --- a/eng/pipelines/coreclr/perf.yml +++ b/eng/pipelines/coreclr/perf.yml @@ -27,13 +27,13 @@ variables: # Since, we are not running *any* perf jobs, none of these builds are needed, # thus the whole scheduled run can be disabled. # -#schedules: -#- cron: "30 2 * * *" - #displayName: Every night at 2:30AM - #branches: - #include: - #- main - #always: true +schedules: +- cron: "0 0 * * 1" + displayName: Weekly Monday 12am UTC Build + branches: + include: + - main + always: true extends: template: /eng/pipelines/common/templates/pipeline-with-resources.yml @@ -47,7 +47,7 @@ extends: collectHelixLogsScript: ${{ variables._wasmCollectHelixLogsScript }} #${{ and(ne(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'Schedule')) }}: # runProfile: 'non-v8' - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'Schedule')) }}: + ${{ if ne(variables['System.TeamProject'], 'public') }}: runProfile: 'v8' - template: /eng/pipelines/coreclr/perf-non-wasm-jobs.yml diff --git a/eng/pipelines/coreclr/templates/build-perf-sample-apps.yml b/eng/pipelines/coreclr/templates/build-perf-sample-apps.yml index b74f22d62690a6..fd55342e1a0552 100644 --- a/eng/pipelines/coreclr/templates/build-perf-sample-apps.yml +++ b/eng/pipelines/coreclr/templates/build-perf-sample-apps.yml @@ -16,6 +16,7 @@ parameters: archiveExtension: '' archiveType: '' tarCompression: '' + hybridGlobalization: False steps: # Build Android sample app @@ -37,11 +38,11 @@ steps: displayName: clean bindir - ${{ if and(eq(parameters.osGroup, 'ios'), eq(parameters.nameSuffix, 'iOSMono')) }}: - - script: make build-appbundle TARGET=ios MONO_ARCH=arm64 MONO_CONFIG=Release AOT=True USE_LLVM=False DEPLOY_AND_RUN=false STRIP_DEBUG_SYMBOLS=false + - script: make build-appbundle TARGET=ios MONO_ARCH=arm64 MONO_CONFIG=Release AOT=True USE_LLVM=False DEPLOY_AND_RUN=false STRIP_DEBUG_SYMBOLS=false HYBRID_GLOBALIZATION=${{ parameters.hybridGlobalization }} env: DevTeamProvisioning: '-' workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS - displayName: Build HelloiOS AOT sample app LLVM=False STRIP_SYMBOLS=False + displayName: Build HelloiOS AOT sample app LLVM=False STRIP_SYMBOLS=False HYBRID_GLOBALIZATION=${{ parameters.hybridGlobalization }} - task: PublishBuildArtifacts@1 condition: succeededOrFailed() displayName: 'Publish binlog' @@ -53,17 +54,17 @@ steps: rootFolder: $(Build.SourcesDirectory)/src/mono/sample/iOS/bin/ios-arm64/Bundle/HelloiOS/Release-iphoneos/HelloiOS.app includeRootFolder: true displayName: iOS Sample App NoLLVM - artifactName: iOSSampleAppNoLLVMSymbols + artifactName: iOSSampleAppNoLLVMSymbolsHybridGlobalization${{parameters.hybridGlobalization}} archiveExtension: '.zip' archiveType: zip - script: rm -r -f $(Build.SourcesDirectory)/src/mono/sample/iOS/bin workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS displayName: Clean bindir - - script: make build-appbundle TARGET=ios MONO_ARCH=arm64 MONO_CONFIG=Release AOT=True USE_LLVM=False DEPLOY_AND_RUN=false STRIP_DEBUG_SYMBOLS=true + - script: make build-appbundle TARGET=ios MONO_ARCH=arm64 MONO_CONFIG=Release AOT=True USE_LLVM=False DEPLOY_AND_RUN=false STRIP_DEBUG_SYMBOLS=true HYBRID_GLOBALIZATION=${{ parameters.hybridGlobalization }} env: DevTeamProvisioning: '-' workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS - displayName: Build HelloiOS AOT sample app LLVM=False STRIP_SYMBOLS=True + displayName: Build HelloiOS AOT sample app LLVM=False STRIP_SYMBOLS=True HYBRID_GLOBALIZATION=${{ parameters.hybridGlobalization }} - task: PublishBuildArtifacts@1 condition: succeededOrFailed() displayName: 'Publish binlog' @@ -75,17 +76,17 @@ steps: rootFolder: $(Build.SourcesDirectory)/src/mono/sample/iOS/bin/ios-arm64/Bundle/HelloiOS/Release-iphoneos/HelloiOS.app includeRootFolder: true displayName: iOS Sample App NoLLVM NoSymbols - artifactName: iOSSampleAppNoLLVMNoSymbols + artifactName: iOSSampleAppNoLLVMNoSymbolsHybridGlobalization${{parameters.hybridGlobalization}} archiveExtension: '.zip' archiveType: zip - script: rm -r -f $(Build.SourcesDirectory)/src/mono/sample/iOS/bin workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS displayName: Clean bindir - - script: make build-appbundle TARGET=ios MONO_ARCH=arm64 MONO_CONFIG=Release AOT=True USE_LLVM=True DEPLOY_AND_RUN=false STRIP_DEBUG_SYMBOLS=false + - script: make build-appbundle TARGET=ios MONO_ARCH=arm64 MONO_CONFIG=Release AOT=True USE_LLVM=True DEPLOY_AND_RUN=false STRIP_DEBUG_SYMBOLS=false HYBRID_GLOBALIZATION=${{ parameters.hybridGlobalization }} env: DevTeamProvisioning: '-' workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS - displayName: Build HelloiOS AOT sample app LLVM=True STRIP_SYMBOLS=False + displayName: Build HelloiOS AOT sample app LLVM=True STRIP_SYMBOLS=False HYBRID_GLOBALIZATION=${{ parameters.hybridGlobalization }} - task: PublishBuildArtifacts@1 condition: succeededOrFailed() displayName: 'Publish binlog' @@ -97,17 +98,17 @@ steps: rootFolder: $(Build.SourcesDirectory)/src/mono/sample/iOS/bin/ios-arm64/Bundle/HelloiOS/Release-iphoneos/HelloiOS.app includeRootFolder: true displayName: iOS Sample App LLVM - artifactName: iOSSampleAppLLVMSymbols + artifactName: iOSSampleAppLLVMSymbolsHybridGlobalization${{parameters.hybridGlobalization}} archiveExtension: '.zip' archiveType: zip - script: rm -r -f $(Build.SourcesDirectory)/src/mono/sample/iOS/bin workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS displayName: Clean bindir - - script: make build-appbundle TARGET=ios MONO_ARCH=arm64 MONO_CONFIG=Release AOT=True USE_LLVM=True DEPLOY_AND_RUN=false STRIP_DEBUG_SYMBOLS=true + - script: make build-appbundle TARGET=ios MONO_ARCH=arm64 MONO_CONFIG=Release AOT=True USE_LLVM=True DEPLOY_AND_RUN=false STRIP_DEBUG_SYMBOLS=true HYBRID_GLOBALIZATION=${{ parameters.hybridGlobalization }} env: DevTeamProvisioning: '-' workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS - displayName: Build HelloiOS AOT sample app LLVM=True STRIP_SYMBOLS=True + displayName: Build HelloiOS AOT sample app LLVM=True STRIP_SYMBOLS=True HYBRID_GLOBALIZATION=${{ parameters.hybridGlobalization }} - task: PublishBuildArtifacts@1 condition: succeededOrFailed() displayName: 'Publish binlog' @@ -119,16 +120,16 @@ steps: rootFolder: $(Build.SourcesDirectory)/src/mono/sample/iOS/bin/ios-arm64/Bundle/HelloiOS/Release-iphoneos/HelloiOS.app includeRootFolder: true displayName: iOS Sample App LLVM NoSymbols - artifactName: iOSSampleAppLLVMNoSymbols + artifactName: iOSSampleAppLLVMNoSymbolsHybridGlobalization${{parameters.hybridGlobalization}} archiveExtension: '.zip' archiveType: zip - ${{ if and(eq(parameters.osGroup, 'ios'), eq(parameters.nameSuffix, 'iOSNativeAOT')) }}: - - script: make hello-app TARGET_OS=ios TARGET_ARCH=arm64 BUILD_CONFIG=Release DEPLOY_AND_RUN=false STRIP_DEBUG_SYMBOLS=false + - script: make hello-app TARGET_OS=ios TARGET_ARCH=arm64 BUILD_CONFIG=Release DEPLOY_AND_RUN=false STRIP_DEBUG_SYMBOLS=false HYBRID_GLOBALIZATION=${{ parameters.hybridGlobalization }} env: DevTeamProvisioning: '-' workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS-NativeAOT - displayName: Build HelloiOS Native AOT sample app STRIP_SYMBOLS=False + displayName: Build HelloiOS Native AOT sample app STRIP_SYMBOLS=False HYBRID_GLOBALIZATION=${{ parameters.hybridGlobalization }} - task: PublishBuildArtifacts@1 condition: succeededOrFailed() displayName: 'Publish binlog' @@ -140,17 +141,17 @@ steps: rootFolder: $(Build.SourcesDirectory)/src/mono/sample/iOS-NativeAOT/bin/ios-arm64/Bundle/HelloiOS/Release-iphoneos/HelloiOS.app includeRootFolder: true displayName: iOS Sample App Symbols - artifactName: iOSSampleAppSymbols + artifactName: iOSSampleAppSymbolsHybridGlobalization${{parameters.hybridGlobalization}} archiveExtension: '.zip' archiveType: zip - script: rm -r -f $(Build.SourcesDirectory)/src/mono/sample/iOS-NativeAOT/bin workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS-NativeAOT displayName: Clean bindir - - script: make hello-app TARGET_OS=ios TARGET_ARCH=arm64 BUILD_CONFIG=Release DEPLOY_AND_RUN=false STRIP_DEBUG_SYMBOLS=true + - script: make hello-app TARGET_OS=ios TARGET_ARCH=arm64 BUILD_CONFIG=Release DEPLOY_AND_RUN=false STRIP_DEBUG_SYMBOLS=true HYBRID_GLOBALIZATION=${{ parameters.hybridGlobalization }} env: DevTeamProvisioning: '-' workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS-NativeAOT - displayName: Build HelloiOS Native AOT sample app STRIP_SYMBOLS=True + displayName: Build HelloiOS Native AOT sample app STRIP_SYMBOLS=True HYBRID_GLOBALIZATION=${{ parameters.hybridGlobalization }} - task: PublishBuildArtifacts@1 condition: succeededOrFailed() displayName: 'Publish binlog' @@ -162,6 +163,6 @@ steps: rootFolder: $(Build.SourcesDirectory)/src/mono/sample/iOS-NativeAOT/bin/ios-arm64/Bundle/HelloiOS/Release-iphoneos/HelloiOS.app includeRootFolder: true displayName: iOS Sample App NoSymbols - artifactName: iOSSampleAppNoSymbols + artifactName: iOSSampleAppNoSymbolsHybridGlobalization${{parameters.hybridGlobalization}} archiveExtension: '.zip' archiveType: zip diff --git a/eng/pipelines/coreclr/templates/perf-job.yml b/eng/pipelines/coreclr/templates/perf-job.yml index be3a871ad4020e..6b67bcccc80e1d 100644 --- a/eng/pipelines/coreclr/templates/perf-job.yml +++ b/eng/pipelines/coreclr/templates/perf-job.yml @@ -21,6 +21,7 @@ parameters: javascriptEngine: 'NoJS' iOSLlvmBuild: 'False' iOSStripSymbols: 'False' + hybridGlobalization: 'False' skipLiveLibrariesDownload: false collectHelixLogsScript: '' timeoutInMinutes: 320 @@ -39,8 +40,8 @@ jobs: - template: ${{ parameters.runJobTemplate }} parameters: # Compute job name from template parameters - jobName: ${{ format('perfbuild_{0}{1}_{2}_{3}_{4}_{5}_{6}_{7}_{8}_{9}_{10}_{11}_{12}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.runtimeType, parameters.codeGenType, parameters.runKind, parameters.logicalMachine, parameters.javascriptEngine, parameters.pgoRunType, parameters.physicalPromotionRunType, parameters.iosLlvmBuild, parameters.iosStripSymbols) }} - displayName: ${{ format('Performance {0}{1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.runtimeType, parameters.codeGenType, parameters.runKind, parameters.logicalMachine, parameters.javascriptEngine, parameters.pgoRunType, parameters.physicalPromotionRunType, parameters.iosLlvmBuild, parameters.iosStripSymbols) }} + jobName: ${{ format('perfbuild_{0}{1}_{2}_{3}_{4}_{5}_{6}_{7}_{8}_{9}_{10}_{11}_{12}_{13}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.runtimeType, parameters.codeGenType, parameters.runKind, parameters.logicalMachine, parameters.javascriptEngine, parameters.pgoRunType, parameters.physicalPromotionRunType, parameters.iosLlvmBuild, parameters.iosStripSymbols, parameters.hybridGlobalization) }} + displayName: ${{ format('Performance {0}{1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} {13}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.runtimeType, parameters.codeGenType, parameters.runKind, parameters.logicalMachine, parameters.javascriptEngine, parameters.pgoRunType, parameters.physicalPromotionRunType, parameters.iosLlvmBuild, parameters.iosStripSymbols, parameters.hybridGlobalization) }} pool: ${{ parameters.pool }} buildConfig: ${{ parameters.buildConfig }} archType: ${{ parameters.archType }} @@ -60,6 +61,7 @@ jobs: javascriptEngine: ${{ parameters.javascriptEngine }} iosLlvmBuild: ${{ parameters.iosLlvmBuild }} iosStripSymbols: ${{ parameters.iosStripSymbols }} + hybridGlobalization: ${{ parameters.hybridGlobalization }} timeoutInMinutes: ${{ parameters.timeoutInMinutes }} ${{ if and(eq(parameters.runtimeType, 'wasm'), eq(parameters.codeGenType, 'aot')) }}: @@ -99,7 +101,7 @@ 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 }} $(extraSetupParametersSuffix) + extraSetupParameters: --architecture ${{ parameters.archType }} --wasmbundle $(librariesDownloadDir)/bin/wasm --javascriptengine ${{ parameters.javascriptEngine }} --hybridglobalization ${{ parameters.hybridGlobalization }} $(extraSetupParametersSuffix) ${{ if and(eq(parameters.runtimeType, 'wasm'), eq(parameters.codeGenType, 'AOT')) }}: extraSetupParameters: --architecture ${{ parameters.archType }} --wasmbundle $(librariesDownloadDir)/bin/wasm --wasmaot --javascriptengine ${{ parameters.javascriptEngine }} $(extraSetupParametersSuffix) ${{ if and(eq(parameters.codeGenType, 'AOT'), ne(parameters.runtimeType, 'wasm')) }}: @@ -111,9 +113,9 @@ jobs: ${{ if in(parameters.runtimeType, 'AndroidMono') }}: extraSetupParameters: -Architecture ${{ parameters.archType }} -AndroidMono ${{ if in(parameters.runtimeType, 'iOSMono') }}: - extraSetupParameters: --architecture ${{ parameters.archType }} --iosmono --iosllvmbuild ${{ parameters.iOSLlvmBuild }} --iosstripsymbols ${{ parameters.iOSStripSymbols }} + extraSetupParameters: --architecture ${{ parameters.archType }} --iosmono --iosllvmbuild ${{ parameters.iOSLlvmBuild }} --iosstripsymbols ${{ parameters.iOSStripSymbols }} --hybridglobalization ${{ parameters.hybridGlobalization }} ${{ if in(parameters.runtimeType, 'iOSNativeAOT') }}: - extraSetupParameters: --architecture ${{ parameters.archType }} --iosnativeaot --iosllvmbuild ${{ parameters.iOSLlvmBuild }} --iosstripsymbols ${{ parameters.iOSStripSymbols }} + extraSetupParameters: --architecture ${{ parameters.archType }} --iosnativeaot --iosllvmbuild ${{ parameters.iOSLlvmBuild }} --iosstripsymbols ${{ parameters.iOSStripSymbols }} --hybridglobalization ${{ parameters.hybridGlobalization }} variables: - ${{ each variable in parameters.variables }}: @@ -229,7 +231,7 @@ jobs: artifactFileName: 'AndroidBDNApk.tar.gz' artifactName: 'AndroidBDNApk' displayName: 'Mono Android BDN Apk' - + # Download iOSMono and Native AOT tests - ${{ if or(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.runtimeType, 'iOSNativeAOT')) }}: - template: /eng/pipelines/common/download-artifact-step.yml @@ -237,23 +239,23 @@ jobs: unpackFolder: $(Build.SourcesDirectory)/iosHelloWorld cleanUnpackFolder: false ${{ if and(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.iOSLlvmBuild, 'False'), eq(parameters.iOSStripSymbols, 'False')) }}: - artifactName: 'iOSSampleAppNoLLVMSymbols' - artifactFileName: 'iOSSampleAppNoLLVMSymbols.zip' + artifactName: 'iOSSampleAppNoLLVMSymbolsHybridGlobalization${{parameters.hybridGlobalization}}' + artifactFileName: 'iOSSampleAppNoLLVMSymbolsHybridGlobalization${{parameters.hybridGlobalization}}.zip' ${{ if and(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.iOSLlvmBuild, 'False'), eq(parameters.iOSStripSymbols, 'True')) }}: - artifactName: 'iOSSampleAppNoLLVMNoSymbols' - artifactFileName: 'iOSSampleAppNoLLVMNoSymbols.zip' + artifactName: 'iOSSampleAppNoLLVMNoSymbolsHybridGlobalization${{parameters.hybridGlobalization}}' + artifactFileName: 'iOSSampleAppNoLLVMNoSymbolsHybridGlobalization${{parameters.hybridGlobalization}}.zip' ${{ if and(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.iOSLlvmBuild, 'True'), eq(parameters.iOSStripSymbols, 'False')) }}: - artifactName: 'iOSSampleAppLLVMSymbols' - artifactFileName: 'iOSSampleAppLLVMSymbols.zip' + artifactName: 'iOSSampleAppLLVMSymbolsHybridGlobalization${{parameters.hybridGlobalization}}' + artifactFileName: 'iOSSampleAppLLVMSymbolsHybridGlobalization${{parameters.hybridGlobalization}}.zip' ${{ if and(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.iOSLlvmBuild, 'True'), eq(parameters.iOSStripSymbols, 'True')) }}: - artifactName: 'iOSSampleAppLLVMNoSymbols' - artifactFileName: 'iOSSampleAppLLVMNoSymbols.zip' + artifactName: 'iOSSampleAppLLVMNoSymbolsHybridGlobalization${{parameters.hybridGlobalization}}' + artifactFileName: 'iOSSampleAppLLVMNoSymbolsHybridGlobalization${{parameters.hybridGlobalization}}.zip' ${{ if and(eq(parameters.runtimeType, 'iOSNativeAOT'), eq(parameters.iOSStripSymbols, 'False')) }}: - artifactName: 'iOSSampleAppSymbols' - artifactFileName: 'iOSSampleAppSymbols.zip' + artifactName: 'iOSSampleAppSymbolsHybridGlobalization${{parameters.hybridGlobalization}}' + artifactFileName: 'iOSSampleAppSymbolsHybridGlobalization${{parameters.hybridGlobalization}}.zip' ${{ if and(eq(parameters.runtimeType, 'iOSNativeAOT'), eq(parameters.iOSStripSymbols, 'True')) }}: - artifactName: 'iOSSampleAppNoSymbols' - artifactFileName: 'iOSSampleAppNoSymbols.zip' + artifactName: 'iOSSampleAppNoSymbolsHybridGlobalization${{parameters.hybridGlobalization}}' + artifactFileName: 'iOSSampleAppNoSymbolsHybridGlobalization${{parameters.hybridGlobalization}}.zip' displayName: 'iOS Sample App' # same artifact as above but don't extract .zip - task: DownloadBuildArtifacts@0 @@ -263,17 +265,17 @@ jobs: downloadType: single downloadPath: '$(Build.SourcesDirectory)/iosHelloWorldZip' ${{ if and(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.iOSLlvmBuild, 'False'), eq(parameters.iOSStripSymbols, 'False')) }}: - artifactName: 'iOSSampleAppNoLLVMSymbols' + artifactName: 'iOSSampleAppNoLLVMSymbolsHybridGlobalization${{parameters.hybridGlobalization}}' ${{ if and(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.iOSLlvmBuild, 'False'), eq(parameters.iOSStripSymbols, 'True')) }}: - artifactName: 'iOSSampleAppNoLLVMNoSymbols' + artifactName: 'iOSSampleAppNoLLVMNoSymbolsHybridGlobalization${{parameters.hybridGlobalization}}' ${{ if and(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.iOSLlvmBuild, 'True'), eq(parameters.iOSStripSymbols, 'False')) }}: - artifactName: 'iOSSampleAppLLVMSymbols' + artifactName: 'iOSSampleAppLLVMSymbolsHybridGlobalization${{parameters.hybridGlobalization}}' ${{ if and(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.iOSLlvmBuild, 'True'), eq(parameters.iOSStripSymbols, 'True')) }}: - artifactName: 'iOSSampleAppLLVMNoSymbols' + artifactName: 'iOSSampleAppLLVMNoSymbolsHybridGlobalization${{parameters.hybridGlobalization}}' ${{ if and(eq(parameters.runtimeType, 'iOSNativeAOT'), eq(parameters.iOSStripSymbols, 'False')) }}: - artifactName: 'iOSSampleAppSymbols' + artifactName: 'iOSSampleAppSymbolsHybridGlobalization${{parameters.hybridGlobalization}}' ${{ if and(eq(parameters.runtimeType, 'iOSNativeAOT'), eq(parameters.iOSStripSymbols, 'True')) }}: - artifactName: 'iOSSampleAppNoSymbols' + artifactName: 'iOSSampleAppNoSymbolsHybridGlobalization${{parameters.hybridGlobalization}}' checkDownloadedFiles: true # Create Core_Root diff --git a/eng/pipelines/coreclr/templates/run-scenarios-job.yml b/eng/pipelines/coreclr/templates/run-scenarios-job.yml index bc142530cc52df..fe3a9b1e9ba9d3 100644 --- a/eng/pipelines/coreclr/templates/run-scenarios-job.yml +++ b/eng/pipelines/coreclr/templates/run-scenarios-job.yml @@ -216,6 +216,6 @@ jobs: displayName: Publish Logs inputs: targetPath: $(Build.SourcesDirectory)/artifacts/log - artifactName: 'Performance_Run_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)_${{ parameters.runtimeType }}_${{ parameters.codeGenType }}_${{ parameters.runKind }}_$(iOSLlvmBuild)_$(iOSStripSymbols)' + artifactName: 'Performance_Run_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)_${{ parameters.runtimeType }}_${{ parameters.codeGenType }}_${{ parameters.runKind }}_$(iOSLlvmBuild)_$(iOSStripSymbols)_$(hybridGlobalization)' continueOnError: true condition: always() diff --git a/eng/testing/performance/blazor_perf.proj b/eng/testing/performance/blazor_perf.proj index a526a8cc3b5de3..9ae6177f992515 100644 --- a/eng/testing/performance/blazor_perf.proj +++ b/eng/testing/performance/blazor_perf.proj @@ -9,8 +9,13 @@ python3 $(HelixPreCommands);chmod +x $HELIX_WORKITEM_PAYLOAD/SOD/SizeOnDisk - --has-workload --readonly-dotnet --msbuild "/p:_TrimmerDumpDependencies=true" --msbuild /warnaserror:NU1602,NU1604 --msbuild-static AdditionalMonoLinkerOptions=%27"%24(AdditionalMonoLinkerOptions) --dump-dependencies"%27 --binlog $(LogDirectory)blazor_publish.binlog + --has-workload --readonly-dotnet --msbuild "/p:_TrimmerDumpDependencies=true;/p:HybridGlobalization=$(hybridGlobalization);/warnaserror:NU1602,NU1604" --msbuild-static AdditionalMonoLinkerOptions=%27"%24(AdditionalMonoLinkerOptions) --dump-dependencies"%27 --binlog $(LogDirectory)blazor_publish.binlog $(EnvVars) $(Python) pre.py publish $(PublishArgs) + + + - HybridGlobalization + $(HybridGlobalizationPath) @@ -43,35 +48,35 @@ - + $(WorkItemDirectory) cd $(BlazorMinDirectory) && $(PublishCommand) && $(Python) test.py sod --scenario-name "%(Identity)" - + $(WorkItemDirectory) cd $(BlazorMinAOTDirectory) && $(PublishCommand) && $(Python) test.py sod --scenario-name "%(Identity)" 00:30 - + $(WorkItemDirectory) cd $(BlazorDirectory) && $(PublishCommand) && $(Python) test.py sod --scenario-name "%(Identity)" $(Python) post.py --readonly-dotnet - + $(WorkItemDirectory) cd $(BlazorAOTDirectory) && $(PublishCommand) && $(Python) test.py sod --scenario-name "%(Identity)" $(Python) post.py --readonly-dotnet 00:30 - + $(WorkItemDirectory) cd $(BlazorPizzaDirectory) && $(PublishCommand) -f $(PerflabTargetFrameworks) && $(Python) test.py sod --scenario-name "%(Identity)" --dirs $(PizzaAppPubLocation) $(Python) post.py --readonly-dotnet - + $(WorkItemDirectory) cd $(BlazorPizzaAOTDirectory) && $(PublishCommand) -f $(PerflabTargetFrameworks) && $(Python) test.py sod --scenario-name "%(Identity)" --dirs $(PizzaAppPubLocation) diff --git a/eng/testing/performance/ios_scenarios.proj b/eng/testing/performance/ios_scenarios.proj index 3801fd935d96f8..b9efdefad6a366 100644 --- a/eng/testing/performance/ios_scenarios.proj +++ b/eng/testing/performance/ios_scenarios.proj @@ -15,10 +15,15 @@ - nollvm - llvm - symbols - nosymbols + nollvm + llvm + symbols + nosymbols + + + HybridGlobalization + $(LlvmPath)$(SymbolsPath)$(HybridGlobalizationPath) @@ -30,19 +35,19 @@ - + $(WorkItemDirectory) cd $(ScenarioDirectory)helloios;cp -rf $HELIX_CORRELATION_PAYLOAD/iosHelloWorld ./app;$(Python) pre.py --name app $(Python) test.py sod --scenario-name "%(Identity)" $(Python) post.py - + $(WorkItemDirectory) cd $(ScenarioDirectory)helloios;cp -v $HELIX_CORRELATION_PAYLOAD/iosHelloWorldZip/iOSSampleApp.zip .;$(Python) pre.py --name iOSSampleApp.zip $(Python) test.py sod --scenario-name "%(Identity)" $(Python) post.py - + $(WorkItemDirectory).zip 00:15:00 ios-device @@ -61,7 +66,7 @@ # Testing commands $(Python) test.py devicestartup --device-type ios --package-path HelloiOS.app --package-name net.dot.HelloiOS --scenario-name "%(Identity)" ((result=$?)) - + # Post commands $(Python) post.py exit $result diff --git a/eng/testing/performance/performance-setup.ps1 b/eng/testing/performance/performance-setup.ps1 index 8caea345a893dc..30b0271b0b61ee 100644 --- a/eng/testing/performance/performance-setup.ps1 +++ b/eng/testing/performance/performance-setup.ps1 @@ -14,7 +14,7 @@ Param( [string] $Kind="micro", [switch] $LLVM, [switch] $MonoInterpreter, - [switch] $MonoAOT, + [switch] $MonoAOT, [switch] $Internal, [switch] $Compare, [string] $MonoDotnet="", @@ -27,6 +27,7 @@ Param( [switch] $PhysicalPromotion, [switch] $iOSLlvmBuild, [switch] $iOSStripSymbols, + [switch] $HybridGlobalization, [string] $MauiVersion, [switch] $UseLocalCommitTime ) @@ -100,6 +101,10 @@ if ($iOSNativeAOT) { $Configurations += " iOSStripSymbols=$iOSStripSymbols" } +if ($HybridGlobalization -eq "True") { + $Configurations += " HybridGlobalization=True" +} + # FIX ME: This is a workaround until we get this from the actual pipeline $CleanedBranchName = "main" if($Branch.Contains("refs/heads/release")) @@ -124,7 +129,7 @@ if ($UseLocalCommitTime) { if ($RunFromPerformanceRepo) { $SetupArguments = "--perf-hash $CommitSha $CommonSetupArguments" - + robocopy $SourceDirectory $PerformanceDirectory /E /XD $PayloadDirectory $SourceDirectory\artifacts $SourceDirectory\.git } else { @@ -189,6 +194,7 @@ Write-PipelineSetVariable -Name 'Compare' -Value "$Compare" -IsMultiJobVariable Write-PipelineSetVariable -Name 'MonoDotnet' -Value "$UsingMono" -IsMultiJobVariable $false Write-PipelineSetVariable -Name 'iOSLlvmBuild' -Value "$iOSLlvmBuild" -IsMultiJobVariable $false Write-PipelineSetVariable -Name 'iOSStripSymbols' -Value "$iOSStripSymbols" -IsMultiJobVariable $false +Write-PipelineSetVariable -Name 'hybridGlobalization' -Value "$HybridGlobalization" -IsMultiJobVariable $false # Helix Arguments Write-PipelineSetVariable -Name 'Creator' -Value "$Creator" -IsMultiJobVariable $false diff --git a/eng/testing/performance/performance-setup.sh b/eng/testing/performance/performance-setup.sh index 9a1c95ec730820..fc0d3b8032baa2 100755 --- a/eng/testing/performance/performance-setup.sh +++ b/eng/testing/performance/performance-setup.sh @@ -40,6 +40,7 @@ iosnativeaot=false runtimetype="" iosllvmbuild="" iosstripsymbols="" +hybridglobalization="" maui_version="" use_local_commit_time=false only_sanity=false @@ -182,6 +183,10 @@ while (($# > 0)); do iosstripsymbols=$2 shift 2 ;; + --hybridglobalization) + hybridglobalization=$2 + shift 2 + ;; --mauiversion) maui_version=$2 shift 2 @@ -232,6 +237,7 @@ while (($# > 0)); do echo " --iosnativeaot Set for ios Native AOT runs" echo " --iosllvmbuild Set LLVM for iOS Mono/Maui runs" echo " --iosstripsymbols Set STRIP_DEBUG_SYMBOLS for iOS Mono/Maui runs" + echo " --hybridglobalization Set hybrid globalization for iOS Mono/Maui/Wasm runs" echo " --mauiversion Set the maui version for Mono/Maui runs" echo " --uselocalcommittime Pass local runtime commit time to the setup script" echo " --nodynamicpgo Set for No dynamic PGO runs" @@ -358,6 +364,10 @@ if [[ "$physicalpromotion" == "true" ]]; then configurations="$configurations PhysicalPromotionType=physicalpromotion" fi +if [[ "${hybridglobalization,,}" == "true" ]]; then # convert to lowercase to test + configurations="$configurations HybridGlobalization=True" # Force True for consistency +fi + cleaned_branch_name="main" @@ -494,6 +504,7 @@ Write-PipelineSetVariable -name "MonoDotnet" -value "$using_mono" -is_multi_job_ 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 'iOSStripSymbols' -Value "$iosstripsymbols" -is_multi_job_variable false +Write-PipelineSetVariable -Name 'hybridGlobalization' -Value "$hybridglobalization" -is_multi_job_variable false Write-PipelineSetVariable -Name 'RuntimeType' -Value "$runtimetype" -is_multi_job_variable false Write-PipelineSetVariable -name "OnlySanityCheck" -value "$only_sanity" -is_multi_job_variable false diff --git a/src/mono/sample/iOS-NativeAOT/Makefile b/src/mono/sample/iOS-NativeAOT/Makefile index e17562a08d36bb..c50f01c05a913d 100644 --- a/src/mono/sample/iOS-NativeAOT/Makefile +++ b/src/mono/sample/iOS-NativeAOT/Makefile @@ -9,6 +9,7 @@ DEPLOY_AND_RUN?=false STRIP_DEBUG_SYMBOLS?=false USE_RUNTIME_PACKS?=false STATS?=false +HYBRID_GLOBALIZATION?=false REPO_DIR=$(realpath $(TOP)) TASKS_DIR=$(REPO_DIR)/src/tasks @@ -60,7 +61,8 @@ hello-app: clean -p:StripDebugSymbols=$(STRIP_DEBUG_SYMBOLS) \ -p:PublishAotUsingRuntimePack=$(USE_RUNTIME_PACKS) \ -p:GenerateStats=$(STATS) \ + -p:HybridGlobalization=$(HYBRID_GLOBALIZATION) \ -bl clean: - rm -rf obj bin *.binlog $(LOCAL_NUGET_RESTORE_DIR) \ No newline at end of file + rm -rf obj bin *.binlog $(LOCAL_NUGET_RESTORE_DIR) diff --git a/src/mono/sample/iOS/Makefile b/src/mono/sample/iOS/Makefile index c90844e6caba18..9c55609d72382b 100644 --- a/src/mono/sample/iOS/Makefile +++ b/src/mono/sample/iOS/Makefile @@ -6,6 +6,7 @@ TARGET?=iossimulator DEPLOY_AND_RUN?=true APP_SANDBOX?=false STRIP_DEBUG_SYMBOLS?=false # only used when measuring SOD via build-appbundle make target +HYBRID_GLOBALIZATION?=false #If DIAGNOSTIC_PORTS is enabled, RUNTIME_COMPONENTS must also be enabled. #If RUNTIME_COMPONENTS is enabled, DIAGNOSTIC_PORTS is optional. @@ -34,6 +35,7 @@ build-appbundle: clean appbuilder /p:MonoEnableLLVM=$(USE_LLVM) \ /p:StripDebugSymbols=$(STRIP_DEBUG_SYMBOLS) \ /p:DeployAndRun=false \ + /p:HybridGlobalization=$(HYBRID_GLOBALIZATION) \ /bl run: clean appbuilder