dlopen: More refactoring, add test to measure communication counts #27872
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds a test to measure communication counts for different dynamic loading events. It also does some more refactoring of the internal dynamic loading code as well as the code in the test directory.
Originally, the goal of this PR was to adjust the strategy used when loading a symbol from a binary so that it only generated 2 comm events: one when emplacing on the binary's locale, and another when emplacing on
here. However, I identified that this would not be possible without a significant refactor to the code and the representation of wide procedures.In lieu of making this adjustment, I've added a long comment with a
TODOin an appropriate spot that identifies our options here. However, I don't think it's worth pursuing this adjustment until we have compelling evidence that a lazy emplacement strategy is required (certainly not before the compiler introduces optimizations to localize procedure pointers).This PR also adds a new
commCounterclass that I added to help with measuring comm events. I've added it to thetest/dynamic-loadingdirectory because it is harmless there, but I may add a more robust version somewhere developer-visible in the future.