Skip to content

Commit 4dd50d6

Browse files
authored
Run iOS performance measurements on CoreCLR (#4984)
Add support for iOS CoreCLR scenarios
1 parent 4426bde commit 4dd50d6

File tree

4 files changed

+46
-3
lines changed

4 files changed

+46
-3
lines changed

eng/pipelines/runtime-ios-scenarios-perf-jobs.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ jobs:
77
- template: /eng/pipelines/performance/templates/perf-ios-scenarios-build-jobs.yml@${{ parameters.runtimeRepoAlias }}
88
parameters:
99
mono: true
10+
coreclr: true
1011
nativeAot: true
1112

1213
# run iOS scenarios - Mono FullAOT
@@ -138,3 +139,24 @@ jobs:
138139
performanceRepoAlias: ${{ parameters.performanceRepoAlias }}
139140
${{ each parameter in parameters.jobParameters }}:
140141
${{ parameter.key }}: ${{ parameter.value }}
142+
143+
# run iOS scenarios - CoreCLR
144+
- template: /eng/pipelines/common/platform-matrix.yml@${{ parameters.runtimeRepoAlias }}
145+
parameters:
146+
jobTemplate: /eng/pipelines/templates/runtime-perf-job.yml@${{ parameters.performanceRepoAlias }}
147+
buildConfig: release
148+
runtimeFlavor: coreclr
149+
platforms:
150+
- osx_x64
151+
jobParameters:
152+
runtimeType: iOSCoreCLR
153+
codeGenType: Interpreter
154+
projectFile: $(Build.SourcesDirectory)/eng/testing/performance/ios_scenarios.proj
155+
runKind: ios_scenarios
156+
isScenario: true
157+
logicalMachine: 'perfiphone12mini'
158+
iOSStripSymbols: false
159+
runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }}
160+
performanceRepoAlias: ${{ parameters.performanceRepoAlias }}
161+
${{ each parameter in parameters.jobParameters }}:
162+
${{ parameter.key }}: ${{ parameter.value }}

