长期支持版本

    社区创新版本

      简介

      内核反馈优化(PGO kernel)特性为内核提供了反馈优化能力的支持,使用户可以为不同的应用程序构建针对性优化的内核,在单应用场景下提高目标应用的性能。同时,该特性一并在openEuler GCC内提供了相应的编译支持,以及在A-FOT中提供了自动优化的功能,使用户能够便捷地使能内核反馈优化特性。

      安装与部署

      软件要求

      • 操作系统:openEuler 22.03 LTS SP3

      硬件要求

      • aarch64架构
      • x86_64架构

      安装软件

      安装内核源码

      yum install -y kernel-source
      cp -r /usr/src/linux-5.10.0-153.12.0.89.oe2203sp3.aarch64 .
      

      注意:具体的版本号可能会有变化。

      安装GCC(可选)

      openEuler 22.03 LTS SP3的系统GCC已经集成对PGO kernel的编译支持,但用户也可以通过如下步骤手动构建定制的GCC从而使用其他版本(需要GCC 10及以上的GCC源码),关键点是需要添加--disable-tls --disable-libsanitizer

      cd ${GCC_DIR}
      mkdir build
      cd build
      ../configure --prefix=${GCC_INSTALL_PREFIX} --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,fortran,lto --enable-plugin --enable-initfini-array --disable-libgcj --without-isl --without-cloog --enable-gnu-indirect-function --build=aarch64-linux-gnu --with-stage1-ldflags='-Wl,-z,relro,-z,now' --with-boot-ldflags='-Wl,-z,relro,-z,now' --disable-bootstrap --with-multilib-list=lp64 --enable-bolt --disable-tls --disable-libsanitizer
      make -j 96 && make install -j 96
      

      安装A-FOT

      git clone https://gitee.com/openeuler/A-FOT.git
      

      使用方法

      用户可以通过A-FOT工具使能内核反馈优化,一键得到优化内核。将opt_mode指定Auto_kernel_PGO则为PGO kernel模式。所有配置选项也可以通过命令行指定,例如:./a-fot --pgo_phase 1,另外-s、-n选项只能在命令行指定。PGO kernel相关的选项说明如下表所示。

      序号选项名称(配置文件)选项说明默认值
      1config_file配置文件路径;根据此文件内容读取用户的选项配置。${afot_path}/a-fot.ini
      2opt_mode优化模式;工具将执行的优化模式,必须为AutoFDO、AutoPrefetch、AutoBOLT、Auto_kernel_PGO四者之一。AutoPrefetch
      3pgo_modePGO模式;内核的反馈优化模式,GCOV或完整的PGO。all
      4pgo_phase内核反馈优化的执行阶段;工具根据阶段执行不同的操作。1
      5kernel_src内核源码目录;指定则工具进入编译内核,否则工具自动下载源码。无(可选)
      6kernel_name内核构建的本地名;工具将根据阶段添加"-pgoing"或"-pgoed"后缀。kernel
      7work_path脚本工作目录;此目录用于存放日志文件、wrapper和profile。/opt(不能在/tmp目录下)
      8run_script应用执行脚本路径;此脚本为目标应用的执行脚本,需要用户完成编写;工具将后台运行此脚本以执行目标应用。/root/run.sh
      9gcc_pathGCC路径;工具调用真正编译器GCC的路径。/usr

      配置完编译选项后,可以使用如下命令进行A-FOT自动化优化内核:

      a-fot --config_file ./a-fot.ini -s
      

      注意:-s选项会让A-FOT工具自动重启机器切换内核,如果用户不希望自动进行这一项敏感操作,请去掉这一选项。但用户需要在重启后手动执行第二阶段(--pgo_phase 2)。

      兼容性说明

      此节主要列出当前一些特殊场景下的兼容性问题。本项目持续迭代中,会尽快进行修复,也欢迎广大开发者加入。

      • 由于GCC中反馈优化的具体实现在不同版本中不一致,本特性暂时需要GCC版本大于等于10。

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份