Skip to content
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

Add mono performance runs #34825

Merged
merged 38 commits into from
May 8, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
da62751
WIP
DrewScoggins Apr 10, 2020
52f6d0e
Add mono perf job
DrewScoggins Apr 10, 2020
11ec5af
Move runtimeFlavor to the right level
DrewScoggins Apr 10, 2020
4e4ac5a
chnage variable access
DrewScoggins Apr 10, 2020
ab9008e
Change condition
DrewScoggins Apr 10, 2020
15a0eda
Add steps to download mono and build the patched dotnet
DrewScoggins Apr 10, 2020
d03fead
Change variable access
DrewScoggins Apr 13, 2020
f0a8eb6
Pass variables directly
DrewScoggins Apr 13, 2020
623ec9b
Plumb through mono path to runner
DrewScoggins Apr 13, 2020
edec8c8
Fix parameter reference
DrewScoggins Apr 13, 2020
e0d0def
Fix variables access?
DrewScoggins Apr 13, 2020
60f4dcf
Fix typo
DrewScoggins Apr 13, 2020
6f09285
Fix pathing issue
DrewScoggins Apr 14, 2020
f30649e
Add log saving for publish to helix step
DrewScoggins Apr 14, 2020
94936e9
Fix variable in shell script
DrewScoggins Apr 14, 2020
f7f1043
Fix up mv command and publish logs step
DrewScoggins Apr 14, 2020
e90947b
Change runkind and add Windows runs
DrewScoggins Apr 14, 2020
01dc157
Add Windows mono build
DrewScoggins Apr 14, 2020
f959d0e
Fixup parsing
DrewScoggins Apr 15, 2020
1becb9e
Remove Windows runs for now
DrewScoggins Apr 16, 2020
d69da0f
Switch to using build command to generate mono testhost
DrewScoggins Apr 20, 2020
6ae7909
Fixup parens
DrewScoggins Apr 20, 2020
58f8fde
Forgot to add a slash
DrewScoggins Apr 20, 2020
6904d33
Add Windows runs and fix pathing issue
DrewScoggins Apr 21, 2020
55f4acc
Add backslash for Windows and -r for cp on Linux
DrewScoggins Apr 21, 2020
08ffc75
Switch to using corerun argument
DrewScoggins Apr 22, 2020
163a1de
Switch to monopath
DrewScoggins Apr 22, 2020
7ca0b35
Use CoreRun
DrewScoggins Apr 23, 2020
82fa61e
Remove mono property and use corerun instead
DrewScoggins Apr 23, 2020
9a973a4
Fixing closing tags
DrewScoggins Apr 23, 2020
edf722f
Change xcopy to copy
DrewScoggins Apr 24, 2020
1c5c874
Add llvm config flag
DrewScoggins Apr 24, 2020
19448eb
Add AOT and Interpreter config flags
DrewScoggins Apr 24, 2020
08af789
Change order to ensure config gets added
DrewScoggins Apr 24, 2020
21ee8fa
Change order
DrewScoggins Apr 27, 2020
bb816d2
Add exlusion filter for Perf_Image_Load tests
DrewScoggins May 4, 2020
7916bd3
Add more to exclusion list
DrewScoggins May 5, 2020
b7e7a6c
Remove Windows legs for now
DrewScoggins May 6, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions eng/common/performance/perfhelixpublish.proj
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
<Python>py -3</Python>
<CoreRun>%HELIX_CORRELATION_PAYLOAD%\Core_Root\CoreRun.exe</CoreRun>
<BaselineCoreRun>%HELIX_CORRELATION_PAYLOAD%\Baseline_Core_Root\CoreRun.exe</BaselineCoreRun>

<HelixPreCommands>$(HelixPreCommands);call %HELIX_CORRELATION_PAYLOAD%\performance\tools\machine-setup.cmd;set PYTHONPATH=%HELIX_WORKITEM_PAYLOAD%\scripts%3B%HELIX_WORKITEM_PAYLOAD%</HelixPreCommands>
<ArtifactsDirectory>%HELIX_CORRELATION_PAYLOAD%\artifacts\BenchmarkDotNet.Artifacts</ArtifactsDirectory>
<BaselineArtifactsDirectory>%HELIX_CORRELATION_PAYLOAD%\artifacts\BenchmarkDotNet.Artifacts_Baseline</BaselineArtifactsDirectory>
Expand Down Expand Up @@ -40,6 +41,13 @@
<XMLResults>$HELIX_WORKITEM_ROOT/testResults.xml</XMLResults>
</PropertyGroup>

<PropertyGroup Condition="'$(MonoDotnet)' == 'true' and '$(AGENT_OS)' == 'Windows_NT'">
<CoreRunArgument>--corerun %HELIX_CORRELATION_PAYLOAD%\dotnet-mono\shared\Microsoft.NETCore.App\5.0.0\corerun.exe</CoreRunArgument>
</PropertyGroup>
<PropertyGroup Condition="'$(MonoDotnet)' == 'true' and '$(AGENT_OS)' != 'Windows_NT'">
<CoreRunArgument>--corerun $(BaseDirectory)/dotnet-mono/shared/Microsoft.NETCore.App/5.0.0/corerun</CoreRunArgument>
</PropertyGroup>

<PropertyGroup Condition="'$(UseCoreRun)' == 'true'">
<CoreRunArgument>--corerun $(CoreRun)</CoreRunArgument>
</PropertyGroup>
Expand Down
27 changes: 27 additions & 0 deletions eng/common/performance/performance-setup.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,12 @@ Param(
[string] $RunCategories="Libraries Runtime",
[string] $Csproj="src\benchmarks\micro\MicroBenchmarks.csproj",
[string] $Kind="micro",
[switch] $LLVM,
[switch] $MonoInterpreter,
[switch] $MonoAOT,
[switch] $Internal,
[switch] $Compare,
[string] $MonoDotnet="",
[string] $Configurations="CompilationMode=$CompilationMode RunKind=$Kind"
)

Expand Down Expand Up @@ -49,6 +53,21 @@ if ($Internal) {
$HelixSourcePrefix = "official"
}

if($MonoDotnet -ne "")
{
$Configurations += " LLVM=$LLVM MonoInterpreter=$MonoInterpreter MonoAOT=$MonoAOT"
if($ExtraBenchmarkDotNetArguments -eq "")
{
#FIX ME: We need to block these tests as they don't run on mono for now
$ExtraBenchmarkDotNetArguments = "--exclusion-filter *Perf_Image* *Perf_NamedPipeStream*"
}
else
{
#FIX ME: We need to block these tests as they don't run on mono for now
$ExtraBenchmarkDotNetArguments += " --exclusion-filter *Perf_Image* *Perf_NamedPipeStream*"
}
}

# FIX ME: This is a workaround until we get this from the actual pipeline
$CommonSetupArguments="--channel master --queue $Queue --build-number $BuildNumber --build-configs $Configurations --architecture $Architecture"
$SetupArguments = "--repository https://github.com/$Repository --branch $Branch --get-perf-hash --commit-sha $CommitSha $CommonSetupArguments"
Expand All @@ -69,6 +88,13 @@ else {
git clone --branch master --depth 1 --quiet https://github.com/dotnet/performance $PerformanceDirectory
}

if($MonoDotnet -ne "")
{
$UsingMono = "true"
$MonoDotnetPath = (Join-Path $PayloadDirectory "dotnet-mono")
Move-Item -Path $MonoDotnet -Destination $MonoDotnetPath
}

