应用反馈优化
DEMO
- 首次编译安装MySQL若源码在/home/mysql-8.0.24,在该目录下执行以下命令
1 2 3 4 5 6 7
#创建profile存储目录 mkdir gcc_build cd gcc_build cmake .. -DCMAKE_INSTALL_PREFIX=/home/mysql-8.0.24/gcc_build/ -DBUILD_CONFIG=mysql_release -DWITH_BOOST=../boost -DCMAKE_CXX_FLAGS="-fcfgo-profile-generate=/home/mysql-8.0.24/gcc_build/mysql_profile/pgo_profile" -DCMAKE_C_FLAGS="-fcfgo-profile-generate=/home/mysql-8.0.24/gcc_build/mysql_profile/pgo_profile" make -j && make install -j
- 启动mysql
1
/home/mysql-8.0.24/gcc_build/bin/mysqld --defaults-file=/etc/my.cnf &
- 运行基准测试,此处以sysbench为例
1
sysbench ./oltp_write_only.lua --threads=256 --mysql-user=root --mysql-password=123456 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-db=sysbench --forced-shutdown=off --time=120 --report-interval=1 --events=0 --table-size=10000000 --tables=1 run
- 待基准测试结束后,profile会生成在/home/mysql-8.0.24/gcc_build/mysql_profile/pgo_profile
编译优化后
1 2 3
cmake .. -DCMAKE_INSTALL_PREFIX=/home/mysql-8.0.24/gcc_build_pgoed -DBUILD_CONFIG=mysql_release -DWITH_BOOST=../boost -DCMAKE_CXX_FLAGS="-fcfgo-profile-use=/home/mysql-8.0.24/gcc_build/mysql_profile/pgo_profile -fprofile-correction -Wno-error=coverage-mismatch -Wno-error=missing-profile" -DCMAKE_C_FLAGS="-fcfgo-profile-use=/home/mysql-8.0.24/gcc_build/mysql_profile/pgo_profile -fprofile-correction -Wno-error=coverage-mismatch -Wno-error=missing-profile" make -j && make install -j
如在安装遇到error: 'SYS_gettid' was not declared in this scope,可以通过以下方式解决:
在 /home/mysql-8.0.24/storage/innobase/buf/buf0buff.cc 开头添加 #include "sys/syscall.h"
父主题: PGO