TXSQL内核优化-链接后优化性能测试前置准备
- 更新所有依赖
bash
yum update -y
- 挂载硬盘到
/data
目录中(如有,以下编译安装目录都在/data)
bash
mkfs ext4 /dev/vdb
mkdir /data
mount /dev/vdb /data
- 编译
llvm 12.0 与 bolt
bash
yum install git -y
yum install ninja-build -y
yum install cmake -y
git clone https://github.com/llvm-mirror/llvm llvm
cd llvm/tools
git checkout -b llvm-bolt f137ed238db11440f03083b1c88b7ffc0f4af65e
git clone https://github.com/angelica-moreira/BOLT.git llvm-bolt
cd ..
patch -p 1 < tools/llvm-bolt/llvm.patch
mkdir build
cd build
cmake -G Ninja .. -DLLVM_TARGETS_TO_BUILD="X86;AArch64" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON
ninja -j64
DESTDIR=/data ninja install
- 编译
clang 12
(llvm版本相同覆盖安装问题不大)
bash
git clone https://github.com/llvm/llvm-project.git
cd llvm-project
git switch llvmorg-12.0.0
mkdir build && cd build
cmake ../llvm -G Ninja -DLLVM_ENABLE_PROJECTS="clang" -DCMAKE_BUILD_TYPE="Release"
DESTDIR=/data ninja install
- 编译
Python 3.10
bash
yum install -y ncurses-devel gdbm-devel xz-devel sqlite-devel tk-devel uuid-devel readline-devel bzip2-devel libffi-devel
wget https://www.python.org/ftp/python/3.10.9/Python-3.10.9.tgz
tar -zxf Python-3.10.9.tgz
cd Python-3.10.9/
./configure --enable-optimizations
make -j64
DESTDIR=/data make install
- 编译
sysbench
bash
yum install -y mysql-devel
git clone https://github.com/akopytov/sysbench.git
cd sysbench
./autogen.sh
./configure
make -j64
DESTDIR=/data make install
cp /data/usr/local/share/sysbench /usr/local/share/sysbench
- 设置软链接
bash
ln -s /data/usr/local/bin/llvm-bolt /usr/bin/llvm-bolt
ln -s /data/usr/local/bin/clang /usr/bin/clang-12
ln -s /data/usr/local/bin/clang++ /usr/bin/clang++-12
ln -s /data/usr/local/bin/python3.10 /usr/bin/python3.10
- 编译
mysql
参考MySQL构建与初始化。
注意: (1) 在生成编译配置时,需要在cmake命令中添加-DCMAKE_CXX_LINK_FLAGS="-Wl,-q"
一项。若使用GCC编译器,则还需要在-DCMAKE_C_FLAGS=
与-DCMAKE_CXX_FLAGS=
编译项中添加-fno-reorder-blocks-and-partition
禁止函数重排。
(2) 如果由于链接器版本问题导致编译出错,请更新ld.gold
或将原ld.gold
更名并将ld
复制更名为ld.gold
。