The New Standard
Just as Prometheus became the de facto standard for metrics in cloud-native environments, two major open-source projects are competing to become the standard for continuous profiling in Kubernetes.
1. Grafana Pyroscope
Pyroscope (now part of the Grafana observability stack) prioritizes ease of adoption and ecosystem integration.
- Integration model: Offers two modes — SDK-based (you add a small library to your Go, Java, Python, Ruby, or .NET application) and eBPF-based (zero code changes, uses the Linux kernel).
- Storage: Uses an efficient columnar storage format with aggressive compression, designed to retain months of profiling history without prohibitive storage costs.
- Grafana integration: Profiling data appears natively in Grafana dashboards alongside metrics and traces. You can click a spike on a CPU graph and jump directly to the flamegraph for that time window.
- Query language: Uses PromQL-like label selectors to filter profiles by service, pod, namespace, or any custom label.
A minimal Pyroscope SDK integration in Go is a single startup call naming the application, pointing at the Pyroscope server address, and listing which profile types to collect — CPU time plus object allocation and in-use memory profiles, for example.
2. Parca
Parca (from Polar Signals) prioritizes zero-instrumentation profiling through deep eBPF integration.
- Zero instrumentation: You deploy the Parca agent as a DaemonSet (one pod per Kubernetes node), and it immediately begins profiling every container on every node — no SDK, no code changes, no application restarts required.
- eBPF mechanism: The agent uses eBPF programs attached to Linux kernel perf events. It reads stack traces directly from kernel memory, then resolves function names using DWARF debug symbols or frame pointer unwinding.
- Storage: Uses Parquet columnar format and integrates with object storage (S3, GCS) for long-term retention.
- OpenTelemetry alignment: Parca is designed to align with the emerging OpenTelemetry profiling signal specification, which aims to standardize profiling data the same way OTel standardized traces and metrics.
Choosing Between Them
| Concern | Pyroscope | Parca |
|---|---|---|
| Already using Grafana | ✅ Natural fit | Possible but extra work |
| Need zero code changes | ✅ eBPF mode available | ✅ Primary design goal |
| Language-specific profiling | ✅ Rich SDK support | Limited (eBPF only) |
| Kubernetes-native | Good | Excellent |
| Long-term storage | Built-in | Requires object store config |