opentelemetry-dotnet-instrumentation
opentelemetry-dotnet-instrumentation copied to clipboard
CPU and memory allocation continuous profiler
Feature Request
Note AlwaysOn Profiler is the name used as a product feature in Splunk. Broadly it is more known as a continuous profiles. It takes small portion of data every few seconds/events.
Implement CPU and memory profiler for .NET based on description in Splunk repository:
- CPU profiler : https://github.com/signalfx/signalfx-dotnet-tracing/blob/main/docs/always-on-profiling.md
- Memory profiler: https://github.com/signalfx/signalfx-dotnet-tracing/blob/main/docs/internal/memory-profiling.md
Most of the native code is stored under: https://github.com/signalfx/signalfx-dotnet-tracing/blob/main/tracer/src/Datadog.Trace.ClrProfiler.Native/always_on_profiler.cpp (and other prefixed by always_on_*). Most of the managed code part: https://github.com/signalfx/signalfx-dotnet-tracing/tree/main/tracer/src/Datadog.Trace/AlwaysOnProfiler Integration tests: https://github.com/signalfx/signalfx-dotnet-tracing/blob/main/tracer/test/Datadog.Trace.ClrProfiler.IntegrationTests/AlwaysOnProfilerPprofTests.cs Tests application (covers all .NET languages): https://github.com/signalfx/signalfx-dotnet-tracing/tree/main/tracer/test/test-applications/integrations/Samples.AlwaysOnProfiler
I propose to add a pprof exporter as it could be useful for both the users as well as OTLP Profiler SIG for reference.