Skip to content

Commit ce843eb

Browse files
authored
Refactor iOS runtime measurements (#4933)
1 parent 4b09a78 commit ce843eb

File tree

4 files changed

+60
-51
lines changed

4 files changed

+60
-51
lines changed

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

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
parameters:
2-
hybridGlobalization: True
32
runtimeRepoAlias: runtime
43
performanceRepoAlias: self
54
jobParameters: {}
65

76
jobs:
87
- template: /eng/pipelines/performance/templates/perf-ios-scenarios-build-jobs.yml@${{ parameters.runtimeRepoAlias }}
98
parameters:
10-
hybridGlobalization: ${{ parameters.hybridGlobalization }}
119
mono: true
1210
nativeAot: true
1311

14-
# run mono iOS scenarios HybridGlobalization
12+
# run iOS scenarios - Mono FullAOT
1513
- template: /eng/pipelines/common/platform-matrix.yml@${{ parameters.runtimeRepoAlias }}
1614
parameters:
1715
jobTemplate: /eng/pipelines/templates/runtime-perf-job.yml@${{ parameters.performanceRepoAlias }}
@@ -21,13 +19,13 @@ jobs:
2119
- osx_x64
2220
jobParameters:
2321
runtimeType: iOSMono
22+
codeGenType: FullAOT
2423
projectFile: $(Build.SourcesDirectory)/eng/testing/performance/ios_scenarios.proj
2524
runKind: ios_scenarios
2625
isScenario: true
2726
logicalMachine: 'perfiphone12mini'
2827
iOSLlvmBuild: False
2928
iOSStripSymbols: False
30-
hybridGlobalization: ${{ parameters.hybridGlobalization }}
3129
runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }}
3230
performanceRepoAlias: ${{ parameters.performanceRepoAlias }}
3331
${{ each parameter in parameters.jobParameters }}:
@@ -42,13 +40,13 @@ jobs:
4240
- osx_x64
4341
jobParameters:
4442
runtimeType: iOSMono
43+
codeGenType: FullAOT
4544
projectFile: $(Build.SourcesDirectory)/eng/testing/performance/ios_scenarios.proj
4645
runKind: ios_scenarios
4746
isScenario: true
4847
logicalMachine: 'perfiphone12mini'
4948
iOSLlvmBuild: False
5049
iOSStripSymbols: True
51-
hybridGlobalization: ${{ parameters.hybridGlobalization }}
5250
additionalJobIdentifier: iOSStripSymbols
5351
runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }}
5452
performanceRepoAlias: ${{ parameters.performanceRepoAlias }}
@@ -64,13 +62,13 @@ jobs:
6462
- osx_x64
6563
jobParameters:
6664
runtimeType: iOSMono
65+
codeGenType: FullAOT
6766
projectFile: $(Build.SourcesDirectory)/eng/testing/performance/ios_scenarios.proj
6867
runKind: ios_scenarios
6968
isScenario: true
7069
logicalMachine: 'perfiphone12mini'
7170
iOSLlvmBuild: True
7271
iOSStripSymbols: False
73-
hybridGlobalization: ${{ parameters.hybridGlobalization }}
7472
additionalJobIdentifier: iOSLlvmBuild
7573
runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }}
7674
performanceRepoAlias: ${{ parameters.performanceRepoAlias }}
@@ -86,20 +84,20 @@ jobs:
8684
- osx_x64
8785
jobParameters:
8886
runtimeType: iOSMono
87+
codeGenType: FullAOT
8988
projectFile: $(Build.SourcesDirectory)/eng/testing/performance/ios_scenarios.proj
9089
runKind: ios_scenarios
9190
isScenario: true
9291
logicalMachine: 'perfiphone12mini'
9392
iOSLlvmBuild: True
9493
iOSStripSymbols: True
95-
hybridGlobalization: ${{ parameters.hybridGlobalization }}
9694
additionalJobIdentifier: iOSLlvmBuild iOSStripSymbols
9795
runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }}
9896
performanceRepoAlias: ${{ parameters.performanceRepoAlias }}
9997
${{ each parameter in parameters.jobParameters }}:
10098
${{ parameter.key }}: ${{ parameter.value }}
10199

102-
# run NativeAOT iOS scenarios HybridGlobalization
100+
# run iOS scenarios - CoreCLR NativeAOT
103101
- template: /eng/pipelines/common/platform-matrix.yml@${{ parameters.runtimeRepoAlias }}
104102
parameters:
105103
jobTemplate: /eng/pipelines/templates/runtime-perf-job.yml@${{ parameters.performanceRepoAlias }}
@@ -109,12 +107,12 @@ jobs:
109107
- osx_x64
110108
jobParameters:
111109
runtimeType: iOSNativeAOT
110+
codeGenType: NativeAOT
112111
projectFile: $(Build.SourcesDirectory)/eng/testing/performance/ios_scenarios.proj
113112
runKind: ios_scenarios
114113
isScenario: true
115114
logicalMachine: 'perfiphone12mini'
116115
iOSStripSymbols: False
117-
hybridGlobalization: ${{ parameters.hybridGlobalization }}
118116
runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }}
119117
performanceRepoAlias: ${{ parameters.performanceRepoAlias }}
120118
${{ each parameter in parameters.jobParameters }}:
@@ -129,12 +127,12 @@ jobs:
129127
- osx_x64
130128
jobParameters:
131129
runtimeType: iOSNativeAOT
130+
codeGenType: NativeAOT
132131
projectFile: $(Build.SourcesDirectory)/eng/testing/performance/ios_scenarios.proj
133132
runKind: ios_scenarios
134133
isScenario: true
135134
logicalMachine: 'perfiphone12mini'
136135
iOSStripSymbols: True
137-
hybridGlobalization: ${{ parameters.hybridGlobalization }}
138136
additionalJobIdentifier: iOSStripSymbols
139137
runtimeRepoAlias: ${{ parameters.runtimeRepoAlias }}
140138
performanceRepoAlias: ${{ parameters.performanceRepoAlias }}

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

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -179,29 +179,29 @@ jobs:
179179
# artifactName: 'AndroidBDNApk'
180180
# displayName: 'Mono Android BDN Apk'
181181
- ${{ elseif or(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.runtimeType, 'iOSNativeAOT')) }}:
182-
# Download iOSMono and Native AOT tests
182+
# Download iOS Mono and CoreCLR (NativeAOT) tests
183183
- template: /eng/pipelines/templates/download-artifact-step.yml
184184
parameters:
185185
unpackFolder: $(builtAppDir)/iosHelloWorld
186186
cleanUnpackFolder: false
187187
${{ if and(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.iOSLlvmBuild, 'False'), eq(parameters.iOSStripSymbols, 'False')) }}:
188-
artifactName: 'iOSSampleAppNoLLVMSymbolsHybridGlobalization${{parameters.hybridGlobalization}}'
189-
artifactFileName: 'iOSSampleAppNoLLVMSymbolsHybridGlobalization${{parameters.hybridGlobalization}}.zip'
188+
artifactName: 'iOSSampleAppNoLLVMSymbols'
189+
artifactFileName: 'iOSSampleAppNoLLVMSymbols.zip'
190190
${{ if and(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.iOSLlvmBuild, 'False'), eq(parameters.iOSStripSymbols, 'True')) }}:
191-
artifactName: 'iOSSampleAppNoLLVMNoSymbolsHybridGlobalization${{parameters.hybridGlobalization}}'
192-
artifactFileName: 'iOSSampleAppNoLLVMNoSymbolsHybridGlobalization${{parameters.hybridGlobalization}}.zip'
191+
artifactName: 'iOSSampleAppNoLLVMNoSymbols'
192+
artifactFileName: 'iOSSampleAppNoLLVMNoSymbols.zip'
193193
${{ if and(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.iOSLlvmBuild, 'True'), eq(parameters.iOSStripSymbols, 'False')) }}:
194-
artifactName: 'iOSSampleAppLLVMSymbolsHybridGlobalization${{parameters.hybridGlobalization}}'
195-
artifactFileName: 'iOSSampleAppLLVMSymbolsHybridGlobalization${{parameters.hybridGlobalization}}.zip'
194+
artifactName: 'iOSSampleAppLLVMSymbols'
195+
artifactFileName: 'iOSSampleAppLLVMSymbols.zip'
196196
${{ if and(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.iOSLlvmBuild, 'True'), eq(parameters.iOSStripSymbols, 'True')) }}:
197-
artifactName: 'iOSSampleAppLLVMNoSymbolsHybridGlobalization${{parameters.hybridGlobalization}}'
198-
artifactFileName: 'iOSSampleAppLLVMNoSymbolsHybridGlobalization${{parameters.hybridGlobalization}}.zip'
197+
artifactName: 'iOSSampleAppLLVMNoSymbols'
198+
artifactFileName: 'iOSSampleAppLLVMNoSymbols.zip'
199199
${{ if and(eq(parameters.runtimeType, 'iOSNativeAOT'), eq(parameters.iOSStripSymbols, 'False')) }}:
200-
artifactName: 'iOSSampleAppSymbolsHybridGlobalization${{parameters.hybridGlobalization}}'
201-
artifactFileName: 'iOSSampleAppSymbolsHybridGlobalization${{parameters.hybridGlobalization}}.zip'
200+
artifactName: 'iOSSampleAppSymbols'
201+
artifactFileName: 'iOSSampleAppSymbols.zip'
202202
${{ if and(eq(parameters.runtimeType, 'iOSNativeAOT'), eq(parameters.iOSStripSymbols, 'True')) }}:
203-
artifactName: 'iOSSampleAppNoSymbolsHybridGlobalization${{parameters.hybridGlobalization}}'
204-
artifactFileName: 'iOSSampleAppNoSymbolsHybridGlobalization${{parameters.hybridGlobalization}}.zip'
203+
artifactName: 'iOSSampleAppNoSymbols'
204+
artifactFileName: 'iOSSampleAppNoSymbols.zip'
205205
displayName: 'iOS Sample App'
206206
# same artifact as above but don't extract .zip
207207
- task: DownloadBuildArtifacts@0
@@ -211,17 +211,17 @@ jobs:
211211
downloadType: single
212212
downloadPath: '$(builtAppDir)/iosHelloWorldZip'
213213
${{ if and(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.iOSLlvmBuild, 'False'), eq(parameters.iOSStripSymbols, 'False')) }}:
214-
artifactName: 'iOSSampleAppNoLLVMSymbolsHybridGlobalization${{parameters.hybridGlobalization}}'
214+
artifactName: 'iOSSampleAppNoLLVMSymbols'
215215
${{ if and(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.iOSLlvmBuild, 'False'), eq(parameters.iOSStripSymbols, 'True')) }}:
216-
artifactName: 'iOSSampleAppNoLLVMNoSymbolsHybridGlobalization${{parameters.hybridGlobalization}}'
216+
artifactName: 'iOSSampleAppNoLLVMNoSymbols'
217217
${{ if and(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.iOSLlvmBuild, 'True'), eq(parameters.iOSStripSymbols, 'False')) }}:
218-
artifactName: 'iOSSampleAppLLVMSymbolsHybridGlobalization${{parameters.hybridGlobalization}}'
218+
artifactName: 'iOSSampleAppLLVMSymbols'
219219
${{ if and(eq(parameters.runtimeType, 'iOSMono'), eq(parameters.iOSLlvmBuild, 'True'), eq(parameters.iOSStripSymbols, 'True')) }}:
220-
artifactName: 'iOSSampleAppLLVMNoSymbolsHybridGlobalization${{parameters.hybridGlobalization}}'
220+
artifactName: 'iOSSampleAppLLVMNoSymbols'
221221
${{ if and(eq(parameters.runtimeType, 'iOSNativeAOT'), eq(parameters.iOSStripSymbols, 'False')) }}:
222-
artifactName: 'iOSSampleAppSymbolsHybridGlobalization${{parameters.hybridGlobalization}}'
222+
artifactName: 'iOSSampleAppSymbols'
223223
${{ if and(eq(parameters.runtimeType, 'iOSNativeAOT'), eq(parameters.iOSStripSymbols, 'True')) }}:
224-
artifactName: 'iOSSampleAppNoSymbolsHybridGlobalization${{parameters.hybridGlobalization}}'
224+
artifactName: 'iOSSampleAppNoSymbols'
225225
checkDownloadedFiles: true
226226
- task: DownloadBuildArtifacts@0
227227
displayName: 'Download binlog files'

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

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -119,14 +119,14 @@ jobs:
119119
buildType: 'mono_arm64_ios'
120120
dependencyJobName: build_ios_arm64_release_iOSMono
121121
artifacts:
122-
- artifactName: 'iOSSampleAppLLVMNoSymbolsHybridGlobalizationtrue'
123-
files: [ 'iOSSampleAppLLVMNoSymbolsHybridGlobalizationtrue.zip' ]
124-
- artifactName: 'iOSSampleAppLLVMSymbolsHybridGlobalizationtrue'
125-
files: [ 'iOSSampleAppLLVMSymbolsHybridGlobalizationtrue.zip' ]
126-
- artifactName: 'iOSSampleAppNoLLVMNoSymbolsHybridGlobalizationtrue'
127-
files: [ 'iOSSampleAppNoLLVMNoSymbolsHybridGlobalizationtrue.zip' ]
128-
- artifactName: 'iOSSampleAppNoLLVMSymbolsHybridGlobalizationtrue'
129-
files: [ 'iOSSampleAppNoLLVMSymbolsHybridGlobalizationtrue.zip' ]
122+
- artifactName: 'iOSSampleAppLLVMNoSymbols'
123+
files: [ 'iOSSampleAppLLVMNoSymbols.zip' ]
124+
- artifactName: 'iOSSampleAppLLVMSymbols'
125+
files: [ 'iOSSampleAppLLVMSymbols.zip' ]
126+
- artifactName: 'iOSSampleAppNoLLVMNoSymbols'
127+
files: [ 'iOSSampleAppNoLLVMNoSymbols.zip' ]
128+
- artifactName: 'iOSSampleAppNoLLVMSymbols'
129+
files: [ 'iOSSampleAppNoLLVMSymbols.zip' ]
130130

131131
- ${{ if containsValue(parameters.buildType, 'monoBDN_arm64_android') }}:
132132
- template: /eng/pipelines/templates/upload-build-artifacts-job.yml@${{ parameters.performanceRepoAlias }}
@@ -143,7 +143,7 @@ jobs:
143143
buildType: 'nativeAot_arm64_ios'
144144
dependencyJobName: build_ios_arm64_release_iOSNativeAOT
145145
artifacts:
146-
- artifactName: 'iOSSampleAppSymbolsHybridGlobalizationtrue'
147-
files: [ 'iOSSampleAppSymbolsHybridGlobalizationtrue.zip' ]
148-
- artifactName: 'iOSSampleAppNoSymbolsHybridGlobalizationtrue'
149-
files: [ 'iOSSampleAppNoSymbolsHybridGlobalizationtrue.zip' ]
146+
- artifactName: 'iOSSampleAppSymbols'
147+
files: [ 'iOSSampleAppSymbols.zip' ]
148+
- artifactName: 'iOSSampleAppNoSymbols'
149+
files: [ 'iOSSampleAppNoSymbols.zip' ]

scripts/run_performance_job.py

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -468,10 +468,23 @@ def get_run_configurations(
468468

469469
# dotnet/runtime Android sample app scenarios
470470
if run_kind == "android_scenarios":
471+
if not runtime_flavor in ("mono", "coreclr"):
472+
raise Exception("Runtime flavor must be specified for runtime android scenarios")
471473
configurations["CodegenType"] = str(codegen_type)
472474
configurations["LinkingType"] = str(linking_type)
473475
configurations["RuntimeType"] = str(runtime_flavor)
474476

477+
# dotnet/runtime iOS sample app scenarios
478+
if run_kind == "ios_scenarios":
479+
if not runtime_flavor in ("mono", "coreclr"):
480+
raise Exception("Runtime flavor must be specified for runtime ios scenarios")
481+
configurations["CodegenType"] = str(codegen_type)
482+
configurations["RuntimeType"] = str(runtime_flavor)
483+
configurations["iOSStripSymbols"] = str(ios_strip_symbols)
484+
485+
if runtime_flavor == "mono":
486+
configurations["iOSLlvmBuild"] = str(ios_llvm_build)
487+
475488
# .NET Android and .NET MAUI Android sample app scenarios
476489
if run_kind == "maui_scenarios_android":
477490
if not runtime_flavor in ("mono", "coreclr"):
@@ -486,15 +499,6 @@ def get_run_configurations(
486499
configurations["CodegenType"] = str(codegen_type)
487500
configurations["RuntimeType"] = str(runtime_flavor)
488501

489-
if runtime_type == "iOSMono":
490-
configurations["iOSLlvmBuild"] = str(ios_llvm_build)
491-
configurations["iOSStripSymbols"] = str(ios_strip_symbols)
492-
configurations["RuntimeType"] = "Mono"
493-
494-
if runtime_type == "iOSNativeAOT":
495-
configurations["iOSStripSymbols"] = str(ios_strip_symbols)
496-
configurations["RuntimeType"] = "NativeAOT"
497-
498502
return configurations
499503

500504
def get_work_item_command(os_group: str, target_csproj: str, architecture: str, perf_lab_framework: str, internal: bool, wasm: bool, bdn_artifacts_dir: str):
@@ -634,7 +638,14 @@ def run_performance_job(args: RunPerformanceJobArgs):
634638
args.runtime_flavor = "coreclr"
635639
else:
636640
raise Exception("Android scenarios only support Mono and CoreCLR runtimes")
637-
641+
if args.run_kind == "ios_scenarios":
642+
if args.runtime_type == "iOSMono":
643+
args.runtime_flavor = "mono"
644+
elif args.runtime_type == "iOSNativeAOT":
645+
args.runtime_flavor = "coreclr"
646+
else:
647+
raise Exception("iOS scenarios only support Mono and CoreCLR runtimes")
648+
638649
branch = os.environ.get("BUILD_SOURCEBRANCH")
639650
cleaned_branch_name = "main"
640651
if branch is not None and branch.startswith("refs/heads/release"):

0 commit comments

Comments
 (0)