helixProjectArguments: '$(Build.SourcesDirectory)/src/tests/Common/helixpublishwitharcade.proj'
+ # helixpublishwitharcade.proj processes one scenario per parallel MSBuild invocation. Each invocation only
+ # creates Helix work items and them waits for their completion on the remote Helix machines, so is not
+ # computationally intensive. We want Helix to be provided with all the possible work items in up front,
+ # so can do as much work in parallel as possible. Thus, increase the amount of allowed MSBuild parallelism
+ # to at least the maximum number of scenarios to be processed in a testGroup.
+ #
+ # We only need to do this for a testGroup with more than one or two scenarios, though it isn't functionally
+ # a problem to always do it. Thus, we only exempt this setting for a few cases.
+ ${{ if notIn(parameters.testGroup, 'innerloop', 'outerloop', 'clrinterpreter', 'ilasm', 'gc-longrunning', 'gc-simulator', 'gc-standalone', 'gc-standalone-server') }}:
+ msbuildParallelism: '/maxcpucount:55'
+
${{ if in(parameters.testGroup, 'innerloop', 'outerloop') }}:
${{ if eq(parameters.runtimeFlavor, 'mono') }}:
# tiered compilation isn't done on mono yet
helixSource: ''
helixQueues: ''
helixType: ''
+ msbuildParallelism: '/maxcpucount'
scenarios: ''
timeoutPerTestCollectionInMinutes: ''
timeoutPerTestInMinutes: ''
parameters:
osGroup: ${{ parameters.osGroup }}
restoreParams: /p:DotNetPublishToBlobFeed=true -restore -projects $(Build.SourcesDirectory)$(dir)eng$(dir)empty.csproj
- sendParams: ${{ parameters.helixProjectArguments }} /maxcpucount /bl:$(Build.SourcesDirectory)/artifacts/log/SendToHelix.binlog /p:TargetArchitecture=${{ parameters.archType }} /p:TargetOS=${{ parameters.osGroup }} /p:TargetOSSubgroup=${{ parameters.osSubgroup }} /p:Configuration=${{ parameters.buildConfig }}
+ sendParams: ${{ parameters.helixProjectArguments }} ${{ parameters.msbuildParallelism }} /bl:$(Build.SourcesDirectory)/artifacts/log/SendToHelix.binlog /p:TargetArchitecture=${{ parameters.archType }} /p:TargetOS=${{ parameters.osGroup }} /p:TargetOSSubgroup=${{ parameters.osSubgroup }} /p:Configuration=${{ parameters.buildConfig }}
condition: and(succeeded(), ${{ parameters.condition }})
shouldContinueOnError: ${{ parameters.shouldContinueOnError }}
displayName: ${{ parameters.displayName }}
shouldContinueOnError: ${{ parameters.shouldContinueOnError }}
creator: dotnet-bot
testRunNamePrefixSuffix: $(_testRunNamePrefixSuffix)
- extraHelixArguments: $(_extraHelixArguments)
# coreclrTestGroup: The following mappings of 'coreclrTestGroup' to 'scenarios' is copied from
# eng/pipelines/common/templates/runtimes/run-test-job.yml (with 'testGroup' replaced by 'coreclrTestGroup'
# is run in a regular CI job, so there is no need to duplicate it here. So, add 'no_tiered_compilation'
# to the 'jitstress' job instead of adding a new job just for 'no_tiered_compilation'.
+ # src/libraries/sendtohelix.proj processes one scenario per parallel MSBuild invocation. Each invocation only
+ # creates Helix work items and them waits for their completion on the remote Helix machines, so is not
+ # computationally intensive. We want Helix to be provided with all the possible work items in up front,
+ # so can do as much work in parallel as possible. Thus, increase the amount of allowed MSBuild parallelism
+ # to at least the maximum number of scenarios to be processed in a coreclrTestGroup. If there is no
+ # coreclrTestGroup then there is only one scenario (the default scenario), so don't change the MSBuild argument.
+ ${{ if ne(parameters.coreclrTestGroup, '') }}:
+ extraHelixArguments: $(_extraHelixArguments) /maxcpucount:10
+ ${{ else }}:
+ extraHelixArguments: $(_extraHelixArguments)
+
${{ if in(parameters.coreclrTestGroup, 'jitstress') }}:
scenarios:
- no_tiered_compilation