Repolode
google

google/autofdo

基于 Linux perf 采样数据的 AutoFDO 工具链,用于优化编译后的二进制程序。

Star
623
Fork
128
未关闭 Issue
100
最近提交
上个月

这是什么?

AutoFDO 是一套自动反馈导向优化(feedback-directed optimization)工具。它不需要对程序进行插桩,而是通过 Linux perf 采集硬件性能计数器的采样数据,将其转换为编译器可识别的 profile,再回传给编译器以指导优化决策。

仓库包含基于 LLVM 和 GCOV 相关组件的 profile 转换与处理工具。项目使用 CMake 构建,可以选择 LLVM 版或 GCOV 版工具,支持 Ubuntu 20.04、22.04 和 CentOS 9,既可用 clang 也可用 g++ 编译。

项目的 Propeller 代码已迁移至独立仓库 google/llvm-propeller。

核心功能

  • 01无需对程序插桩,直接使用 Linux perf 采集采样数据。
  • 02将采样 profile 转换为编译器可用于优化的格式。
  • 03通过 CMake 选项可分别构建 LLVM 版和 GCOV 版工具。
  • 04支持在 Ubuntu 20.04、22.04 和 CentOS 9 上使用 clang 或 g++ 构建。

适用场景

  • 利用真实负载的 profile 提升生产环境 C++ 二进制程序的运行性能。
  • 在 Linux 服务器上为基于 LLVM 的编译流程构建 AutoFDO 工具。
  • 在不修改源代码的前提下尝试 profile 引导的优化。

快速上手

  1. 1

    在 Ubuntu 20.04 或 22.04 上安装依赖

    sudo apt install libunwind-dev libgflags-dev libssl-dev libelf-dev protobuf-compiler cmake libzstd-dev clang g++
  2. 2

    克隆仓库及子模块

    git clone --recursive --depth 1 https://github.com/google/autofdo.git
  3. 3

    创建构建目录并编译 LLVM 工具

    cd autofdo && mkdir build && cd build && cmake -DENABLE_TOOL=LLVM -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED=On ../
  4. 4

    编译 autofdo 工具

    cmake -DENABLE_TOOL=GCOV -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED=On ../ && make -j 4

使用前须知

  • 构建说明仅针对 Ubuntu 20.04、Ubuntu 22.04 和 CentOS 9。
  • Ubuntu 20.04 自带的 cmake 版本过旧,需要升级才能编译内置的 LLVM。
  • Propeller 代码已迁移至 google/llvm-propeller 仓库。

收录于专题

标签

#compiler#performance#profile-guided-optimization#llvm#linux-perf#cpp

常见问题

autofdo 是什么?
基于 Linux perf 采样数据的 AutoFDO 工具链,用于优化编译后的二进制程序。 AutoFDO 是一套自动反馈导向优化(feedback-directed optimization)工具。它不需要对程序进行插桩,而是通过 Linux perf 采集硬件性能计数器的采样数据,将其转换为编译器可识别的 profile,再回传给编译器以指导优化决策。
autofdo 可以免费使用吗?用的什么许可证?
autofdo 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
autofdo 还在维护吗?
半年内有更新。autofdo 最近一次提交是在 2026年9月30日。
autofdo 适合用来做什么?
利用真实负载的 profile 提升生产环境 C++ 二进制程序的运行性能。 在 Linux 服务器上为基于 LLVM 的编译流程构建 AutoFDO 工具。 在不修改源代码的前提下尝试 profile 引导的优化。
autofdo 怎么安装和运行?
在 Ubuntu 20.04 或 22.04 上安装依赖: sudo apt install libunwind-dev libgflags-dev libssl-dev libelf-dev protobuf-compiler cmake libzstd-dev clang g++ 克隆仓库及子模块: git clone --recursive --depth 1 https://github.com/google/autofdo.git 创建构建目录并编译 LLVM 工具: cd autofdo && mkdir build && cd build && cmake -DENABLE_TOOL=LLVM -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED=On ../ 编译 autofdo 工具: cmake -DENABLE_TOOL=GCOV -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED=On ../ && make -j 4
在哪里获取 autofdo?
源代码和安装说明在 GitHub 上:https://github.com/google/autofdo

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目