-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Automate SPMI collection for TE benchmarks #119098
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
Conversation
I found on recent builds I also needed to copy over some of the host dlls or I get odd CFI failures on windows. I have unmerged changes to my script with these changes. Maybe I should put it up for PR? |
/azp run runtime-coreclr superpmi-collect-test |
Azure Pipelines successfully started running 1 pipeline(s). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR automates SPMI (Super PMI) collection for ASP.NET benchmarks, specifically the TechEmpower benchmarks, by integrating with the "crank" tool. The changes enable automated collection of JIT compilation data from real-world ASP.NET workloads to improve JIT performance analysis.
- Adds a new "aspnet2" collection type that runs TechEmpower benchmarks via crank
- Creates a self-contained Python script to manage the entire crank-based collection workflow
- Integrates the new collection type into the existing SPMI pipeline infrastructure
Reviewed Changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 4 comments.
Show a summary per file
File | Description |
---|---|
src/coreclr/scripts/superpmi_collect_setup.py | Updates setup script to recognize and handle the new "aspnet2" collection type |
src/coreclr/scripts/superpmi_aspnet2.py | New comprehensive script that orchestrates TechEmpower benchmark execution via crank for SPMI collection |
src/coreclr/scripts/superpmi-collect.proj | Adds MSBuild configuration for aspnet2 collections including Helix work item definitions |
eng/pipelines/coreclr/templates/superpmi-collect-pipeline.yml | Enables aspnet2 collection in the CI pipeline for multiple platforms |
eng/pipelines/coreclr/templates/run-superpmi-collect-job.yml | Configures input directory for aspnet2 collection jobs |
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
PTAL @dotnet/jit-contrib @AndyAyersMS |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall this looks good.
You might want to do the same thing my old script does (and we now do for benchmarks) and use a release build with checked jit.
If a particular scenario fails does the whole thing just fail? I ended up trying to carry on anyways, with the thought that a partial collection was better than nothing.
My code re-uses the same logic, see here: runtime/src/coreclr/scripts/superpmi_collect_setup.py Lines 519 to 520 in d353f5f
I only added the aspnet2 check.
Yes, I copied that logic from your script (100%) 🙂 |
Ah, good ... in my old script we had to do this with the script itself, so I was looking for that. |
/ba-g "linux-x64 Debug NativeAOT timeout" |
This PR adds crank-driven SPMI collections (TechEmpower, OrchardCMS, etc). For now I've added 4 benchmarks, will enable more. the ones requiring databases might be tricky to add.
TODOs (in separate PRs):
Linux-x64
(azurelinux.3.amd64.open
) - currently, it runs out of disk space when running this script (it requires ~3GB of disk space).git
dependency and hacks around it once Add Archive source option crank#841 is landed.The currently produced MCH contains 32k contexts (0.5Gb)
In case if you want to have a dryrun locally:
py .\src\coreclr\scripts\superpmi_aspnet2.py --dryrun
Actual run: