-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
[mono] Intrinsify API's in SpanHelpers.ByteMemOps.cs #99161
Comments
Tagging subscribers to this area: @SamMonoRT, @fanyang-mono Issue DetailsTwo new API's were added and intrinsified by CoreCLR. They are used in the library which caused Performance regression in Mono. See dotnet/perf-autofiling-issues#29872. These new API's were added via #98623 The API's to intrinsify are
|
This is one of the regressions in dotnet/perf-autofiling-issues#30686 so it is potentially quite impactful on wasm |
It was decided that it should be handled on Mono side #99059 |
Yes, this issue is about fixing it in mono. I pinged you because this is a ship blocking regression for wasm and I wanted to make sure that was clear. |
Iinterpreter changes were added in #99115 |
I think we can just land #99059 if so cc @fanyang-mono |
It is unfortunate that this wasn't flagged as a ship blocking issue for wasm at the time this regression was introduced. I could work on getting this in for Preview 5 instead of #99059. |
We couldn't flag it then because we couldn't identify it because wasm runs in dotnet/performance were not working. I was only able to identify it now that the performance team has backfilled the missing runs and I made time to dig into them again. But to be clear this needs to be fixed before rtm not preview 5 |
And thank you to the perf team for doing the backfill it made it possible to positively identify the cause. I'm still curious why it impacted wasm aot so much more heavily than the rest of mono. |
I presume previously it was intrinsified to be an llvm.memset/memcpy calls. The thing is - those calls were not GC-interrupt friendly so, technically, this performance regression improves GC latency in fact. |
GC latency in single threaded wasm is not impacted at all by that. |
I am also curious why this regression has bigger impact on wasm. |
@lewing I digged into the data. And this is the same microbenchmark chart but on arm64 with Mono LLVM AOT, which doesn't have the same regression as wasm @matouskozak Do you know if this chart contains accurate data? |
I very much hope so. We are missing the data between February and March because Mono AOT-llvm was similarly affected as WASM was. Since we didn't observe significant regression after we regain the measurements we didn't ask for backfill of the missing values. Do you think the measurements could be flawed? I run a quick local measurements using |
I looked into this issue a little bit more and confirmed these:
|
Two new API's were added and intrinsified by CoreCLR. They are used in the library which caused Performance regression in Mono. See dotnet/perf-autofiling-issues#29872. These new API's were added via #98623
The API's to intrinsify are
Buffer.Memmove
. See the code belowruntime/src/mono/mono/mini/intrinsics.c
Lines 288 to 310 in fd48b6f
The text was updated successfully, but these errors were encountered: