动态加速(只支持HCE2.0)
准备工作
在做动态加速之前,请先做如下两个检查。两个条件都满足,才能对应用进行动态加速。
- 执行如下命令检查待优化的二进制文件中是否可以重新定位。可以重新定位表示可以进行应用优化。
- 执行hce-wae --check /data/apps/mysql-8.0.28/bin/mysqld命令查看应用是否支持动态加速。
如果检查结果为3,表示可以使用动态加速工具。否则不支持动态加速。
图2 检查结果为3示例
操作步骤
本例以优化/data/apps/mysql-8.0.28/bin目录下的mysqld应用 ,为您介绍动态加速方式优化应用的操作。
- 生成插桩版应用并运行。
- 执行命令/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命令执行示例命令运行完成后,会在当前目录生成对应的以.inst为后缀的插桩文件mysqld.inst。
图4 查询以.inst为后缀的插桩文件示例 - 运行插桩文件获取进程PID,本例为87042。
图5 运行插桩文件获取进程PID示例
- 执行命令/data/hce-wae/dbo/gen_instrumentation /data/apps/mysql-8.0.28/bin/mysqld生成插桩版应用。
- 创建mysqld的应用加速动态配置文件。
每一个待优化的应用都要有一个对应的配置文件,应用加速工具根据此配置文件对应用进行动态加速。
- 执行如下命令复制一份默认的配置文件为/data/hce-wae/config/mysqld.conf。
[root@localhost]# cp /data/hce-wae/config/hce-wae-tmp.conf /data/hce-wae/config/mysqld.conf
- 设置/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
图6 origin-exe字段示例
- 执行如下命令复制一份默认的配置文件为/data/hce-wae/config/mysqld.conf。
- 使用配置文件和对应的进程PID配置动态加速工具。
命令格式:hce-wae --conf [PID] [/path/to/config]
图7 配置动态加速工具示例 - 启动动态加速,对插桩版mysql进行优化。
图8 启动动态加速示例
启动后,可以通过--status参数查看当前优化状态。当状态为Running时,表示进程正在优化中;Finished时,表示进程已经优化完成。
命令格式:hce-wae --status [PID]
图9 查看当前优化状态示例 - 优化后,通过--snapshot参数生成优化后的.dbo二进制快照文件,本例为mysqld.dbo。
图10 生成优化后的.dbo二进制快照文件示例
快照生成的默认路径为/data/hce-wae/snapshot/,可在配置文件中对快照位置进行修改。后续您可以直接使用此优化后的快照文件mysqld.dbo运行应用,无需重复优化。
- 终止动态加速工具,应用优化结束。
图11 终止动态加速工具示例
动态应用加速工具字符交互界面
动态应用加速工具支持字符交互界面,交互界面支持指令如图12、图13和表1所示。
字符交互界面指令 |
使用方式 |
指令描述 |
---|---|---|
list |
list |
获取当前环境的进程信息,包含PID、PPID以及command信息。 |
status |
status <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 |
显示帮助信息 |