About
Parca is an open source, infrastructure-wide continuous profiling solution originally created by Polar Signals and contributors from projects like Prometheus, Thanos, and Kubernetes. It continuously collects CPU, memory, and I/O profiling data from your entire stack — broken down by method name, class name, and line number — without requiring any code changes or instrumentation. At its core, Parca Agent uses eBPF to operate in Linux kernel space, grabbing exactly the data needed at very low overhead, making always-on profiling practical in production environments. A multi-dimensional data model with optimized built-in storage and a label-selector query language lets teams slice and compare profiling data across any dimension — such as software versions, services, or deployments. Parca is designed to solve four major pain points: reducing wasted cloud spend (organizations typically waste 20–30% on inefficient code paths), improving application performance by identifying statistical hot paths, enabling fast debugging of memory leaks and I/O spikes, and catching performance regressions immediately after deploys. It supports both push and pull profile collection, service discovery, and static configuration of targets. Parca can be deployed as a binary or on Kubernetes, and integrates with Grafana as a core plugin. All components are licensed under Apache 2.0 and available on GitHub, with an active open source community and bi-weekly public meetings.
Key Features
- Zero-Instrumentation eBPF Profiling: Parca Agent runs in Linux kernel space via eBPF, collecting profiling data from any language or framework without requiring any code changes or application-level instrumentation.
- Multi-Dimensional Data Model: Profile data is stored with rich label metadata, enabling flexible queries that compare performance across software versions, services, deployments, or any custom dimension.
- Built-In Optimized Storage & Query Engine: Parca ships with an optimized storage backend and a query engine purpose-built for profiling data, with label-selector syntax similar to Prometheus for intuitive filtering.
- Service Discovery & Target Configuration: Targets are automatically discovered via service discovery integrations or configured statically, supporting both push and pull profile collection models.
- Grafana Integration: Parca is available as a native Grafana core plugin, allowing teams to overlay profiling data alongside metrics, logs, and traces in their existing observability dashboards.
Use Cases
- Identifying CPU-intensive code paths in production microservices to reduce cloud infrastructure costs by 20–30%
- Detecting and diagnosing memory leaks over time by comparing heap allocation profiles across time windows or software versions
- Catching performance regressions immediately after a new deployment by comparing profiling data between the old and new versions with a single query
- Debugging intermittent latency spikes and unexpected I/O behavior that are difficult to reproduce in non-production environments
- Building an always-on observability stack by integrating Parca profiling data alongside metrics and logs in Grafana dashboards
Pros
- Truly Zero Instrumentation: Because Parca uses eBPF at the kernel level, there is no need to modify application code, add libraries, or restart services — making adoption frictionless across large polyglot infrastructures.
- Low Production Overhead: eBPF's efficiency means continuous profiling can run always-on in production without noticeable performance impact, ensuring data is available exactly when incidents occur.
- Fully Open Source (Apache 2.0): All Parca components are available on GitHub under the Apache 2 license with no proprietary lock-in, backed by a strong community of contributors from major open source projects.
- Cost Reduction at Scale: By surfacing wasteful code paths responsible for 20–30% of cloud spend at many organizations, Parca provides a clear ROI case for adoption even without a dedicated performance engineering team.
Cons
- Linux-Only Requirement: Parca Agent depends on eBPF, which is exclusive to the Linux kernel. It cannot be used to profile applications running on Windows or macOS hosts.
- Infrastructure Setup Required: Self-hosting Parca requires deploying and maintaining the server, agent, and storage components, which adds operational overhead compared to a fully managed SaaS profiling solution.
- Profiling Expertise Needed for Full Value: Interpreting flame graphs and identifying meaningful hotspots still requires familiarity with profiling concepts, which may present a learning curve for teams new to performance engineering.
Frequently Asked Questions
Continuous profiling means always-on collection of runtime performance data (CPU time, memory allocations, I/O) in production. Unlike on-demand profiling, it ensures data is available for any point in time — critical for diagnosing incidents, catching regressions after deploys, or spotting gradual memory leaks.
No. Parca Agent uses eBPF to collect profiling data directly from the Linux kernel without any application-level instrumentation, SDK imports, or restarts. It works with any language or framework transparently.
Parca can be deployed as a standalone binary on any Linux host or via Kubernetes using the provided manifests. The Parca Agent runs as a DaemonSet to collect profiles from all nodes, while the Parca Server handles storage and the web UI serves queries.
Because Parca Agent operates at the kernel level via eBPF, it supports profiling for any language or runtime that runs on Linux, including Go, Java, Python, Node.js, Rust, C/C++, and more — without language-specific agents.
Yes. All Parca components — the server, agent, and web UI — are fully open source under the Apache 2.0 license and free to use, modify, and distribute. Polar Signals also offers a managed cloud version for teams that prefer not to self-host.
