更新时间:2024-10-16 GMT+08:00

静态加速

准备工作

  1. 执行如下命令检查待优化的二进制文件中是否可以重新定位。可以重新定位表示可以进行应用优化。
    readelf -a application | grep .rela.text
    • 如果二进制文件中.rela.text段存在,表示可以重新定位。

    • 如果不存在,为了允许BOLT在程序中重新排列函数(除了重新排列函数中的代码),需要将--emit-relocs或-q添加到应用程序的最后链接步骤中。
  2. 采集应用运行时的日志数据。

    部署并预热应用后,即可使用llvm-bolt -instrument -o -instrumentation-file命令配置应用的日志采集方式。

    例如,配置test.so文件运行后每隔30秒收集一次日志,日志保存到运行时test.log文件中请使用如下命令。

    llvm-bolt tests.so -instrument -o testd.so -instrumentation-file=test.log -instrumentation-sleep-time=30 -instrumentation-no-counters-clear

    • instrument -o:配置完日志采集方式后生成的新的动态库文件。本例中新生成的动态库为testd.so。
    • instrumentation-file:日志保存的文件名称。本例为test.log。
    • instrumentation-sleep-time:采集日志的时间间隔,单位为秒。本例中每隔30秒采集一次日志。
    • instrumentation-no-counters-clear:表示每次日志采集后不要清除日志计数器信息,保持日志信息上下文连续
  3. 运行testd.so对应的应用程序,应用程序运行日志会自动保存在test.log文件中。

    应用加速工具会根据test.log文件中的动态数据来优化应用。

优化应用程序

  • 使用原生的BOLT工具优化应用程序。

    准备好test.log文件后,就可以使用它与BOLT对应用程序进行优化。举例如下。

    llvm-bolt <executable> -o <executable>.bolt -data=test.log -reorder-blocks=ext-tsp -reorder-functions=hfsort -split-functions -split-all-cold -split-eh -dyno-stats

    以上为优化参数示例,并非最优参数组合。

  • 使用hce-wae-auto命令优化应用程序。

    hce-wae-auto命令根据自定义的配置文件来优化应用程序。

    命令格式为:hce-wae-auto [-h] [-c <Path>] [-s <Keyword>] [-e <Pattern>] [-l] [--free] application

    • 执行hce-wae-auto命令后,产生的参数集信息路径默认与配置文件中二进制输出路径一致,路径为:/data/hce-wae-auto/hce-wae-auto.data。
    • 执行hce-wae-auto命令后,系统自动产生日志文件,默认路径为:/var/log/hce-wae-auto/hce-wae-auto.log。
    表1 参数说明

    参数名

    是否需要赋值

    取值类型

    可选/必选

    参数含义

    -h

    /

    可选

    显示命令参数帮助信息。

    -c

    string

    可选

    定义配置文件路径,默认路径为/etc/hce-wae-auto.conf。

    -s

    string

    可选

    定义筛选的关键词,用于模糊搜索上次参数集内容。

    如果没有保存的参数集,则不生效。

    -e

    string

    可选

    根据上次参数集内容,执行选定的参数组合。需指定序号。

    • 单个数字指定对应序号的参数组合。
    • “:”表示序号范围。例如,4:6表示序号4到序号6;:7表示序号1到序号7;5:表示序号5到最后一个;:表示全部。
    • 单个数字可与序号范围“:”一起使用,用“,”分隔。例如,1,4:6表示序号1、序号4、序号5和序号6。

    -l

    /

    可选

    根据配置文件生成参数集并打印,不自动执行命令,不保存参数集信息。

    --free

    /

    可选

    不校验配置文件中参数合法性。

    应用加速工具会对配置文件中的参数进行简单校验,判断参数是否属于bolt的优化参数。若指定--free指令,则取消该校验,允许输入非优化参数。

    application

    /

    必选

    要执行的二进制文件,可以添加相对路径或绝对路径。例如,mysqld,/usr/bin/mysqld,../bin/mysqld。

    -c、-s、-e、-l参数存在冲突时,优先级为-s > -l > -e > -c。

    hce-wae-auto命令使用示例如下。

    示例

    说明

    hce-wae-auto mysqld

    从默认路径读取配置,根据配置参数生成参数集,并自动执行命令。命令执行完成后自动保存参数集信息。

    hce-wae-auto mysqld -c /etc/my.conf -l

    从指定路径/etc/my.conf读取配置参数,生成参数集并打印生成命令。不执行命令并且不保存参数集信息。

    hce-wae-auto mysqld -c /etc/my.conf

    从指定路径/etc/my.conf读取配置参数,生成参数集并自动执行命令。执行完成后自动保存参数集信息。

    hce-wae-auto mysqld -s align

    从上次生成的参数集信息中模糊搜索关键词align,打印匹配的参数组合。

    hce-wae-auto mysqld -e 4:6

    从上次生成的参数集信息中,选择序号4、5、6的参数组合,生成二进制文件。

    hce-wae-auto mysqld -e 1,4:6

    从上次生成的参数集信息中,选择序号1、4、5、6的参数组合,生成二进制文件。

    hce-wae-auto mysqld -e :

    从上次生成的参数集信息中,选择所有参数组合,生成二进制文件。

    hce-wae-auto mysqld -e 4:6 -l

    从上次生成的参数集信息中,选择序号4、5、6的参数组合,打印生成命令,并且不执行命令。

    hce-wae-auto mysqld -e : -l

    从上次生成的参数集信息中,选择所有参数组合,打印生成的命令,并且不执行命令。

    hce-wae-auto mysqld --free

    从默认路径读取配置,不对参数进行校验,根据配置参数生成参数集,并自动执行命令。命令执行完成后自动保存参数集信息。

    hce-wae-auto -h

    显示指令帮助信息。