摘要

perforator 是 Yandex 开源的持续性能分析工具,面向生产环境与大型数据中心,主打低开销、非侵入式采集与集群级可观测能力。它基于 eBPF 采集内核态与用户态调用栈,支持本地 CLI 与 Kubernetes 两种使用方式,并提供查询与火焰图能力用于定位性能瓶颈。

功能与定位

perforator 的定位是持续性能剖析工具,用于在不中断业务的前提下长期收集与分析 CPU 性能数据。项目强调在生产环境可用,并提供从采集、存储到分析展示的一体化能力。

典型使用场景

  • 在生产环境持续追踪服务性能退化,定位高 CPU 消耗函数或调用链。
  • 在 Kubernetes 集群中做集中化性能画像采集与分析。
  • 在优化流程中生成 sPGO(AutoFDO)相关画像数据,用于编译器优化。
  • 在版本对比或实验流量场景下,观察不同实现的性能差异。

特色与差异点

  • 基于 eBPF 的非侵入式采集,不要求对目标程序做代码改造。
  • 支持在缺少 frame pointer 或 debug symbols 时进行栈回溯。
  • 同时提供本地录制能力与集群部署路径,适配从单机到大规模环境的使用需求。
  • 提供查询语言与火焰图 UI,便于从原始采样数据快速进入问题定位。

使用方式概览

  • 本地模式:通过 CLI 在单机执行采样与分析,作为 Linux perf 的替代路径之一。
  • 集群模式:按官方文档使用 Helm 在 Kubernetes 中部署,实现持续采集与集中查看。
  • 交付形态:可从源码构建,也可使用 releases 提供的预编译二进制。

限制与注意事项

  • 平台约束来自官方说明:最低为 x86 64-bit Linux。
  • 资源约束来自 README:基础运行内存约 512MB,CPU 开销通常低于 1%。
  • 语言支持存在成熟度差异:C++/C/Go/Rust 为主要支持,Java/Python 仍含实验性范围。
  • 版本升级需关注兼容性提示:发布记录中出现过数据库 schema 变更并要求迁移的情况。
  • 许可证为混合模式:仓库主许可证为 Apache-2.0,部分 eBPF/JVM 相关代码为 GPL-2.0,落地前应做合规评估。

链接

关联主题