Perforator logo

Perforator

Zero‑impact continuous CPU profiling for large‑scale Linux services

Perforator collects high‑quality CPU profiles from production Linux servers using eBPF, storing them scalably and offering flamegraph UI, supporting C/C++/Go/Rust and enabling PGO via AutoFDO.

Perforator banner

Overview

Overview

Perforator is a production‑ready continuous profiling solution that captures kernel and userspace stacks via eBPF with negligible overhead (under 1 % CPU and 512 MiB RAM). It supports C, C++, Go, Rust, and experimental Java/Python, and can generate sPGO profiles for AutoFDO‑driven compiler optimizations.

Capabilities & Audience

Designed for large data‑center environments, it provides a scalable backend for storing profiles and binaries, a powerful query language, and an interactive flamegraph UI that lets developers quickly locate CPU hotspots across heterogeneous services. Teams building high‑throughput microservices, CI pipelines that need PGO data, or operations groups monitoring performance regressions will find Perforator especially valuable.

Deployment

Perforator runs on any x86_64 Linux host with eBPF support. It can be installed locally via the perforator record CLI or deployed cluster‑wide using the provided Helm chart for Kubernetes environments. Detailed build and contribution guides are available in the repository.

Highlights

eBPF‑based kernel and userspace stack collection without frame pointers
Scalable storage of profiles and binaries with a built‑in query language
Interactive flamegraph UI supporting C++, Go, Rust (Java/Python experimental)
AutoFDO generation of sPGO profiles for compiler optimizations

Pros

  • Negligible overhead (<1% CPU, 512 MiB RAM)
  • Proven at Yandex on tens of thousands of production servers
  • Multi‑language support including experimental Java and Python
  • Built‑in AutoFDO profile generation

Considerations

  • Limited to x86_64 Linux platforms
  • Java and Python support are experimental
  • Requires modern kernel with eBPF capability
  • Deployment may need Helm/Kubernetes expertise

Managed products teams compare with

When teams consider Perforator, these hosted platforms usually appear on the same shortlist.

Blackfire Continuous Profiler logo

Blackfire Continuous Profiler

Low-overhead continuous profiling for app performance optimization.

Datadog Continuous Profiler logo

Datadog Continuous Profiler

Always-on code profiling to cut latency and cloud costs.

Elastic Universal Profiling logo

Elastic Universal Profiling

Whole-system, always-on profiling with no instrumentation.

Looking for a hosted option? These are the services engineering teams benchmark against before choosing open source.

Fit guide

Great for

  • Large‑scale data‑center services needing continuous performance insight
  • Teams using C, C++, Go, or Rust that require low‑impact profiling
  • Organizations that want to generate AutoFDO profiles for builds
  • Ops teams comfortable with Kubernetes/Helm deployments

Not ideal when

  • Environments without eBPF support or older kernels
  • Non‑Linux platforms such as Windows or ARM
  • Small, single‑process applications where heavyweight profilers suffice
  • Projects requiring fully supported Java/Python profiling

How teams use it

Identify CPU hotspots in a microservice fleet

Developers pinpoint hot functions via flamegraphs, reduce latency, and lower cloud costs.

Generate AutoFDO profiles for CI builds

Build pipeline consumes sPGO data, producing binaries with up to 15% runtime improvement.

Monitor performance regressions after deployment

Ops receive alerts when profile metrics deviate, enabling rapid rollback.

Profile mixed‑language services (C++ + Go)

Unified view across languages simplifies cross‑language optimization.

Tech snapshot

C++60%
C21%
Python12%
Go4%
Assembly1%
Makefile1%

Tags

continuous-profilingebpfperformanceprofilingperformance-toolsflamegraph

Frequently asked questions

What platforms does Perforator run on?

It runs on x86_64 Linux systems with eBPF support, requiring at least 512 MiB RAM and less than 1 % CPU overhead.

How is data stored and accessed?

Profiles and binaries are stored in a scalable backend that can be queried via Perforator’s built‑in query language and visualized through the web UI.

Do I need root privileges?

eBPF programs require elevated privileges; typically the collector runs as root or with CAP_SYS_ADMIN.

Is Java or Python profiling production‑ready?

Java and Python support are currently experimental and best used for testing or non‑critical workloads.

Can I deploy Perforator on Kubernetes?

Yes, a Helm chart is provided for easy installation on both playground and production clusters.

Project at a glance

Active
Stars
3,381
Watchers
3,381
Forks
152
Repo age12 months old
Last commityesterday
Primary languageC++

Last synced yesterday