Perforator is a cluster-wide continuous profiling tool designed to collect CPU profiles from production systems at scale without measurable performance overhead.
The tool addresses the challenge of understanding CPU usage patterns across large data centers by using eBPF to efficiently gather kernel and userspace stack traces. It collects profiles directly from running applications, stores them in a scalable backend, and provides a query language and flamegraph-based UI for analysis. A key capability is unwinding stacks without requiring frame pointers or debug symbols to be present on the host, which simplifies deployment in production environments. The tool can generate sPGO profiles for Profile Guided Optimization compilation workflows.
Perforator suits organizations running large clusters who need continuous visibility into application performance without the overhead of traditional sampling profilers. It supports C++, C, Go, and Rust as primary targets, with experimental support for Java and Python. The tool can run on individual machines via a command-line interface or be deployed across Kubernetes clusters using a provided Helm chart. It requires minimal resources, consuming under 1% of host CPU and 512MB of RAM even on systems with many cores.
The project shows sustained development with regular updates to both core profiling infrastructure and language support. Work continues on expanding language coverage and improving the unwinding and storage systems. The maintainers actively incorporate feedback and accept external contributions through a documented contributor process.