# Parca — Continuous Profiling for Infrastructure Optimization > Parca is an open-source continuous profiling platform that collects CPU, memory, and other profiles from production applications with minimal overhead, helping teams identify performance bottlenecks and reduce infrastructure costs. ## Install Save in your project root: # Parca — Continuous Profiling for Infrastructure Optimization ## Quick Use ```bash # Install Parca server curl -sL https://github.com/parca-dev/parca/releases/latest/download/parca_Linux_x86_64.tar.gz | tar xz ./parca --config-path=parca.yaml # Install the Parca Agent for automatic profiling curl -sL https://github.com/parca-dev/parca-agent/releases/latest/download/parca-agent_Linux_x86_64.tar.gz | tar xz sudo ./parca-agent --remote-store-address=localhost:7070 --remote-store-insecure # Deploy on Kubernetes with Helm helm repo add parca https://parca-dev.github.io/helm-charts helm install parca parca/parca ``` ## Introduction Parca is a continuous profiling project developed by Polar Signals that collects profiling data from applications over time, storing it efficiently for analysis. Unlike one-off profiling sessions, continuous profiling captures performance data in production around the clock, allowing engineers to correlate performance regressions with deployments, find the exact functions consuming resources, and make data-driven optimization decisions. ## What Parca Does - Collects CPU, memory allocation, goroutine, and mutex profiles from running applications continuously - Stores profiling data with columnar compression for efficient long-term retention - Provides a web UI for visualizing flamegraphs, icicle charts, and differential profiles - Supports comparing profiles across time ranges to identify performance regressions - Works with eBPF-based agents for profiling any process without code changes ## Architecture Overview Parca consists of two main components: the Parca server and the Parca Agent. The agent runs on each node and uses eBPF to collect CPU profiles from all running processes without requiring instrumentation or restarts. Profiles are sent to the server via gRPC using the OpenTelemetry profiling protocol. The server stores profile data in FrostDB, a custom columnar database optimized for profiling data that uses Apache Parquet for storage. The web UI queries the server API to render interactive flamegraphs and time-series views of resource usage. ## Self-Hosting & Configuration - Deploy the server as a single binary or container with a YAML configuration file - Run parca-agent as a DaemonSet on Kubernetes or a systemd service on bare metal - Configure scrape targets using Prometheus-style service discovery for pull-based collection - Set retention policies and storage paths in the server configuration - Enable TLS and authentication for secure multi-tenant deployments ## Key Features - eBPF-based profiling requiring zero code changes or application restarts - Differential flamegraphs comparing two time periods to pinpoint regressions - Low overhead (typically under 1% CPU) suitable for always-on production use - Source code integration showing line-level resource attribution - OpenTelemetry profiling protocol support for vendor-neutral data collection ## Comparison with Similar Tools - **Grafana Pyroscope** — similar continuous profiling platform with different storage backend and Grafana ecosystem integration - **async-profiler** — Java-focused sampling profiler without continuous collection or centralized storage - **perf** — Linux kernel profiler for one-off analysis, not continuous production monitoring - **Go pprof** — built-in Go profiler for on-demand profiles, lacks continuous collection and long-term storage - **Datadog Continuous Profiler** — managed commercial offering with broader APM integration ## FAQ **Q: How much overhead does continuous profiling add?** A: The eBPF-based Parca Agent typically adds less than 1% CPU overhead and minimal memory usage, making it safe for production workloads. **Q: Does Parca require application code changes?** A: No. The eBPF agent profiles processes at the kernel level. For richer data (allocations, goroutines), applications can expose pprof endpoints that Parca scrapes. **Q: What languages does Parca support?** A: The eBPF agent can profile any compiled language (Go, Rust, C/C++, Java). Interpreted languages require runtime-specific support or pprof-compatible endpoints. **Q: How long can I retain profiling data?** A: Parca uses columnar storage with efficient compression. Retention depends on storage capacity — production deployments commonly store weeks to months of data. ## Sources - https://github.com/parca-dev/parca - https://www.parca.dev/docs/overview --- Source: https://tokrepo.com/en/workflows/76d3eb0e-3cf7-11f1-9bc6-00163e2b0d79 Author: AI Open Source