eng/pipelines/templates/runtime-perf-job.yml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
# Test job depends on the corresponding build job
3737
${{ if eq(parameters.downloadSpecificBuild.buildId, '') }}:
3838
dependsOn:
39-
- ${{ if not(in(parameters.runtimeType, 'AndroidMono', 'AndroidCoreCLR', 'iOSMono', 'iOSNativeAOT', 'wasm', 'mono')) }}:
39+
- ${{ if not(in(parameters.runtimeType, 'AndroidMono', 'AndroidCoreCLR', 'iOSMono', 'iOSCoreCLR', 'iOSNativeAOT', 'wasm', 'mono')) }}:
4040
- ${{ format('build_{0}{1}_{2}_{3}_{4}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, 'coreclr') }}
4141
- ${{ if and(eq(parameters.runtimeType, 'mono'), ne(parameters.codeGenType, 'AOT')) }}:
4242
- ${{ format('build_{0}{1}_{2}_{3}_{4}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, 'mono') }}
@@ -51,6 +51,8 @@ jobs:
5151
- ${{ 'build_android_arm64_release_AndroidCoreCLR' }}
5252
- ${{ if eq(parameters.runtimeType, 'iOSMono')}}:
5353
- ${{ 'build_ios_arm64_release_iOSMono' }}
54+
- ${{ if eq(parameters.runtimeType, 'iOSCoreCLR')}}:
55+
- ${{ 'build_ios_arm64_checked_iOSCoreCLR' }}
5456
- ${{ if eq(parameters.runtimeType, 'iOSNativeAOT')}}:
5557
- ${{ 'build_ios_arm64_release_iOSNativeAOT' }}
5658

@@ -177,7 +179,7 @@ jobs:
177179
# artifactFileName: 'AndroidBDNApk.tar.gz'
178180
# artifactName: 'AndroidBDNApk'
179181
# displayName: 'Mono Android BDN Apk'
180-
- ${{ elseif or(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.runtimeType, 'iOSNativeAOT')) }}:
182+
- ${{ elseif or(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.runtimeType, 'iOSCoreCLR'), eq(parameters.runtimeType, 'iOSNativeAOT')) }}:
181183
# Download iOS Mono and CoreCLR (NativeAOT) tests
182184
- template: /eng/pipelines/templates/download-artifact-step.yml
183185
parameters:
@@ -195,6 +197,9 @@ jobs:
195197
${{ if and(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.iOSLlvmBuild, 'True'), eq(parameters.iOSStripSymbols, 'True')) }}:
196198
artifactName: 'iOSSampleAppLLVMNoSymbols'
197199
artifactFileName: 'iOSSampleAppLLVMNoSymbols.zip'
200+
${{ if and(eq(parameters.runtimeType, 'iOSCoreCLR'), eq(parameters.codeGenType, 'Interpreter')) }}:
201+
artifactName: 'iOSSampleApp'
202+
artifactFileName: 'iOSSampleApp.zip'
198203
${{ if and(eq(parameters.runtimeType, 'iOSNativeAOT'), eq(parameters.iOSStripSymbols, 'False')) }}:
199204
artifactName: 'iOSSampleAppSymbols'
200205
artifactFileName: 'iOSSampleAppSymbols.zip'
@@ -217,6 +222,8 @@ jobs:
217222
artifactName: 'iOSSampleAppLLVMSymbols'
218223
${{ if and(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.iOSLlvmBuild, 'True'), eq(parameters.iOSStripSymbols, 'True')) }}:
219224
artifactName: 'iOSSampleAppLLVMNoSymbols'
225+
${{ if and(eq(parameters.runtimeType, 'iOSCoreCLR'), eq(parameters.codeGenType, 'Interpreter')) }}:
226+
artifactName: 'iOSSampleApp'
220227
${{ if and(eq(parameters.runtimeType, 'iOSNativeAOT'), eq(parameters.iOSStripSymbols, 'False')) }}:
221228
artifactName: 'iOSSampleAppSymbols'
222229
${{ if and(eq(parameters.runtimeType, 'iOSNativeAOT'), eq(parameters.iOSStripSymbols, 'True')) }}:
@@ -236,6 +243,8 @@ jobs:
236243
artifactName: 'iOSMonoArm64LLVMNoStripSymbolsBuildLog'
237244
${{ if and(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.iOSLlvmBuild, 'True'), eq(parameters.iOSStripSymbols, 'True')) }}:
238245
artifactName: 'iOSMonoArm64LLVMStripSymbolsBuildLog'
246+
${{ if and(eq(parameters.runtimeType, 'iOSCoreCLR'), eq(parameters.codeGenType, 'Interpreter')) }}:
247+
artifactName: 'iOSCoreCLRArm64BuildLog'
239248
${{ if and(eq(parameters.runtimeType, 'iOSNativeAOT'), eq(parameters.iOSStripSymbols, 'False')) }}:
240249
artifactName: 'iOSNativeAOTArm64NoStripSymbolsBuildLog'
241250
${{ if and(eq(parameters.runtimeType, 'iOSNativeAOT'), eq(parameters.iOSStripSymbols, 'True')) }}:

eng/pipelines/upload-build-artifacts-jobs.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,3 +147,12 @@ jobs:
147147
files: [ 'iOSSampleAppSymbols.zip' ]
148148
- artifactName: 'iOSSampleAppNoSymbols'
149149
files: [ 'iOSSampleAppNoSymbols.zip' ]
150+
151+
- ${{ if containsValue(parameters.buildType, 'coreclr_arm64_ios') }}:
152+
- template: /eng/pipelines/templates/upload-build-artifacts-job.yml@${{ parameters.performanceRepoAlias }}
153+
parameters:
154+
buildType: 'coreclr_arm64_ios'
155+
dependencyJobName: build_ios_arm64_checked_iOSCoreCLR
156+
artifacts:
157+
- artifactName: 'iOSSampleApp'
158+
files: [ 'iOSSampleApp.zip' ]

scripts/run_performance_job.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,7 @@ def run_performance_job(args: RunPerformanceJobArgs):
576576
args.libraries_download_dir = os.path.join(args.runtime_repo_dir, "artifacts")
577577

578578
ios_mono = args.runtime_type == "iOSMono"
579+
ios_coreclr = args.runtime_type == "iOSCoreCLR"
579580
ios_nativeaot = args.runtime_type == "iOSNativeAOT"
580581
is_aot = args.codegen_type.lower() == "aot"
581582
is_mono = args.runtime_type == "mono"
@@ -636,6 +637,8 @@ def run_performance_job(args: RunPerformanceJobArgs):
636637
if args.run_kind == "ios_scenarios":
637638
if args.runtime_type == "iOSMono":
638639
args.runtime_flavor = "mono"
640+
elif args.runtime_type == "iOSCoreCLR":
641+
args.runtime_flavor = "coreclr"
639642
elif args.runtime_type == "iOSNativeAOT":
640643
args.runtime_flavor = "coreclr"
641644
else:
@@ -841,7 +844,7 @@ def run_performance_job(args: RunPerformanceJobArgs):
841844
# shutil.copy(os.path.join(args.built_app_dir, "MonoBenchmarksDroid.apk"), os.path.join(root_payload_dir, "MonoBenchmarksDroid.apk"))
842845
ci_setup_arguments.architecture = "arm64"
843846

844-
if ios_mono or ios_nativeaot:
847+
if ios_mono or ios_coreclr or ios_nativeaot:
845848
if args.built_app_dir is None:
846849
raise Exception("Built apps directory must be present for IOS Mono or IOS Native AOT benchmarks")
847850

0 commit comments

Comments
 (0)