Skip to content

[RuntimeAsync] PGO support. #115096

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

Open
Tracked by #109632
VSadov opened this issue Apr 27, 2025 · 6 comments
Open
Tracked by #109632

[RuntimeAsync] PGO support. #115096

VSadov opened this issue Apr 27, 2025 · 6 comments
Labels
area-VM-coreclr runtime-async untriaged New issue has not been triaged by the area owner

Comments

@VSadov
Copy link
Member

VSadov commented Apr 27, 2025

Re: #114675 (comment)

Right now async variants are explicitly excluded from PGO.
No fundamental reason for that, it is just an NYI that needs to be revisited, implemented, tested.

@VSadov VSadov added area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI runtime-async labels Apr 27, 2025
@dotnet-policy-service dotnet-policy-service bot added the untriaged New issue has not been triaged by the area owner label Apr 27, 2025
Copy link
Contributor

Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.

@jakobbotsch jakobbotsch added area-VM-coreclr and removed area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI labels Apr 27, 2025
Copy link
Contributor

Tagging subscribers to this area: @mangod9
See info in area-owners.md if you want to be subscribed.

@jakobbotsch
Copy link
Member

I assume by async variants you mean specifically the runtime provided thunks. I believe PGO already works fine in the methods with user provided IL (at least it was the case a few months ago).

@VSadov
Copy link
Member Author

VSadov commented Apr 27, 2025

I did not look in details if it is only thunks that we do not support. This is just an issue to make sure we act on TODOs in that area.
It may be that we decide that what we have working is sufficient. Then removing TODO would be the only action.

I am not sure how much thunks can dynamically learn and improve something.
Maybe some kind of devirtualization/inlining is still possible.

@jakobbotsch
Copy link
Member

You did the work in dotnet/runtimelab#2818 (comment) to ensure tiered compilation and PGO worked (in the first version the PR broke it.)

I am not sure how much thunks can dynamically learn something and improve.
Maybe some kind of devirtualization/inlining is still possible.

Yeah, this would likely be around inlining. But yes, it likely is not super important, and it is not clear if we would even benefit from it. I also believe there currently is no tiering at all for the runtime provided stubs (so they are always compiled in tier 1).

@VSadov
Copy link
Member Author

VSadov commented Apr 28, 2025

Ah, right. I remember there was a major issue with tiering as we got confused which of the two variants we are dealing with.
I forgot that it was in a PGO testcase.

I guess PGO is working in scenarios where we allow tiering.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-VM-coreclr runtime-async untriaged New issue has not been triaged by the area owner
Projects
None yet
Development

No branches or pull requests

2 participants