From cc4153d8fd7b728819b47ddd5fc92cdeb73a87c8 Mon Sep 17 00:00:00 2001 From: EgorBo Date: Thu, 29 Jan 2026 01:41:29 +0100 Subject: [PATCH 1/3] Enable linux-x64 for TechEmpower SPMI scenarios --- .../templates/superpmi-collect-pipeline.yml | 228 +----------------- src/coreclr/scripts/superpmi_aspnet2.py | 4 + 2 files changed, 5 insertions(+), 227 deletions(-) diff --git a/eng/pipelines/coreclr/templates/superpmi-collect-pipeline.yml b/eng/pipelines/coreclr/templates/superpmi-collect-pipeline.yml index 3f260420a14a0e..c394c89a1ab9b2 100644 --- a/eng/pipelines/coreclr/templates/superpmi-collect-pipeline.yml +++ b/eng/pipelines/coreclr/templates/superpmi-collect-pipeline.yml @@ -255,232 +255,6 @@ extends: jobParameters: testGroup: outerloop - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/superpmi-collect-job.yml - buildConfig: checked - platforms: - - osx_arm64 - - linux_arm - - linux_arm64 - - linux_x64 - - windows_x64 - - windows_x86 - - windows_arm64 - helixQueueGroup: ci - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: outerloop - liveLibrariesBuildConfig: Release - collectionType: pmi - collectionName: libraries - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/superpmi-collect-job.yml - buildConfig: checked - platforms: - - osx_arm64 - - linux_arm - - linux_arm64 - - linux_x64 - - windows_x64 - - windows_x86 - - windows_arm64 - helixQueueGroup: ci - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: outerloop - liveLibrariesBuildConfig: Release - collectionType: crossgen2 - collectionName: libraries - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/superpmi-collect-job.yml - buildConfig: checked - platforms: - - osx_arm64 - - linux_arm - - linux_arm64 - - linux_x64 - - windows_x64 - - windows_x86 - - windows_arm64 - helixQueueGroup: ci - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: outerloop - liveLibrariesBuildConfig: Release - collectionType: run - collectionName: realworld - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/superpmi-collect-job.yml - buildConfig: checked - platforms: - - osx_arm64 - - linux_arm - - linux_arm64 - - linux_x64 - - windows_x64 - - windows_x86 - - windows_arm64 - helixQueueGroup: ci - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: outerloop - liveLibrariesBuildConfig: Release - collectionType: run - collectionName: benchmarks - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/superpmi-collect-job.yml - buildConfig: checked - platforms: - - osx_arm64 - - linux_arm - - linux_arm64 - - linux_x64 - - windows_x64 - - windows_x86 - - windows_arm64 - helixQueueGroup: ci - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: outerloop - liveLibrariesBuildConfig: Release - collectionType: run_pgo - collectionName: benchmarks - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/superpmi-collect-job.yml - buildConfig: checked - platforms: - - osx_arm64 - - linux_arm - - linux_arm64 - - linux_x64 - - windows_x64 - - windows_x86 - - windows_arm64 - helixQueueGroup: ci - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: outerloop - liveLibrariesBuildConfig: Release - collectionType: run_pgo_optrepeat - collectionName: benchmarks - - # - # Collection of coreclr test run - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - buildConfig: checked - platforms: - - osx_arm64 - - linux_arm - - linux_arm64 - - linux_x64 - - windows_x64 - - windows_x86 - - windows_arm64 - helixQueueGroup: superpmi - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: outerloop - liveLibrariesBuildConfig: Release - SuperPmiCollect: true - unifiedArtifactsName: BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig) - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/superpmi-collect-job.yml - buildConfig: checked - platforms: - - linux_arm64 - - linux_x64 - - windows_x64 - - windows_arm64 - helixQueueGroup: ci - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: outerloop - liveLibrariesBuildConfig: Release - collectionType: nativeaot - collectionName: smoke_tests - - # - # Collection of libraries test run: normal - # Libraries Test Run using Release libraries, and Checked CoreCLR - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - buildConfig: Release - platforms: - - osx_arm64 - - linux_arm - - linux_arm64 - - linux_x64 - - windows_x64 - - windows_x86 - - windows_arm64 - helixQueueGroup: superpmi - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testScope: innerloop - liveRuntimeBuildConfig: Checked - dependsOnTestBuildConfiguration: Release - dependsOnTestArchitecture: x64 - scenarios: - - normal - SuperPmiCollect: true - SuperPmiCollectionName: libraries_tests - unifiedArtifactsName: BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Checked - helixArtifactsName: LibrariesTestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Checked - unifiedBuildConfigOverride: checked - # Default timeout is 150 minutes, which is too low for osx-arm64 queue. - timeoutInMinutes: 300 - - # - # Collection of libraries test run: no_tiered_compilation - # Libraries Test Run using Release libraries, and Checked CoreCLR - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - buildConfig: Release - platforms: - - osx_arm64 - - linux_arm - - linux_arm64 - - linux_x64 - - windows_x64 - - windows_x86 - - windows_arm64 - helixQueueGroup: superpmi - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testScope: innerloop - liveRuntimeBuildConfig: Checked - dependsOnTestBuildConfiguration: Release - dependsOnTestArchitecture: x64 - scenarios: - - no_tiered_compilation - SuperPmiCollect: true - SuperPmiCollectionName: libraries_tests_no_tiered_compilation - unifiedArtifactsName: BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Checked - helixArtifactsName: LibrariesTestArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Checked - unifiedBuildConfigOverride: checked - # Default timeout is 150 minutes, which is too low for osx-arm64 queue. - timeoutInMinutes: 300 - # # Collection of aspnet/TechEmpower benchmarks (crank-based): aspnet2 # @@ -491,7 +265,7 @@ extends: platforms: - osx_arm64 - linux_arm64 - # - linux_x64 # currently runs of disk space too often. + - linux_x64 - windows_x64 - windows_arm64 helixQueueGroup: ci diff --git a/src/coreclr/scripts/superpmi_aspnet2.py b/src/coreclr/scripts/superpmi_aspnet2.py index 3e2d4bcf6f92ea..7fde38e1bc3f73 100644 --- a/src/coreclr/scripts/superpmi_aspnet2.py +++ b/src/coreclr/scripts/superpmi_aspnet2.py @@ -152,6 +152,10 @@ def setup_and_run_crank_agent(workdir: Path): os.environ['DOTNET_CLI_TELEMETRY_OPTOUT'] = '1' os.environ['DOTNET_MULTILEVEL_LOOKUP'] = '0' os.environ['UseSharedCompilation'] = 'false' + os.environ['NUGET_PLUGINS_CACHE_PATH'] = str(workdir / "NUGET_PLUGINS_CACHE_PATH") + os.environ['NUGET_PACKAGES'] = str(workdir / "NUGET_PACKAGES") + os.environ['NUGET_HTTP_CACHE_PATH'] = str(workdir / "NUGET_HTTP_CACHE_PATH") + os.environ['NUGET_SCRATCH'] = str(workdir / "NUGET_SCRATCH") print("Installing tools ...") logs_dir.mkdir(parents=True, exist_ok=True) From b3b30e2138f15f36e71e63e2bdd8185bdadcf0e0 Mon Sep 17 00:00:00 2001 From: EgorBo Date: Thu, 29 Jan 2026 22:09:12 +0100 Subject: [PATCH 2/3] clean up --- src/coreclr/scripts/superpmi_aspnet2.py | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/src/coreclr/scripts/superpmi_aspnet2.py b/src/coreclr/scripts/superpmi_aspnet2.py index 7fde38e1bc3f73..ceb6943302dd76 100644 --- a/src/coreclr/scripts/superpmi_aspnet2.py +++ b/src/coreclr/scripts/superpmi_aspnet2.py @@ -176,24 +176,17 @@ def setup_and_run_crank_agent(workdir: Path): # Create a Localhost.yml to define the local environment since we can't access the PerfLab. yml = textwrap.dedent( f""" -variables: - applicationAddress: 127.0.0.1 - loadAddress: 127.0.0.1 - applicationPort: {CRANK_PORT} - applicationScheme: http - loadPort: {CRANK_PORT} - loadScheme: http + profiles: Localhost: - variables: - serverAddress: "{{{{applicationAddress}}}}" jobs: application: endpoints: - - "{{{{applicationScheme}}}}://{{{{applicationAddress}}}}:{{{{applicationPort}}}}" + - "http://127.0.0.1:{CRANK_PORT}" load: endpoints: - - "{{{{loadScheme}}}}://{{{{loadAddress}}}}:{{{{loadPort}}}}" + - "http://127.0.0.1:{CRANK_PORT}" + """) localhost_yml.write_text(yml, encoding="utf-8") @@ -253,11 +246,6 @@ def run_crank_scenario(crank_app: Path, scenario_name: str, framework: str, work "--application.runtimeVersion", "10.0.0-rtm.25513.102", "--application.sdkVersion", "10.0.100-rtm.25513.102", - "--application.collectDependencies", "false", - "--application.options.collectCounters", "false", - "--load.options.reuseBuild", "true", - "--load.variables.duration", "45", - "--load.variables.warmup", "15", "--load.job", "bombardier", # Bombardier is more cross-platform friendly (wrk is linux only) ] From 0c1d0bcb1b416939069a2c3105515f00d6ca76e9 Mon Sep 17 00:00:00 2001 From: Egor Bogatov Date: Fri, 30 Jan 2026 11:11:47 +0100 Subject: [PATCH 3/3] Update superpmi_aspnet2.py --- src/coreclr/scripts/superpmi_aspnet2.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/coreclr/scripts/superpmi_aspnet2.py b/src/coreclr/scripts/superpmi_aspnet2.py index ceb6943302dd76..8174b076b5a5ca 100644 --- a/src/coreclr/scripts/superpmi_aspnet2.py +++ b/src/coreclr/scripts/superpmi_aspnet2.py @@ -209,6 +209,7 @@ def setup_and_run_crank_agent(workdir: Path): "--log-path", str(logs_dir), "--build-path", str(build_dir), "--dotnethome", str(dotnethome_dir), + "--build-timeout", "30", ], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, stdin=subprocess.DEVNULL, creationflags=creation_flags,