快速入门 |贡献
该项目拥有 Linux 性能事件 API 的库。其核心是perf_event_open (2)
系统调用的实现,可以按原样使用。
该库还包含稳定使用 API 所需的几个实用程序。这些实用程序提供错误处理、支持验证等。
该库的重点是在测量过程中没有任何开销的高精度结果。也就是说,设置测量可能成本高昂,但执行测量需要该库添加零开销。这带来了一个巨大的好处,即以用户体验为代价获得尽可能准确的结果并尽可能灵活。
要构建项目,首先安装libcap
:
sudo apt install libcap-dev
sudo yum install libcap-devel
sudo zapper install libcap-devel
然后,简单地构建项目。
make build
示例在examples
目录中提供,输出到build/examples
目录。
./build/examples/full
快速入门
特征
文档
贡献
CAP_PERFMON
) 有许多可用于 Linux 的分析工具。 Valgrind(和 Callgrind)等工具是执行内存和调用堆栈性能分析的绝佳且准确的方法。然而,它确实可以对 CPU 周期和指令等值进行简化的测量,因为它不测量本机硬件。其他工具(例如 gprof、prof 和 gperftools)非常接近硬件,但缺乏对测量内核和空闲事件的支持。 SUPERCOP、Papi 等中使用的其他测量指令和周期的方法可能不准确,只是简单地计算 CPU 内核执行的总周期。这就是 Linux perf API 的闪光点。 API 提供了一套全面的工具来测量用户和内核事件 - 无论是通过软件定义的断点还是硬件计数器。
perf
CLI 工具非常擅长提供使用这些 API 的方法,但它可以测量整个程序的执行情况。底层系统调用perf_event_open (2)
没有 glibc 包装器,因此非常冗长 - 特别是在执行大量测量时。
该库旨在填补二进制中特定代码的高度精确测量的小利基空白。
待 API 稳定后继续。
欢迎任何贡献。如果您无法自己编写代码,也许其他人可以 - 因此,如果您有任何想法,请发布问题。
确保您满足以下先决条件:
$CC
指gcc
8 或更高版本libcap
已安装clang-format
已安装(如果你想格式化代码)compiledb
(如果您想要格式化代码或使用其他llvm工具分析它) # Clone the repository
git clone https://github.com/AlexGustafsson/perf && cd perf
# Format the code
make format
# Build the library
make library
# Build examples
make examples
这些示例可以使用 Docker 进行测试。
docker build -t perf .
docker run -it --rm --privileged perf ./pi
mmap
ed 事件的支持