performance-setup.ps1 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. Param(
  2. [string] $SourceDirectory=$env:BUILD_SOURCESDIRECTORY,
  3. [string] $CoreRootDirectory,
  4. [string] $BaselineCoreRootDirectory,
  5. [string] $Architecture="x64",
  6. [string] $Framework="netcoreapp5.0",
  7. [string] $CompilationMode="Tiered",
  8. [string] $Repository=$env:BUILD_REPOSITORY_NAME,
  9. [string] $Branch=$env:BUILD_SOURCEBRANCH,
  10. [string] $CommitSha=$env:BUILD_SOURCEVERSION,
  11. [string] $BuildNumber=$env:BUILD_BUILDNUMBER,
  12. [string] $RunCategories="coreclr corefx",
  13. [string] $Csproj="src\benchmarks\micro\MicroBenchmarks.csproj",
  14. [string] $Kind="micro",
  15. [switch] $Internal,
  16. [switch] $Compare,
  17. [string] $Configurations="CompilationMode=$CompilationMode"
  18. )
  19. $RunFromPerformanceRepo = ($Repository -eq "dotnet/performance") -or ($Repository -eq "dotnet-performance")
  20. $UseCoreRun = ($CoreRootDirectory -ne [string]::Empty)
  21. $UseBaselineCoreRun = ($BaselineCoreRootDirectory -ne [string]::Empty)
  22. $PayloadDirectory = (Join-Path $SourceDirectory "Payload")
  23. $PerformanceDirectory = (Join-Path $PayloadDirectory "performance")
  24. $WorkItemDirectory = (Join-Path $SourceDirectory "workitem")
  25. $ExtraBenchmarkDotNetArguments = "--iterationCount 1 --warmupCount 0 --invocationCount 1 --unrollFactor 1 --strategy ColdStart --stopOnFirstError true"
  26. $Creator = $env:BUILD_DEFINITIONNAME
  27. $PerfLabArguments = ""
  28. $HelixSourcePrefix = "pr"
  29. $Queue = "Windows.10.Amd64.ClientRS4.DevEx.15.8.Open"
  30. if ($Framework.StartsWith("netcoreapp")) {
  31. $Queue = "Windows.10.Amd64.ClientRS5.Open"
  32. }
  33. if ($Compare) {
  34. $Queue = "Windows.10.Amd64.19H1.Tiger.Perf.Open"
  35. $PerfLabArguments = ""
  36. $ExtraBenchmarkDotNetArguments = ""
  37. }
  38. if ($Internal) {
  39. $Queue = "Windows.10.Amd64.19H1.Tiger.Perf"
  40. $PerfLabArguments = "--upload-to-perflab-container"
  41. $ExtraBenchmarkDotNetArguments = ""
  42. $Creator = ""
  43. $HelixSourcePrefix = "official"
  44. }
  45. $CommonSetupArguments="--frameworks $Framework --queue $Queue --build-number $BuildNumber --build-configs $Configurations"
  46. $SetupArguments = "--repository https://github.com/$Repository --branch $Branch --get-perf-hash --commit-sha $CommitSha $CommonSetupArguments"
  47. if ($RunFromPerformanceRepo) {
  48. $SetupArguments = "--perf-hash $CommitSha $CommonSetupArguments"
  49. robocopy $SourceDirectory $PerformanceDirectory /E /XD $PayloadDirectory $SourceDirectory\artifacts $SourceDirectory\.git
  50. }
  51. else {
  52. git clone --branch master --depth 1 --quiet https://github.com/dotnet/performance $PerformanceDirectory
  53. }
  54. if ($UseCoreRun) {
  55. $NewCoreRoot = (Join-Path $PayloadDirectory "Core_Root")
  56. Move-Item -Path $CoreRootDirectory -Destination $NewCoreRoot
  57. }
  58. if ($UseBaselineCoreRun) {
  59. $NewBaselineCoreRoot = (Join-Path $PayloadDirectory "Baseline_Core_Root")
  60. Move-Item -Path $BaselineCoreRootDirectory -Destination $NewBaselineCoreRoot
  61. }
  62. $DocsDir = (Join-Path $PerformanceDirectory "docs")
  63. robocopy $DocsDir $WorkItemDirectory
  64. # Set variables that we will need to have in future steps
  65. $ci = $true
  66. . "$PSScriptRoot\..\pipeline-logging-functions.ps1"
  67. # Directories
  68. Write-PipelineSetVariable -Name 'PayloadDirectory' -Value "$PayloadDirectory" -IsMultiJobVariable $false
  69. Write-PipelineSetVariable -Name 'PerformanceDirectory' -Value "$PerformanceDirectory" -IsMultiJobVariable $false
  70. Write-PipelineSetVariable -Name 'WorkItemDirectory' -Value "$WorkItemDirectory" -IsMultiJobVariable $false
  71. # Script Arguments
  72. Write-PipelineSetVariable -Name 'Python' -Value "py -3" -IsMultiJobVariable $false
  73. Write-PipelineSetVariable -Name 'ExtraBenchmarkDotNetArguments' -Value "$ExtraBenchmarkDotNetArguments" -IsMultiJobVariable $false
  74. Write-PipelineSetVariable -Name 'SetupArguments' -Value "$SetupArguments" -IsMultiJobVariable $false
  75. Write-PipelineSetVariable -Name 'PerfLabArguments' -Value "$PerfLabArguments" -IsMultiJobVariable $false
  76. Write-PipelineSetVariable -Name 'BDNCategories' -Value "$RunCategories" -IsMultiJobVariable $false
  77. Write-PipelineSetVariable -Name 'TargetCsproj' -Value "$Csproj" -IsMultiJobVariable $false
  78. Write-PipelineSetVariable -Name 'Kind' -Value "$Kind" -IsMultiJobVariable $false
  79. Write-PipelineSetVariable -Name 'Architecture' -Value "$Architecture" -IsMultiJobVariable $false
  80. Write-PipelineSetVariable -Name 'UseCoreRun' -Value "$UseCoreRun" -IsMultiJobVariable $false
  81. Write-PipelineSetVariable -Name 'UseBaselineCoreRun' -Value "$UseBaselineCoreRun" -IsMultiJobVariable $false
  82. Write-PipelineSetVariable -Name 'RunFromPerfRepo' -Value "$RunFromPerformanceRepo" -IsMultiJobVariable $false
  83. Write-PipelineSetVariable -Name 'Compare' -Value "$Compare" -IsMultiJobVariable $false
  84. # Helix Arguments
  85. Write-PipelineSetVariable -Name 'Creator' -Value "$Creator" -IsMultiJobVariable $false
  86. Write-PipelineSetVariable -Name 'Queue' -Value "$Queue" -IsMultiJobVariable $false
  87. Write-PipelineSetVariable -Name 'HelixSourcePrefix' -Value "$HelixSourcePrefix" -IsMultiJobVariable $false
  88. Write-PipelineSetVariable -Name '_BuildConfig' -Value "$Architecture.$Kind.$Framework" -IsMultiJobVariable $false
  89. exit 0