yandex/perforator: Perforator is a cluster-wide continuous profiling tool designed for large data centers


License
eBPF code license
Telegram
Telegram

Documentation | Post on Medium | Post on Habr

Perforator is a production-ready, open-source Continuous Profiling app that can collect CPU profiles from your production without affecting its performance, made by Yandex and inspired by Google-Wide Profiling. Perforator is deployed on tens of thousands of servers in Yandex and already has helped many developers to fix performance issues in their services.

  • Efficient and high-quality collection of kernel + userspace stacks via eBPF technology.
  • Scalable storage for storing profiles and binaries.
  • Support of unwinding without frame pointers and debug symbols on host.
  • Convenient query language and UI to inspect CPU usage of applications via flamegraphs.
  • Support for C++, C, Go, and Rust, with experimental support for Java and Python.
  • Generation of sPGO profiles for building applications with Profile Guided Optimization (PGO) via AutoFDO.

Minimal system requirements

Perforator runs on x86 64-bit Linux platforms consuming 512Mb of RAM (more on very large hosts with many CPUs) and <1% of host CPUs.

You can profile your laptop using local perforator record CLI command.

You can also deploy Perforator on playground/production Kubernetes cluster using our Helm chart.

  • Instructions on how to build from source are located here.

  • If you want to use prebuilt binaries, you can find them here.

We are welcome to contributions! The contributor’s guide provides more details on how to get started as a contributor.

This project is licensed under the MIT License (MIT). MIT License

The eBPF source code is licensed under the GPL 2.0 license. GPL 2.0



Source link