diff --git a/CHANGELOG.md b/CHANGELOG.md index 17b3dd6135..0103cf05e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +### Enhancements + +- Profiling: improve performance by subscribing only to necessary CLR events ([#3970](https://github.com/getsentry/sentry-dotnet/pull/3970)) + ### Fixes - Unknown stack frames in profiles on .NET 8+ ([#3967](https://github.com/getsentry/sentry-dotnet/pull/3967)) diff --git a/src/Sentry.Profiling/SampleProfilerSession.cs b/src/Sentry.Profiling/SampleProfilerSession.cs index 9b5e2756b1..6cd9a9242a 100644 --- a/src/Sentry.Profiling/SampleProfilerSession.cs +++ b/src/Sentry.Profiling/SampleProfilerSession.cs @@ -31,13 +31,13 @@ private SampleProfilerSession(SentryStopwatch stopwatch, EventPipeSession sessio // Exposed only for benchmarks. internal static EventPipeProvider[] Providers = new[] { - // Note: all events we need issued by "DotNETRuntime" provider are at "EventLevel.Informational" - // see https://learn.microsoft.com/en-us/dotnet/fundamentals/diagnostics/runtime-events - // TODO replace Keywords.Default with a subset. Currently it is: - // Default = GC | Type | GCHeapSurvivalAndMovement | Binder | Loader | Jit | NGen | SupressNGen - // | StopEnumeration | Security | AppDomainResourceManagement | Exception | Threading | Contention | Stack | JittedMethodILToNativeMap - // | ThreadTransfer | GCHeapAndTypeNames | Codesymbols | Compilation, - new EventPipeProvider(ClrTraceEventParser.ProviderName, EventLevel.Verbose, (long) ClrTraceEventParser.Keywords.Default), + new EventPipeProvider(ClrTraceEventParser.ProviderName, EventLevel.Verbose, (long) ( + ClrTraceEventParser.Keywords.Jit + | ClrTraceEventParser.Keywords.NGen + | ClrTraceEventParser.Keywords.Loader + | ClrTraceEventParser.Keywords.Binder + | ClrTraceEventParser.Keywords.JittedMethodILToNativeMap + )), new EventPipeProvider(SampleProfilerTraceEventParser.ProviderName, EventLevel.Informational), // new EventPipeProvider(TplEtwProviderTraceEventParser.ProviderName, EventLevel.Informational, (long) TplEtwProviderTraceEventParser.Keywords.Default) };