if ($UseCoreRun) {
$NewCoreRoot = (Join-Path $PayloadDirectory "Core_Root")
Move-Item -Path $CoreRootDirectory -Destination $NewCoreRoot
Expand Down Expand Up @@ -104,6 +130,7 @@ Write-PipelineSetVariable -Name 'UseCoreRun' -Value "$UseCoreRun" -IsMultiJobVar
Write-PipelineSetVariable -Name 'UseBaselineCoreRun' -Value "$UseBaselineCoreRun" -IsMultiJobVariable $false
Write-PipelineSetVariable -Name 'RunFromPerfRepo' -Value "$RunFromPerformanceRepo" -IsMultiJobVariable $false
Write-PipelineSetVariable -Name 'Compare' -Value "$Compare" -IsMultiJobVariable $false
Write-PipelineSetVariable -Name 'MonoDotnet' -Value "$UsingMono" -IsMultiJobVariable $false

# Helix Arguments
Write-PipelineSetVariable -Name 'Creator' -Value "$Creator" -IsMultiJobVariable $false
Expand Down
34 changes: 34 additions & 0 deletions eng/common/performance/performance-setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,18 @@ commit_sha=$BUILD_SOURCEVERSION
build_number=$BUILD_BUILDNUMBER
internal=false
compare=false
mono_dotnet=
kind="micro"
llvm=false
monointerpreter=false
monoaot=false
run_categories="Libraries Runtime"
csproj="src\benchmarks\micro\MicroBenchmarks.csproj"
configurations="CompliationMode=$compilation_mode RunKind=$kind"
run_from_perf_repo=false
use_core_run=true
use_baseline_core_run=true
using_mono=false

while (($# > 0)); do
lowerI="$(echo $1 | awk '{print tolower($0)}')"
Expand Down Expand Up @@ -65,6 +70,7 @@ while (($# > 0)); do
;;
--kind)
kind=$2
configurations="CompliationMode=$compilation_mode RunKind=$kind"
shift 2
;;
--runcategories)
Expand All @@ -79,6 +85,22 @@ while (($# > 0)); do
internal=true
shift 1
;;
--llvm)
llvm=true
shift 1
;;
--monointerpreter)
monointerpreter=true
shift 1
;;
--monoaot)
monoaot=true
shift 1
;;
--monodotnet)
mono_dotnet=$2
shift 2
;;
--compare)
compare=true
shift 1
Expand Down Expand Up @@ -107,6 +129,7 @@ while (($# > 0)); do
echo " --kind <value> Related to csproj. The kind of benchmarks that should be run. Defaults to micro"
echo " --runcategories <value> Related to csproj. Categories of benchmarks to run. Defaults to \"coreclr corefx\""
echo " --internal If the benchmarks are running as an official job."
echo " --monodotnet Pass the path to the mono dotnet for mono performance testing."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we should do this. It'd be better to just use self-contained build

/cc @directhex @akoeplinger

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you explain this a little more? Why is using the patched mono dotnet not a good path forward? This is similar to what we do for the coreclr based runtime tests.

Also, the way that we currently run performance tests relies on having a version of dotnet to build and run the Benchmark DotNet tests, and as far as I know we cannot do a self-contained publish of the performance tests. (@billwert for confirmation).

Copy link
Member

@filipnavara filipnavara Apr 16, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as far as I know we cannot do a self-contained publish of the performance tests.

I have been doing that for months on my infrastructure so at least in theory it's possible. On the other hand it's not easy and useful for most cases because BDN by default triggers the compilation for the benchmarks and runs each of them out of process.

For non-AOT benchmarks I ended up using/patching testhost that is produced as output of the dotnet/runtime repository. It it guaranteed to be self-consistent unlike the combination of SDK version determined by global.json and the runtime built from the repository.

For AOT I rely on self-publish and in-process mode of BDN. Not sure if I would recommend that.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is using the patched mono dotnet not a good path

This is not set up we'll ever officially support and can break anything as it was a temporary hack. It also won't support the official AOT mode and possibly other configs. So if you are testing this hack then you are testing config which no customer will use

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For some context, we run the performance testing for the coreclr runtime in two ways. The first is on the pacakges from the installer repo. This is to make sure that we are running the performance tests in a way that the customer will actually use the product. We also run the tests here in the runtime repo by building the product and then making a corerun directory that contains all of our built binaries. This, while not the way our customers use or obtain the product, allows us to get much more granular performance data collected as we don't have to wait for code to flow all the way from here to the installer repo.

This work was designed to get mono to parity with what we are doing here in the runtime repo. So building the product from head and then making up a version of dotnet that contains the built binaries and running the tests. If using the dotnet-mono patch feature is not the right way to do this, please direct me to the canonical way to do this. I was just operating off of the steps given to me by @SamMonoRT.

@filipnavara:

  1. When you say you have been doing this for months, do you mean the tests that live in the dotnet/performance repo? If so I would love to get instructions on how you are doing that.
  2. I would also be interested in how you are doing the AOT testing as well. This is something that we would like to be able to support y'all on, so getting an idea of how y'all are building and running these tests, even if we have to take a different path would be useful.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So it seems like a good place to land here is to move the performance runs over to the testhost construction, as that seems to be what y'all have been doing in the past. We can then go ahead and get this checked in and running for Windows and Linux and for LLVM and non-LLVM backend. Then we can file an issue that tracks doing the work to move over to the in tree runtime packs as soon as we have good support for that on desktop builds. Does that sound like a good way forward to everyone here?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good to me - @steveisok @marek-safar thoughts ?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AOT won't work this way for sure and any issues with this setup won't be fixed. I'm fine to land this but we should start working on a supported way to run the tests as this can break anything.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So I did some digging and this is the step that seems to setup the testhost for running functional tests on mono, link. I would assume that since this is how the product is tested in CI that this should be a supported scenario, yes?

If this is the case I am just going to use the same command to setup the testhost and run the performance tests in this way for now.

If this is also unsupported does that mean that the functional CI tests are running in an unsupported manner or am I just missing something here?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that's as close to supported desktop scenario as it is currently available (until desktop runtime packs are introduced).

echo ""
exit 0
;;
Expand Down Expand Up @@ -164,6 +187,10 @@ if [[ "$internal" == true ]]; then
fi
fi

if [[ "$mono_dotnet" != "" ]]; then
configurations="$configurations LLVM=$llvm MonoInterpreter=$monointerpreter MonoAOT=$monoaot"
fi

common_setup_arguments="--channel master --queue $queue --build-number $build_number --build-configs $configurations --architecture $architecture"
setup_arguments="--repository https://github.com/$repository --branch $branch --get-perf-hash --commit-sha $commit_sha $common_setup_arguments"

Expand All @@ -186,6 +213,12 @@ else
mv $docs_directory $workitem_directory
fi

if [[ "$mono_dotnet" != "" ]]; then
using_mono=true
mono_dotnet_path=$payload_directory/dotnet-mono
mv $mono_dotnet $mono_dotnet_path
fi

if [[ "$use_core_run" = true ]]; then
new_core_root=$payload_directory/Core_Root
mv $core_root_directory $new_core_root
Expand Down Expand Up @@ -221,3 +254,4 @@ Write-PipelineSetVariable -name "HelixSourcePrefix" -value "$helix_source_prefix
Write-PipelineSetVariable -name "Kind" -value "$kind" -is_multi_job_variable false
Write-PipelineSetVariable -name "_BuildConfig" -value "$architecture.$kind.$framework" -is_multi_job_variable false
Write-PipelineSetVariable -name "Compare" -value "$compare" -is_multi_job_variable false
Write-PipelineSetVariable -name "MonoDotnet" -value "$using_mono" -is_multi_job_variable false
23 changes: 22 additions & 1 deletion eng/pipelines/coreclr/perf.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,32 @@ jobs:
- Windows_NT_x86
jobParameters:
testGroup: perf


- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/mono/templates/build-job.yml
runtimeFlavor: mono
buildConfig: release
platforms:
- Linux_x64

- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml
buildConfig: release
runtimeFlavor: mono
platforms:
- Linux_x64
jobParameters:
testGroup: perf
liveLibrariesBuildConfig: Release
runtimeType: mono

- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml
buildConfig: release
runtimeFlavor: coreclr
platforms:
- Linux_x64
- Windows_NT_x64
Expand Down
36 changes: 31 additions & 5 deletions eng/pipelines/coreclr/templates/perf-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ parameters:
framework: netcoreapp5.0 # Specify the appropriate framework when running release branches (ie netcoreapp3.0 for release/3.0)
liveLibrariesBuildConfig: ''
variables: {}
runtimeType: 'coreclr'
pool: ''

### Perf job
Expand All @@ -18,24 +19,33 @@ jobs:
- template: run-performance-job.yml
parameters:
# Compute job name from template parameters
jobName: ${{ format('perfbuild_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
displayName: ${{ format('Performance {0}{1} {2} {3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
jobName: ${{ format('perfbuild_{0}{1}_{2}_{3}_{4}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.runtimeType) }}
displayName: ${{ format('Performance {0}{1} {2} {3} {4}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.runtimeType) }}
pool: ${{ parameters.pool }}
buildConfig: ${{ parameters.buildConfig }}
archType: ${{ parameters.archType }}
osGroup: ${{ parameters.osGroup }}
osSubgroup: ${{ parameters.osSubgroup }}
liveLibrariesBuildConfig: ${{ parameters.liveLibrariesBuildConfig }}
runtimeType: ${{ parameters.runtimeType }}
# Test job depends on the corresponding build job
dependsOn:
- ${{ format('coreclr_product_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
- ${{ if ne(parameters.liveLibrariesBuildConfig, '') }}:
- ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.liveLibrariesBuildConfig) }}
- ${{ if eq(parameters.runtimeType, 'mono') }}:
- ${{ format('mono_product_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}

${{ if eq(parameters.osGroup, 'Windows_NT') }}:
extraSetupParameters: -CoreRootDirectory $(Build.SourcesDirectory)\artifacts\tests\coreclr\${{ parameters.osGroup }}.${{ parameters.archType }}.Release\Tests\Core_Root -Architecture ${{ parameters.archType }}
${{ if eq(parameters.runtimeType, 'mono') }}:
extraSetupParameters: -Architecture ${{ parameters.archType }} -MonoDotnet $(Build.SourcesDirectory)\.dotnet-mono -Kind micro_mono
${{ if ne(parameters.runtimeType, 'mono') }}:
extraSetupParameters: -CoreRootDirectory $(Build.SourcesDirectory)\artifacts\tests\coreclr\${{ parameters.osGroup }}.${{ parameters.archType }}.Release\Tests\Core_Root -Architecture ${{ parameters.archType }}
${{ if ne(parameters.osGroup, 'Windows_NT') }}:
extraSetupParameters: --corerootdirectory $(Build.SourcesDirectory)/artifacts/tests/coreclr/${{ parameters.osGroup }}.${{ parameters.archType }}.Release/Tests/Core_Root --architecture ${{ parameters.archType }}
${{ if eq(parameters.runtimeType, 'mono') }}:
extraSetupParameters: --architecture ${{ parameters.archType }} --monodotnet $(Build.SourcesDirectory)/.dotnet-mono --kind micro_mono
${{ if ne(parameters.runtimeType, 'mono') }}:
extraSetupParameters: --corerootdirectory $(Build.SourcesDirectory)/artifacts/tests/coreclr/${{ parameters.osGroup }}.${{ parameters.archType }}.Release/Tests/Core_Root --architecture ${{ parameters.archType }}

variables: ${{ parameters.variables }}

Expand All @@ -44,7 +54,6 @@ jobs:
steps:
# Extra steps that will be passed to the performance template and run before sending the job to helix (all of which is done in the template)


# Optionally download live-built libraries
- ${{ if ne(parameters.liveLibrariesBuildConfig, '') }}:
- template: /eng/pipelines/common/download-artifact-step.yml
Expand All @@ -64,7 +73,24 @@ jobs:
artifactName: '$(buildProductArtifactName)'
displayName: 'product build'

- ${{ if eq(parameters.runtimeType, 'mono') }}:
- template: /eng/pipelines/common/download-artifact-step.yml
parameters:
unpackFolder: $(librariesDownloadDir)/bin/mono/$(osGroup).$(archType).$(buildConfigUpper)
cleanUnpackFolder: false
artifactFileName: 'MonoProduct_$(osGroup)_$(archType)_$(buildConfig)$(archiveExtension)'
artifactName: 'MonoProduct_$(osGroup)_$(archType)_$(buildConfig)'
displayName: 'Mono runtime'

# Create Core_Root
- script: $(coreClrRepoRootDir)build-test$(scriptExt) $(buildConfig) $(archType) generatelayoutonly $(librariesOverrideArg)
displayName: Create Core_Root
condition: and(succeeded(), ne(variables.runtimeFlavorName, 'Mono'))

- script: "build.cmd -subset libs.pretest -configuration release -ci -arch $(archType) -testscope innerloop /p:RuntimeArtifactsPath=$(librariesDownloadDir)\\bin\\mono\\$(osGroup).$(archType).$(buildConfigUpper) /p:RuntimeFlavor=mono;xcopy $(Build.SourcesDirectory)\\artifacts\\bin\\testhost\\$(_Framework)-$(osGroup)-$(buildConfigUpper)-$(archType)\\* $(Build.SourcesDirectory)\\.dotnet-mono /E /I /Y;copy $(Build.SourcesDirectory)\\artifacts\\bin\\coreclr\\$(osGroup).$(archType).$(buildConfigUpper)\\corerun.exe $(Build.SourcesDirectory)\\.dotnet-mono\\shared\\Microsoft.NETCore.App\\5.0.0\\corerun.exe"
displayName: "Create mono dotnet (Windows)"
condition: and(and(succeeded(), eq(variables.runtimeFlavorName, 'Mono')), eq(variables.osGroup, 'Windows_NT'))

- script: "mkdir $(Build.SourcesDirectory)/.dotnet-mono;./build.sh -subset libs.pretest -configuration release -ci -arch $(archType) -testscope innerloop /p:RuntimeArtifactsPath=$(librariesDownloadDir)/bin/mono/$(osGroup).$(archType).$(buildConfigUpper) /p:RuntimeFlavor=mono;cp $(Build.SourcesDirectory)/artifacts/bin/testhost/$(_Framework)-$(osGroup)-$(buildConfigUpper)-$(archType)/* $(Build.SourcesDirectory)/.dotnet-mono -r;cp $(Build.SourcesDirectory)/artifacts/bin/coreclr/$(osGroup).$(archType).$(buildConfigUpper)/corerun $(Build.SourcesDirectory)/.dotnet-mono/shared/Microsoft.NETCore.App/5.0.0/corerun"
displayName: "Create mono dotnet (Linux)"
condition: and(and(succeeded(), eq(variables.runtimeFlavorName, 'Mono')), ne(variables.osGroup, 'Windows_NT'))
8 changes: 8 additions & 0 deletions eng/pipelines/coreclr/templates/run-performance-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ parameters:
timeoutInMinutes: 320 # optional -- timeout for the job
enableTelemetry: false # optional -- enable for telemetry
liveLibrariesBuildConfig: '' # optional -- live-live libraries configuration to use for the run
runtimeType: 'coreclr'

jobs:
- template: xplat-pipeline-job.yml
Expand Down Expand Up @@ -103,3 +104,10 @@ jobs:
WorkItemTimeout: 4:00 # 4 hours
WorkItemDirectory: '$(WorkItemDirectory)' # WorkItemDirectory can not be empty, so we send it some docs to keep it happy
CorrelationPayloadDirectory: '$(PayloadDirectory)' # it gets checked out to a folder with shorter path than WorkItemDirectory so we can avoid file name too long exceptions
- task: PublishPipelineArtifact@1
displayName: Publish Logs
inputs:
targetPath: $(Build.SourcesDirectory)/artifacts/log
artifactName: 'Performance_Run_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)_${{ parameters.runtimeType }}'
continueOnError: true
condition: always()