---
title: 使用方式
description: "使用D-FOT需要安装以下依赖组件，可通过yum直接安装，当前支持openEuler-22.03-LTS-SP4、openEuler-25.03"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevkithistory/hgcc/hist-hgcc/topic_0000002350785544.html
sourcePath: /source/zh/kunpengdevkithistory/hgcc/hist-hgcc/topic_0000002350785544.html
indexId: 10a5c8e70349be4248c1fedd52d176c95b82731228a5a33dd05f4f029fb8cc0974
---
# 使用方式

#### 依赖项

使用D-FOT需要安装以下依赖组件，可通过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) | 二进制优化器 |


#### 被优化应用的必要条件

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

- 使用自编译的软件：需要在编译时增加-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"
```

- 使用oe软件包的场景：后续会提供对应应用的relocation包，直接安装即可。


如何判断目标二进制是否包含重定位信息：

当-Wl,-q生效后，二进制文件中会新增多个RELA段。可通过readelf -SW /path/to/bin查看段信息。以MySQL为例，未加-Wl,-q时通常仅有.rela.dyn和.rela.plt段；添加该选项后，将额外生成.rela.text、.rela.eh_frame等十余个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优化插件dfot\_tuner\_sysboost后立即开始持续低频采样 1表示enable优化插件dfot\_tuner\_sysboost时启动监控线程，仅在负载达到阈值场景才采样 当前由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；数值越大，所需采集的样本数量越多 |
| BOLT\_DIR | NA | 不可用 | BOLT工具路径，留空则默认/usr/bin，内部会调用${BOLT\_DIR}/perf2bolt和${BOLT\_DIR}/llvm\-bolt 当前由sysboost确定 |
| BOLT\_OPTIONS | 根据实际需求确定 | 可用 | BOLT优化选项，配置该项可以覆盖内置的默认选项，用于针对性的选项调优 |
| UPDATE\_DEBUG\_INFO | [0,1] | 可用 | 优化时是否同步更新调试信息，1表示更新，0表示不更新，注意更新调试信息会有额外耗时 |


#### D-FOT使能

参考oeAware-manager(https://gitee.com/openeuler/oeAware-manager/tree/master/docs)使用手册操作优化插件：

```
# oeAware优化服务启动
systemctl start oeaware
# oeAware启动pmu采集插件和dfot优化插件
oeawarectl -e pmu_sampling_collector
oeawarectl -e dfot_tuner_sysboost
# D-FOT日志
tail -f /etc/dfot/dfot.log
# oeAware停止插件运行
oeawarectl -d pmu_sampling_collector
oeawarectl -d dfot_tuner_sysboost
```
