使用方式

依赖项

使用DFOT需要安装以下依赖组件,可通过yum直接安装,当前支持openEuler-22.03-LTS-SP4、openEuler-25.03

组件

代码仓

说明

oeAware-manager

https://gitee.com/openeuler/oeAware-manager

业务在线无感调优框架

libkperf

https://gitee.com/openeuler/libkperf

轻量级全内存化采集工具

sysboost

https://gitee.com/openeuler/sysboost

微架构优化工具

llvm-bolt

https://gitee.com/src-openeuler/llvm-bolt

二进制优化器

被优化应用的必要条件

被优化二进制需要带有重定位信息:

1. 使用自编译的软件:需要在编译时增加-Wl,-q链接选项,如MySQL:

cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DBUILD_CONFIG=mysql_release -DWITH_BOOST=../boost -DCMAKE_C_LINK_FLAGS="-Wl,-q" -DCMAKE_CXX_LINK_FLAGS="-Wl,-q"

2. 使用oe软件包的场景:后续会提供对应应用的relocation包,直接安装即可。

如何判断目标二进制是否带有重定位信息:-Wl,-q生效后,二进制会增加RELA段,可以通过readelf -SW /path/to/bin来判断,如MySQL加选项之前,仅有.rela.dyn和.rela.plt段,增加后会出现.rela.text、.rela.eh_frame等10+ RELA段;如果-Wl,-q未生效,则在手动perf采样并执行perf2bolt时,或者执行llvm-bolt优化时(无论是否通过sysboost机制)会有告警:BOLT-WARNING: non-relocation mode for AArch64 is not fully supported。

D-FOT准备

根据被优化应用的信息,修改/etc/dfot/dfot/ini,内容项参考如下描述,一般仅需修改app部分:

公共配置: [general]

配置项

值范围

是否可用

说明

LOG_LEVEL

<FATAL, ERROR, WARN, INFO, DEBUG>

可用

优化服务日志级别,注意级别越低打印的日志越多

COLLECTOR_SAMPLING_STRATEGY

<0>

不可用

采样策略

0表示插件enable后即持续低频采样

1表示enable时启动监控线程,只有负载达到阈值场景才采样

当前由oeaware控制采样流程,仅支持0

COLLECTOR_HIGH_LOAD_THRESHOLD

[0, cpus*100]

不可用

仅在采样策略1场景下生效,使用HIGH_LOAD_THRESHOLD作为触发采样的应用CPU使用率阈值,当前不支持

COLLECTOR_DATA_AGING_TIME

按实际需要确定

可用

采样数据老化时间,当前数据与最老数据时间差值达到阈值时,丢弃累积采样数据,单位ms

TUNER_TOOL

["sysboost"]

不可用

二进制优化器,当前仅支持sysboost

TUNER_CHECK_PERIOD

[10, max]

可用

优化插件检查时间间隔,每隔一段时间收集采样插件数据并决定是否进行优化,单位ms

TUNER_PROFILE_DIR

按实际需要确定

可用

采样数据存放位置,profile文件被命名为[app_name]_[full_path_hash]_[threshold].profile

TUNER_OPTIMIZING_STRATEGY

[0, 1]

可用

优化策略,0表示只优化一次,1表示只要采样信息在刷新,可以持续多次优化

TUNER_OPTIMIZING_CONDITION

[0, 2]

不可用

触发优化的条件,0表示应用退出后即开始优化,1表示低负载时优化,2表示应用退出且低负载时优化,当前仅支持0

应用配置: [app]

配置项

值范围

是否可用

说明

FULL_PATH

按实际需要确定

可用

应用二进制文件绝对路径

DEFAULT_PROFILE

按实际需要确定

可用

应用的开箱profile文件,用于冷启动时使能二进制优化,没有则留空

COLLECTOR_DUMP_DATA_THRESHOLD

[10000, max]

可用

采样数据达到该阈值行数时触发数据导出到profile,数值越大需要的采集的samples越多

BOLT_DIR

NA

不可用

BOLT工具路径,留空则默认/usr/bin,内部会调用${BOLT_DIR}/perf2bolt和${BOLT_DIR}/llvm-bolt

当前由sysboost确定

BOLT_OPTIONS

按实际需要确定

可用

BOLT优化选项,配置该项可以覆盖内置的默认选项,用于针对性的选项调优

UPDATE_DEBUG_INFO

[0, 1]

可用

优化时是否同步更新调试信息,1表示更新,0表示不更新,注意更新调试信息会有额外耗时

DFOT使能

参考oeAware-manager使用手册操作优化插件:

# oeaware优化服务启动
systemctl start oeaware

# oeaware启动pmu采集插件和dfot优化插件
oeawarectl -e pmu_sampling_collector
oeawarectl -e dfot_tuner_sysboost

# dfot日志
tail -f /etc/dfot/dfot.log

# oeaware停止插件运行
oeawarectl -d pmu_sampling_collector
oeawarectl -d dfot_tuner_sysboost