---
title: 使用方法
description: "1. 插桩方式"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevps/compilation/ug-bisheng/kunpengbisheng_30_0026.html
sourcePath: /source/zh/kunpengdevps/compilation/ug-bisheng/kunpengbisheng_30_0026.html
indexId: 6d97e8e29e1eb2c714207ff7c8e804bad3a3ccfa9d70d901a899a566e61cd3e674
---
# 使用方法

1. 插桩方式
  命令参考：

  1 2 3 4 5 6 7 # 编译时，增加使能重定位的链接选项(--emit-relocs或-q ) # 插桩 llvm-bolt ./install.bolt/bin/mysqld -instrument -o mysqld.inst -instrumentation-file=mysqld.fdata --instrumentation-wait-forks -instrumentation-sleep-time=2 -instrumentation-no-counters-clear --instrumentation-binpath=mysqld.inst # 使用插桩后的二进制mysqld.inst替换 原来的二进制，然后运行以收集运行信息 # 反馈优化二进制 llvm-bolt ./install/bin/mysqld -o mysqld.opt -data=mysqld.fdata --infer-fall-throughs --reorder-blocks=ext-tsp --reorder-functions=hfsort --peepholes=useless-branches --simplify-conditional-tail-calls --simplify-rodata-loads --indirect-call-promotion-use-mispredicts --elim-link-veneers --eliminate-unreachable --fix-block-counts --fix-func-counts --split-all-cold --sctc-mode=preserve --align-blocks --cg-use-split-hot-size --tail-duplication=aggressive --iterative-guess --assume-abi # 使用优化后的版本再运行

2. perf采样方式
  以优化mysql为例，在x86上参考如下命令行：

  1 2 3 4 5 6 7 8 # 编译时，增加使能重定位的链接选项(--emit-relocs或-q ) # 启动业务进程 # 采样 perf record -e cycles:u -j any,u -o /tmp/profile.data -p `pidof mysqld` -- sleep 600 # /usr/local/mysql-8.0.25/bin/mysqladmin -uroot -p123456 -S /data/mysql/run/mysql.sock shutdown perf2bolt -p=mysqld.data ./install/bin/mysqld -o mysqld.fdata # 反馈优化二进制 llvm-bolt ./install.bolt/bin/mysqld -o mysqld.opt -data=mysqld.fdata --infer-fall-throughs --reorder-blocks=ext-tsp --reorder-functions=hfsort --indirect-call-promotion=all --indirect-call-promotion-use-mispredicts --peepholes=useless-branches --simplify-conditional-tail-calls --simplify-rodata-loads --elim-link-veneers --eliminate-unreachable --fix-block-counts --fix-func-counts --split-all-cold --sctc-mode=preserve --align-blocks --cg-use-split-hot-size

  注意，在AArch64上，因为暂时不支持分支事件，所以采样与转化命令需要改成下面这样：

  1 2 3 4 5 6 # 采样, 注意arm上暂时没有LBR事件 perf record -e cycles:u -o /tmp/profile.data -p `pidof mysqld` -- sleep 600 # 转成可读格式，需要加参数 -nl perf2bolt -p=mysqld.data ./install/bin/mysqld -o mysqld.fdata -nl # 反馈优化二进制 -- 命令同上 # 使用优化后的版本再运行
