Architecture and Philosophy
Parca is an open-source continuous profiling system built by Polar Signals. Its core philosophy is that profiling should be automatic, always-on, and require zero application changes. It is heavily eBPF-first.
Components:
- Parca Agent: Deployed as a DaemonSet on every Kubernetes node. Uses eBPF to collect CPU profiles from all processes. Handles stack unwinding using DWARF and frame pointer unwinding. Fetches debug symbols via
debuginfod. - Parca Server: Receives profiles from agents, stores them efficiently using a columnar format optimized for time-series profile data, and serves the query API and UI.
Key capabilities:
- Differential profiling: Compare two time windows side by side. Green bars = functions that got faster. Red bars = functions that got slower. This is invaluable for validating that a code change actually improved performance.
- Label-based querying: Filter profiles by Kubernetes labels (
namespace,pod,container). You can ask "show me the CPU profile for pods in thepaymentsnamespace during the last hour." - Automatic symbolization via
debuginfod: Parca fetches debug symbols on demand from public symbol servers (for open-source software) or from your own internaldebuginfodserver. You do not need to manually ship symbols.
Deployment example (Helm): installing the parca server chart into its own namespace, then installing the parca-agent chart pointed at that server's remote-store address, is enough to get the whole stack running.
After deployment, the Parca UI is available at port 7070 on the server pod. You will immediately see profiles from all processes on all nodes — no application changes required.