Skip to content

blog: Making continuous .NET profiling practical for production Kubernetes workloads #10992

Description

@danielpacak

Blog Post Title

Making continuous .NET profiling practical for production Kubernetes workloads

Blog Post Outline

Continuous, low-overhead profiling has become essential for production observability, yet managed runtimes like .NET remain difficult to profile. Their call stacks combine dynamically generated and precompiled code, and unlike native binaries, human-readable function names are not exposed through the standard symbol formats a system profiler relies on. This post describes how a whole-system eBPF profiler reconstructs readable function names from raw instruction addresses with no code changes and under 1% overhead. Since most .NET services run on Kubernetes, I also cover attributing samples to the correct pod and container and mapping frames back to workloads without an in-process agent. I close with the engineering trade-offs of doing this at scale: caching, bounding memory under load, and validating results against real process state across runtime versions.

Technologies Used

  • OpenTelemetry eBPF Profiler
  • Kuberentes
  • .NET

Related Special Interest Groups (SIGs)

  • Profiling SIG
  • eBPF Profiler SIG
  • .NET SIG
  • Collector SIG

Sponsoring SIG

Profiling SIG

Sponsor Name

TBD

Additional Information

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status
    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions