littlebot
Published on 2025-04-16 / 4 Visits
0

【源码】基于 C 语言的处理器性能监控库项目

项目简介

本项目基于 libpfm - 4.x 库开发,这是一个用于开发监控工具的辅助库,可借助现代处理器的性能监控单元(PMU)提供的性能监控事件。它是 libpfm3 的全新重写版本,不具备向后兼容性。该库能把以字符串表示的事件名称转换为硬件供应商文档中的原始事件编码或操作系统特定的编码,还能为内核准备设置事件所需的操作系统特定数据结构。此外,项目包含一个用于验证 Power 架构事件表及编码的 C 程序 validate_power.c

项目的主要特性和功能

  1. 跨平台支持,涵盖 Linux、Mac OS X 和 Windows 等多种操作系统。
  2. 支持众多不同厂商和架构的处理器,如 AMD X86、Intel X86、ARM、SPARC、IBM 和 MIPS 等。
  3. 可将事件名称转换为事件编码。
  4. 提供一系列通用示例,展示如何列出和查询事件,以及如何结合 perf_events 接口使用该库。
  5. 为所有库入口点提供 man 页面,方便用户查阅文档。
  6. 支持 Python 语言的绑定。
  7. validate_power.c 程序可验证 Power 架构 CPU 上预定义性能事件的编码和属性。

安装使用步骤

安装

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

打包

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

运行 validate_power.c

运行该程序可验证 Power 架构 CPU 上预定义性能事件的编码和属性。确保在编译和运行程序前满足相应的依赖条件。

文档查阅

可通过 man libpfm 命令查看库的基本文档,更多信息可访问库的网站:http://perfmon2.sf.net。

下载地址

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