
# 动态加速（只支持HCE2.0）
#### 准备工作
在做动态加速之前，请先做如下两个检查。两个条件都满足，才能对应用进行动态加速。
1. 执行如下命令检查待优化的二进制文件中是否可以重新定位。可以重新定位表示可以进行应用优化。
   其中"application"可替换为待检查的二进制文件。
   ```
   readelf -a application | grep .rela.text
   ```
   图1readelf命令执行示例   
   ![](https://support.huaweicloud.com/usermanual-hce/zh-cn_image_0000002480089062.png "点击放大")
   - 如果二进制文件中存在.rela.text段，表示可以重新定位。
   
   - 如果不存在，为了允许BOLT在程序中重新排列函数，需要将选项--emit-relocs或-q添加到构建二进制文件的命令中。
     
2. 执行**hce-wae --check** **/data/apps/mysql-8.0.28/bin/mysqld** 命令查看应用是否支持动态加速。
   如果检查结果为"3"，表示可以使用动态加速工具。否则不支持动态加速。
   图2检查结果为3示例   
   ![](https://support.huaweicloud.com/usermanual-hce/zh-cn_image_0000002512088955.png "点击放大") 
 
#### 操作步骤
本例以优化/data/apps/mysql-8.0.28/bin目录下的mysqld应用，为您介绍动态加速方式优化应用的操作。
1. 生成插桩版应用并运行。
   1. 执行命令**/data/hce-wae/dbo/gen_instrumentation** **/data/apps/mysql-8.0.28/bin/mysqld** 生成插桩版应用。
      命令格式：**/data/hce-wae/dbo/gen_instrumentation** 应用路径。
      图3/data/hce-wae/dbo/gen_instrumentation命令执行示例   
      ![](https://support.huaweicloud.com/usermanual-hce/zh-cn_image_0000002480089058.png "点击放大")
      命令运行完成后，会在当前目录生成对应的以.inst为后缀的插桩文件mysqld.inst。
      图4查询以.inst为后缀的插桩文件示例   
      ![](https://support.huaweicloud.com/usermanual-hce/zh-cn_image_0000002479929074.png "点击放大") 
   
   2. 运行插桩文件获取进程PID，本例为87042。
      图5运行插桩文件获取进程PID示例   
      ![](https://support.huaweicloud.com/usermanual-hce/zh-cn_image_0000002512088947.png "点击放大") 
    
2. 创建mysqld的应用加速动态配置文件。 每一个待优化的应用都要有一个对应的配置文件，应用加速工具根据此配置文件对应用进行动态加速。
   1. 执行如下命令复制一份默认的配置文件为**/data/hce-wae/config/mysqld.conf** 。
      ```
      [root@localhost]# cp /data/hce-wae/config/hce-wae-tmp.conf /data/hce-wae/config/mysqld.conf
      ```
      
   
   2. 设置**/data/hce-wae/config/mysqld.conf** 配置文件中的origin-exe字段。
      origin-exe为待优化应用的位置，本例为**/data/apps/mysql-8.0.28/bin/mysqld** 。
      ```
      [root@localhost]# vim /data/hce-wae/config/mysqld.conf
      ```
      图6origin-exe字段示例   
      ![](https://support.huaweicloud.com/usermanual-hce/zh-cn_image_0000002512088951.png "点击放大") 
    
3. 使用配置文件和对应的进程PID配置动态加速工具。 命令格式：hce-wae --conf \[PID\] \[/path/to/config\]
   图7配置动态加速工具示例   
   ![](https://support.huaweicloud.com/usermanual-hce/zh-cn_image_0000002480089064.png "点击放大") 
4. 启动动态加速，对插桩版mysql进行优化。 命令格式：hce-wae --start \[PID\]
   图8启动动态加速示例   
   ![](https://support.huaweicloud.com/usermanual-hce/zh-cn_image_0000002512128983.png "点击放大")
   启动后，可以通过--status参数查看当前优化状态。当状态为Running时，表示进程正在优化中；状态为Finished时，表示进程已经优化完成。
   命令格式：hce-wae --status \[PID\]
   图9查看当前优化状态示例   
   ![](https://support.huaweicloud.com/usermanual-hce/zh-cn_image_0000002479929088.png "点击放大") 
5. 优化后，通过--snapshot参数生成优化后的.dbo二进制快照文件，本例为mysqld.dbo。
   图10生成优化后的.dbo二进制快照文件示例   
   ![](https://support.huaweicloud.com/usermanual-hce/zh-cn_image_0000002480089054.png "点击放大")
   快照生成的默认路径为/data/hce-wae/snapshot/，可在配置文件中对快照位置进行修改。后续您可以直接使用此优化后的快照文件mysqld.dbo运行应用，无需重复优化。
   
6. 终止动态加速工具，应用优化结束。 命令格式：hce-wae --stop \[PID\]
   图11终止动态加速工具示例   
   ![](https://support.huaweicloud.com/usermanual-hce/zh-cn_image_0000002479929086.png "点击放大") 
 
#### 动态应用加速工具字符交互界面
动态应用加速工具支持字符交互界面，交互界面支持指令如[图12]、[图13]和[表1]所示。
图12动态应用加速工具启动界面   
![](https://support.huaweicloud.com/usermanual-hce/zh-cn_image_0000002480089056.png "点击放大")
图13动态应用加速工具帮助界面   
![](https://support.huaweicloud.com/usermanual-hce/zh-cn_image_0000002512128979.png "点击放大")
 表1动态应用加速工具字符交互界面指令 
| 字符交互界面指令 | 使用方式             | 指令描述                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|
| list     | list             | 获取当前环境的进程信息，包含PID、PPID以及command信息。                                                                                                                                                                                                                                                                                                                                                                                                                               |
| status   | status \<PID\>   | 查询当前正在进行的动态加速任务及状态。输入后在字符界面展示信息包括： - 应用进程PID。  - 应用进程名。  - 当前已优化次数。  - 当前加速状态。   |
| check    | check \<PID\>    | 检测当前进程是否支持静态/动态加速，展示文字结果。                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| show     | show \<PID\>     | 查询进程的依赖关系。                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| conf     | conf \<PID\>     | 为目标进程配置动态加速能力，输入指令后依次弹出配置选项，根据提示进行配置即可。                                                                                                                                                                                                                                                                                                                                                                                                                          |
| start    | start \<PID\>    | 启动动态加速。                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| stop     | stop \<PID\>     | 终止动态加速。                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| snapshot | snapshot \<PID\> | 生成动态加速快照。                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| quit     | quit             | 退出字符交互界面。                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| h/help   | h/help           | 显示帮助信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   
