GCC for openEuler
安装A-FOT工具
- 检查环境依赖是否满足以下条件。
- 架构: 鲲鹏ARM
- 操作系统PRETTY_NAME:openEuler 22.03 LTS、openEuler 22.03(LTS-SP1)、openEuler 22.03(LTS-SP2)、openEuler 22.03(LTS-SP3)、Ubuntu 18.04.4 LTS、Ubuntu 20.04.2 LTS、Kylin Linux Advanced Server V10(Tercel)、UOS 20 、UnionTech OS Server 20、CentOS Linux 7 (AltArch)。
PRETTY_NAME为Centos Linux 7 (AltArch)操作系统的redhat-release值须是Centos Linux release 7.6.1810(Altarch)
- 编译器:GCC for openEuler2.3.2及以上
- 软件包:perf
- 满足以上条件,请执行以下命令安装A-FOT工具。
使用A-FOT功能之前,将PATH环境变量中的“${HOME}/.local/gcc-10.3.1-2023.12-aarch64-linux/bin”路径放到PATH环境变量路径的第一个。
例如:export PATH=${HOME}/.local/gcc-10.3.1-2023.12-aarch64-linux/bin:$PATH
使用说明
使用A-FOT工具时,需要填写配置项。
- 填写配置项,在A-FOT根目录下找到a-fot.ini文件。
# 文件和目录请使用绝对路径 # 优化模式(AutoFDO、AutoPrefetch、AutoBOLT、Auto_kernel_PGO(针对内核优化)) opt_mode=AutoPrefetch # 脚本工作目录(用来编译应用程序/存放profile、日志) work_path=/opt # 应用运行脚本路径run_script=/root/run.sh # GCC路径(bin、lib的父目录) gcc_path=/usr # AutoFDO、AutoPrefetch、AutoBOLT# 针对应用的三种优化模式,请填写此部分配置 # 应用进程名 application_name=test # 二进制安装后可执行文件 bin_file=/tmp/test # 应用构建脚本路径build_script=/root/build.sh # 最大二进制启动时间(单位:秒) max_waiting_time=600 # Perf采样时长(单位:秒) perf_time=100 # 检测是否优化成功(1=启用,0=禁用) check_success=0 # 构建模式 (Bear、Wrapper) build_mode=Wrapper # auto_kernel_PGO# 针对内核的优化模式,请填写此部分配置 # 内核PGO模式(arc=只启用arc profile,all=启用完整的PGO优化) pgo_mode=all # 执行阶段(1=编译插桩内核阶段,2=编译优化内核阶段) pgo_phase=1 # 内核源码目录(不指定则自动下载) kernel_src=/opt/kernel # 内核构建的本地名(将根据阶段添加"-pgoing"或"-pgoed"后缀) kernel_name=kernel # 内核编译选项(请确保选项修改正确合法,不会造成内核编译失败)#CONFIG_...=y # 重启前的时间目录(用于将同一套流程的日志存放在一起) last_time= # 内核源码的Makefile地址(用于不自动编译内核的场景) makefile= # 内核配置文件路径(用于不自动编译内核的场景) kernel_config= # 内核生成的原始profile目录(用于不自动编译内核的场景) data_dir=
在配置文件中,脚本工作目录示例在“/opt”目录下,实际应用中请修改为家目录或者./目录下。
- 执行以下命令启动优化。
a-fot --config_file a-fot.ini
- 默认参数配置以a-fot.ini为基础,同时支持参数通过命令行灵活配置。
# 命令格式为 a-fot [OPTION1 ARG1] [OPTION2 ARG2] # 例如以优化模式为AutoFDO,GCC路径为/usr,应用运行脚本路径为/root/run.sh,应用构建脚本路径为/root/build.sh,构建模式为Bear, 脚本工作目录为当前目录,可执行二进制文件路径为/tmp/test,命令如下: a-fot --opt_mode AutoFDO --gcc_path /usr --run_script /root/run.sh --build_script /root/build.sh --build_mode Wrapper --work_path ./ --bin_file /tmp/test
命令行详细参数说明:
Usage: a-fot [OPTION1 ARG1] [OPTION2 ARG2] [...] For perf mode:(针对应用) --config_file Path of configuration file --opt_mode Optimization modes (AutoFDO/AutoPrefetch/AutoBOLT) --perf_time Perf sampling duration (unit: seconds) --gcc_path Compiler gcc path --app_name Application process name --bin_file Executable binary file path --build_script Application build script path --work_path Script working directory (used to compile the application and store the profile) --run_script Script path for running application --max_waiting_time Maximum binary startup time (unit: seconds) --check_success Check optimization result --build_mode Execute build script mode (Wrapper/Bear) For kernel PGO mode:(针对内核) --config_file Path of configuration file --opt_mode Optimization mode (Auto_kernel_PGO) --pgo_mode PGO mode (arc/all) --pgo_phase Phase of kernel PGO (1/2) --kernel_src Kernel source directory --kernel_name Kernel local version name (will be appended with -pgoing or -pgoed) --work_path Script working directory (used to store the profile and the log) --run_script Script path for running application --gcc_path Compiler gcc path --CONFIG_... Kernel building configuration --last_time Last time directory before rebooting (used to put log infos together) -s Silent mode (reboot automatically after kernel installation) -n Do not compile kernel automatically --makefile Makefile path of kernel --kernel_config Config file path of kernel --data_dir Profile path generated by kernel
GCC for openEuler代码示例
- 不使用A-FOT
pipeline { agent any options { timeout(time: 1, unit: 'HOURS') } stages{ stage('build') { agent { label 'kunpeng_c_builder_gcc' } steps{ # 安装部署完成后已有GCC for openEuler的环境,请先执行与其他平台一致的编译命令。 cd /path/to/repository # 执行原有的构建脚本 sh build.sh } } } }
- 使用A-FOT(配置文件参数优化)
pipeline { agent any options { timeout(time: 1, unit: 'HOURS') } stages{ stage('A-FOT') { agent { label ''kunpeng_c_builder_gcc' } steps{ # a fot 会直接调用原有的构建脚本 sh 'a-fot --config_file a-fot.ini' } } } }
- 使用A-FOT(以命令参数优化)
pipeline { agent any options { timeout(time: 1, unit: 'HOURS') } stages{ stage('A-FOT') { agent { label ''kunpeng_c_builder_gcc' } steps{ sh 'a-fot --opt_mode AutoFDO --gcc_path /usr --run_script /root/run.sh --build_script /root/build.sh --build_mode Wrapper --work_path ./ --bin_file /tmp/test' } } } }
父主题: Jenkins流水线