Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
【总体方案】
我们适配了v5.1.0版本的openGauss-third_party和openGauss-server,并最终能够在竞赛组委会提供的rvbox11上直接运行Benchmarksql5.0。由于没有采用官方推荐的openEuler、Centos操作系统或者容器的方式,这也导致了我们花了很多时间去搭建编译环境。具体步骤包括:
其中,openGauss-third_party、openGauss-server移植参考了上游已提交的龙芯架构的补丁,该补丁在5.1.0中还尚未合入,链接如下:
[1] https://gitee.com/opengauss/openGauss-third_party/pulls/226
[2] https://gitee.com/opengauss/openGauss-server/pulls/4586/files
【复现步骤】
以下操作均可在rvbox11上直接进行,涉及路径需自行修改位置。
1. gcc编译
我们尝试过使用gcc13.2去编译openGauss,但最终由于c++语法问题,导致我们还是选择了官方推荐的gcc10.3版本,在rvbox11上本地编译gcc步骤如下:
gcc编译过程中会遇到重复定义问题,可参考以下链接解决:
[3] gcc-mirror/gcc@2701442
安装完毕后,需要继续修改下gcc:
设置gcc环境变量:
vi ~/.bashrc
中添加export PATH=/home/zhangf/file/gcc103-install3/bin:$PATH
,然后source ~/.bashrc
,gcc -v
看下是否成功:2. 环境依赖编译
我们在移植过程中发现,由于使用了gcc10.3,导致一些系统下的软件不能正常使用,比如cmake,因此,这里用gcc10.3重新编译了依赖包,下面罗列出所需的软件包版本及下载链接:
这里,我们统一安装在file目录下,并修改.bashrc设置环境变量,如下:
然后执行
source ~/.bashrc
3. openGauss-third_party编译
说明:由于时间关系,numactl包和build_component.sh编译的5个包(cbb dcc dcf dms dss),我们直接进入到了对应软件包修改了源码解决编译问题,通过build.sh构建会重新解压源码并覆盖,因此暂时不能通过sh build.sh一键构建,这里提供编译出的binarylibs的二进制文件(详见附录),并且已将gcc10.3移动进去了,后期我们会改成为打补丁方式,通过build.sh脚本编译。其余修改可见附录[6]提供的补丁,编译所需的riscv jdk8也在附录[3]提供了。
也正是由于环境并非官方推荐的,我们发现了esdk_obs_api软件包中build_obs.sh脚本里路径拼写错误导致该包无法正常编译,该问题在上游master、v5.1.0以及其他分支均存在该问题,我已给上游提交了补丁,详见以下链接:
[4] https://gitee.com/opengauss/openGauss-third_party/pulls/240/files
4. openGauss-server编译
(1)拉取本pr
(2)调用build.sh 进行全量编译
最终在mppdb-temp-install目录下得到编译好的openGauss。然后在.bashrc上设置openGauss和jdk的环境变量:
执行
source ~/.bashrc
,接着初始化数据库:5. Benchmarksql5.0编译与测试
由于时间关系,本次测试只采用了默认配置进行测试,测试步骤如下:
(1)下载Benchmarksql5.0并解压,链接如下:
[5] https://sourceforge.net/projects/benchmarksql/
(2)替换jdbc驱动
这里由于官方提供链接里只有x86和arm架构的驱动(https://opengauss.org/zh/download/) ,我们在SG2042上编译了openGauss-connector-jdbc包,并生成了相应的驱动,步骤如下:
最终在当前目录会出现openGauss-5.0.0-UNKNOWN-64bit-Jdbc.tar.gz,然后替换驱动:
(3)编译
进入benchmarksql-5.0根目录,输入ant命令进行编译:
(4)修改配置
进入benchmarksql-5.0/run,修改props.pg,主要修改了user与password配置如下:
(5)运行Benchmark
结果如下:
【附录】
以下是移植过程中使用的源码和二进制链接,可以下载使用:
[1] gcc10.3二进制
https://cowtransfer.com/s/5eebd3c39c6748
[2] binarylibs二进制
https://cowtransfer.com/s/60a5a0d47c8b46
[3] 环境依赖二进制(cmake、ccache、doxygen、ant、maven、riscv jdk8)
https://cowtransfer.com/s/94a0e06077b741
[4] opengauss 二进制
https://cowtransfer.com/s/5961e92e2cb644
[5] 基于5.1.0的server补丁
目前竞赛的master分支和5.1.0相差较远,这里专门提供在原始5.1.0的riscv移植补丁,更加清晰
https://cowtransfer.com/s/97097fb705ef4b
[6] 基于5.1.0的third-party补丁
目前,对于numactl包和build_component.sh编译的5个包(cbb dcc dcf dms dss)修改还未放入补丁中,后续我们将支持build.sh构建的补丁更新,暂且可以用[2] 提供的binarylibs二进制去编译server,其余修改可见补丁
https://cowtransfer.com/s/c6c7827e1fb74a
[7] opengauss jdbc riscv驱动
https://cowtransfer.com/s/139ed8beae394f
除此之外,组委会可登录rvbox11的zhangf账户,该目录存放着移植的所有文件,目录结构如下:
最后感谢竞赛组委会提供的技术支持与SG2042平台~