Add CoreCLR WASM R2R performance lane - #5297
Conversation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f286edf-0a3c-43dc-92fe-26a0a57d5360
There was a problem hiding this comment.
🔵 Needs a closer look
It changes CI/Helix orchestration and MSBuild/runtime-pack resolution behavior where correctness is environment-dependent and should be validated by a human with end-to-end runs.
Pull request overview
Adds a dedicated CoreCLR browser-WASM ReadyToRun (R2R) microbenchmark lane (V8) and wires the R2R selection through the performance repo’s Helix/job plumbing and MSBuild configuration, including validation to fail fast when required settings aren’t applied.
Changes:
- Adds CoreCLR-vs-Mono runtime-pack override logic for WASM builds and validates the expected CoreCLR runtime pack for R2R runs.
- Introduces
--wasm-ready-to-runend-to-end (CLI arg → env var → MSBuild properties → Helix forwarding) and emits a distinctR2RType=r2rrun dimension. - Adds a non-release-branch pipeline lane for CoreCLR WASM R2R microbenchmarks on V8 plus focused pytest coverage.
File summaries
| File | Description |
|---|---|
| src/scenarios/build-common/WasmOverridePacks.targets | Chooses CoreCLR vs Mono WASM runtime-pack IDs based on UseMonoRuntime. |
| src/benchmarks/micro/MicroBenchmarks.Wasm.targets | Enables/validates CoreCLR WASM R2R publish properties and validates runtime-pack selection. |
| scripts/tests/test_wasm_coreclr_r2r.py | Adds pytest coverage for argument validation, env propagation, Helix forwarding, and result dimensions. |
| scripts/run_performance_job.py | Forwards --wasm-ready-to-run to Helix work items and adds R2RType=r2r dimension. |
| scripts/micro_benchmarks.py | Adds --wasm-ready-to-run and propagates it via PERFLAB_WASM_READY_TO_RUN. |
| eng/pipelines/runtime-wasm-perf-jobs.yml | Adds a CoreCLR WASM R2R microbenchmark lane (non-release branches), V8 on linux_x64. |
Review details
- Files reviewed: 6/6 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
dotnet/runtime#133040 is the runtime side |
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f286edf-0a3c-43dc-92fe-26a0a57d5360
|
Pushed |
There was a problem hiding this comment.
🔵 Needs a closer look
The environment-dependent MSBuild and Helix integration still requires the stated end-to-end validation after the latest package-version fix.
Review details
- Files reviewed: 7/7 changed files
- Comments generated: 0 new
- Review effort level: Balanced
|
is there a better (non-workload) way to use the crossgen from the build? |
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4f286edf-0a3c-43dc-92fe-26a0a57d5360
|
Build 1579662 was green but did not actually compile the benchmark app as R2R: the inner-TFM restore evaluation reset |
There was a problem hiding this comment.
🔵 Needs a closer look
The configuration validation runs after publishing rather than failing before build work begins.
Review details
Suppressed comments (1)
Previously missed (1) — in code that hasn't changed since the last review.
src/benchmarks/micro/MicroBenchmarks.Wasm.targets:21
PrepareForWasmBuildis a BenchmarkDotNet-generated target that runsAfterTargets="Publish", so this validation occurs only after the full publish/R2R work has already completed. Invalid Mono/R2R or package settings therefore do not fail fast as described; hook this validation before framework-pack resolution (or another pre-build target) instead.
- Files reviewed: 7/7 changed files
- Comments generated: 0 new
- Review effort level: Balanced
|
the crossgen we're building for the pipeline had a newer glibc because it wasn't crossbuilt dotnet/runtime#133143 it the fix for that and I will rereun the test once it is in. |
|
I think this depends on WASM SDK (msbuild) support for R2R - cross-compile trimmed app -> SWA -> boot config. Right ? |
|
are we testing corerun @lewing ? |
Summary
R2RType=r2rresult dimensionDependency
Depends on dotnet/runtime#133040, which stages the matching host Crossgen2 pack in
BrowserWasmCoreCLR.Validation
Remaining validation
Run
runtime-wasm-perfwith this branch and the runtime artifact together, confirmCreateReadyToRunImagesexecutes, and verify uploaded results are labeledR2RType=r2r.