Check EnabledFor* individually for non-self-describing events #46555
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.
Recently, I've seen EventPipe overhead in ETW traces where EventPipe is disabled. Upon drilling down further, this shows up because if either ETW or EventPipe is enabled for an EventSource, then EventSource assumes that both are enabled. This results in pinvokes into native code for each logger to emit the event. When a logger is disabled, this pinvoke wasted work.
Given that we know the state of each logger, it's easy enough to check them individually before the pinvoke. This change does not extend this behavior to self-describing events because this code is quite different, and there isn't easy to consume state that will tell us which events are enabled for each source.