littlebot
Published on 2025-04-09 / 3 Visits
0

【源码】基于多平台的性能监控辅助库项目

项目简介

本项目提供名为 libpfm4 的库,用于开发利用性能监控事件的监控工具,借助现代处理器的性能监控单元(PMU)相关事件。它是 libpfm3 的完全重写版本,不向后兼容。该库能将事件名称(字符串形式)转换为事件编码,准备内核设置事件所需的特定于操作系统的数据结构,支持多平台。

项目的主要特性和功能

  1. 多平台支持:支持 Linux、Mac OS X、Windows 等多种操作系统环境。
  2. 多 PMU 支持:涵盖 AMD X86、Intel X86、ARM、SPARC、IBM、MIPS 等众多处理器的 PMU。
  3. 事件转换功能:能将事件名称转换为硬件厂商文档中的原始事件编码或操作系统特定的编码。
  4. 接口支持:提供对 Linux v2.6.31 引入的 perf_events 接口的支持。
  5. 丰富示例:提供通用示例展示如何列出和查询事件,以及使用 perf_events 接口的示例。
  6. 多语言支持:具备 Python 绑定,方便使用 Python 调用库功能。
  7. 多格式打包:提供 SPEC 文件用于构建 RPM 包,以及 Debian 风格的配置文件用于构建 .deb 包。

安装使用步骤

安装

  1. 编辑 config.mk 文件,更新配置变量并选择编译器选项。
  2. 执行 make 命令。
  3. 执行 make install 命令。默认安装位置是 /usr/local,可通过 make PREFIX=<install-dir> install 指定不同安装位置,根据安装位置可能需要运行 ldconfig 命令或使用 LD_LIBRARY_PATH
  4. 若系统构建 64 位库且目标架构期望 64 位库位于 "lib64" 目录,可使用 make LIBDIR=<install-dir>/lib64 install
  5. 若要编译并安装 Python 绑定,需进入 python 子目录并执行 make 命令,Python 绑定可能不会被系统自动构建。
  6. 若要为其他 ABI(如 64 位 x86 系统上的 32 位 x86)编译库,可传递 OPTIM="-m32 -O2" 标志给编译器。

打包

  • 生成 RPM 包:执行 rpmbuild -ba libpfm.spec
  • 生成 Debian 包:执行 debuild -i -us -uc -b,可能需要安装一些额外的包以支持 Debian 包生成。

注意事项

  • 运行 perf_examples 子目录中的程序,必须使用具有 perf_events 的 Linux 内核(v2.6.31 或更高版本)。
  • 编译 Python 绑定,需要安装 SWIG 和 Python 开发包。
  • 在 Windows 上编译,需要 MinGW 和 MSYS 编译器环境,并补充 mingw 正则用户贡献包。
  • 在 Mac OS X 上编译,需要安装 gmake。

文档参考

  • 所有库入口点都有 man 页,建议从 man libpfm 开始查看。
  • 更多信息可查看库的网站:http://perfmon2.sf.net 。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】