-
Notifications
You must be signed in to change notification settings - Fork 5k
Enhance logging of stubs through the PerfMap on Linux #113943
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
davidwrighton
commented
Mar 26, 2025
•
edited
Loading
edited
- Add reporting for all of the stub types that I am aware which are used on Linux
- Unboxing stubs
- Instantiating stubs
- Delegate shuffle thunks
- FixupPrecode
- StubPrecode
- DynamicHelpers for R2R
- CallCounting stubs
- Jump stubs
- Add support for a less granular stub reporting model as the default (which is MUCH more suitable for the StubPrecode and FixupPrecode model). Its slightly less accurate on the type of stub, but it should make the impact of adding those stubs to the maps much less. Some stubs do not yet have reporting in fully granular mode, but I believe I've captured the critical ones there too.
- DOTNET_PerfMapStubGranularity .... set this to 0 for minimum granularity of stub reporting, and to 3 for maximum. I don't believe that documenting the details of this switch are necessary at this time, but I wanted to have some control in case I was wrong about the cost of reduced granularity
- Add support for recording the location of the copy of the writer barriers into the heap. This enables support for good perfmap data in W^X mode
- Add reporting for all of the stub types that I am aware which are used on Linux - Unboxing stubs - Instantiating stubs - Delegate shuffle thunks - FixupPrecode - StubPrecode - DynamicHelpers for R2R - CallCounting stubs - Jump stubs - Add support for a less granular stub reporting model (which is MUCH more suitable for the StubPrecode and FixupPrecode model). Its slightly less accurate on the type of stub, but it should make the impact of adding those stubs to the maps much less. Some stubs do not yet have reporting in fully granular mode, but I believe I've captured the critical ones there too. - Add support for recording the location of the copy of the writer barriers into the heap. This enables support for good perfmap data in W^X mode
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.
Copilot reviewed 7 out of 27 changed files in this pull request and generated no comments.
Files not reviewed (20)
- src/coreclr/inc/clrconfigvalues.h: Language not supported
- src/coreclr/utilcode/loaderheap.cpp: Language not supported
- src/coreclr/vm/amd64/cgenamd64.cpp: Language not supported
- src/coreclr/vm/arm/stubs.cpp: Language not supported
- src/coreclr/vm/arm64/stubs.cpp: Language not supported
- src/coreclr/vm/ceemain.cpp: Language not supported
- src/coreclr/vm/codeman.cpp: Language not supported
- src/coreclr/vm/codeman.h: Language not supported
- src/coreclr/vm/comdelegate.cpp: Language not supported
- src/coreclr/vm/dllimportcallback.cpp: Language not supported
- src/coreclr/vm/i386/cgenx86.cpp: Language not supported
- src/coreclr/vm/i386/jitinterfacex86.cpp: Language not supported
- src/coreclr/vm/loaderallocator.hpp: Language not supported
- src/coreclr/vm/loongarch64/stubs.cpp: Language not supported
- src/coreclr/vm/perfmap.cpp: Language not supported
- src/coreclr/vm/perfmap.h: Language not supported
- src/coreclr/vm/precode.cpp: Language not supported
- src/coreclr/vm/prestub.cpp: Language not supported
- src/coreclr/vm/readytoruninfo.cpp: Language not supported
- src/coreclr/vm/riscv64/stubs.cpp: Language not supported
Tagging subscribers to this area: @mangod9 |
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.
Tested it locally on OrchardCMS and it looks good!
/ba-g unrelated failure |