-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Apple mobile] Enable trimming on build machines to match ILLink features #110966
base: main
Are you sure you want to change the base?
Conversation
/azp run runtime-extra-platforms |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run runtime-extra-platforms |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run runtime-extra-platforms |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run runtime-extra-platforms |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run runtime-extra-platforms |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run runtime-extra-platforms |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run runtime-extra-platforms |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run runtime-extra-platforms |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run runtime-extra-platforms |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run runtime-extra-platforms |
Azure Pipelines successfully started running 1 pipeline(s). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for this fix!
This change introduces a 20min regression in build time for the complete set of library tests on runtime-extra-platforms pipeline, as they are now trimmed sequentially on build machines.
Does this mean that each job that is building full library tests has 20 min slower build time or overall runtime-extra-platforms
pipeline build got 20 min slower (combined across all library test jobs)?
Anyways, I suppose this should make the helix part of the CI faster (?) so if that is the case I think the regression is acceptable and worth the increase in CI stability.
@@ -16,7 +16,7 @@ | |||
<!-- running aot-helix tests locally, so we can test with the same project file as CI --> | |||
<_AOTBuildCommand Condition="'$(ContinuousIntegrationBuild)' != 'true'">$(_AOTBuildCommand) /p:RuntimeSrcDir=$(RepoRoot) /p:RuntimeConfig=$(Configuration)</_AOTBuildCommand> | |||
<!-- The command below sets default properties for runtime and library tests --> | |||
<_AOTBuildCommand>$(_AOTBuildCommand) /p:XHARNESS_EXECUTION_DIR="$XHARNESS_EXECUTION_DIR" /p:RunAOTCompilation=$(RunAOTCompilation) /p:UseNativeAOTRuntime=$(UseNativeAOTRuntime) /p:TargetOS=$(TargetOS) /p:TargetArchitecture=$(TargetArchitecture) /p:MonoForceInterpreter=$(MonoForceInterpreter) /p:MonoEnableLLVM=true /p:DevTeamProvisioning=$(DevTeamProvisioning) /p:UsePortableRuntimePack=true /p:Configuration=$(Configuration) /p:EnableAggressiveTrimming=$(EnableAggressiveTrimming)</_AOTBuildCommand> | |||
<_AOTBuildCommand>$(_AOTBuildCommand) /p:XHARNESS_EXECUTION_DIR="$XHARNESS_EXECUTION_DIR" /p:RunAOTCompilation=$(RunAOTCompilation) /p:UseNativeAOTRuntime=$(UseNativeAOTRuntime) /p:TargetOS=$(TargetOS) /p:TargetArchitecture=$(TargetArchitecture) /p:MonoForceInterpreter=$(MonoForceInterpreter) /p:MonoEnableLLVM=true /p:DevTeamProvisioning=$(DevTeamProvisioning) /p:UsePortableRuntimePack=false /p:Configuration=$(Configuration) /p:EnableAggressiveTrimming=false</_AOTBuildCommand> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do we disable EnableAggressiveTrimming
for local builds?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ILLink target is part of the publishing process and is performed before AOT compilation. The _AOTBuildCommand
is used for AOT compilation both locally and on Helix. As trimming is performed before, it is not necessary to invoke it again.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What's difference when we are running it on CI
buildArgs: -s mono+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true $(_runSmokeTestsOnlyArg) /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=false /p:BuildDarwinFrameworks=true /p:IsManualOrRollingBuild=true /p:EnableAggressiveTrimming=true |
/p:EnableAggressiveTrimming=true
?
Do I understand it correctly that this performs trimming before AOT, so we are disabling it in _AOTBuildCommand
to not run it twice?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Correct. The BuildArgs is used for publish on AzDo (build) machines. The _AOTBuildCommand is used for AOT on Helix.
Each job that is building full library tests on Apple mobile. It impacts the total build time of |
Description
This PR moves trimming from Helix to AzDo (build) machines to simplify ILLink feature alignment between AzDo and Helix. Previously, when an ILLink feature was added to the SDK, we needed to manually maintain an internal setup. This led to regressions, and time spend on investigation to identify the root cause, such as in:
#103594
#110771
Changes
Trimming is now moved trimming from Helix to AzDo (build) machines. Redundant code for maintaining ILLink features is removed.
This change introduces a 20min regression in build time for the complete set of library tests on
runtime-extra-platforms
pipeline, as they are now trimmed sequentially on build machines. However, it is expected to save time when investigating regressions caused by SDK changes.Verification
The changes have been verified on the
runtime
andruntime-extra-platforms
pipelines.Fixes #110771 #104431 #110266