RISC-V公测平台发布 · 数据库在RISC-V服务器上的适配评估

前言

上一期讲到YCSB在RISC-V服务器上对MySQL进行性能测试(RISC-V公测平台发布 · 使用YCSB测试SG2042上的MySQL性能),在这一期文章中,我们继续深入讨论RISC-V+数据库的应用。本期就继续利用HS-2平台来测试数据库软件在RISC-V服务器上的兼容性。

参与此次实验的数据库如下:

Redis

MongoDB5

PostgreSQL

TiDB

MySQL/MariaDB

实验机配置如下:

处理器:SG2042(64核心)

内存:32GB

操作系统:Ubuntu 22.10 (GNU/Linux 6.1.31 riscv64)

一、MySQL/MariaDB

在上一期中,为了测试YCSB(Yahoo! Cloud Serving Benchmark)性能测试软件,顺便测试了MySQL在RISC-V服务器上的兼容性。

MySQL数据库服务是一个完全托管的数据库服务,可使用世界上最受欢迎的开源数据库来部署云原生应用程序。它是百分百由MySQL原厂开发,管理和提供支持。

直接使用包管理器安装MySQL:

sudo apt-get install mysql-server

当然除了包管理器安装,也尝试了编译安装MySQL,结果提示编译失败,因此,MySQL不能直接通过编译安装MySQL,而需要在编译之前打上相关补丁,然后再编译。

同时也测试了MariaDB在RISC-V服务器上的兼容性,MariaDB是一个通用的开源关系数据库管理系统。它是世界上最受欢迎的数据库服务器之一, MariaDB在GPLv2开源许可下发布,并保证保持开源。

先尝试直接通过包管理器安装:

sudo apt-get install mariadb-server

在通过包管理器安装并正常运行后,接下来就尝试通过编译安装MariaDB。

先下载MariaDB的源码包并解压:

wget

https://dlm.mariadb.com/3239838/MariaDB/mariadb-11.0.2/source/mariadb-11.0.2.tar.gz

进入MariaDB源码文件夹:

tar -xzvf mariadb-11.0.2.tar.gz 

执行cmake并编译:

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb -DMYSQL_DATADIR=/home/mariadb 
-DSYSCONFDIR=/etc -DWITHOUT_TOKUDB=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 
-DWITH_ARCHIVE_STPRAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 
-DWIYH_READLINE=1 -DWIYH_SSL=system -DVITH_ZLIB=system -DWITH_LOBWRAP=0 
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 
-DDEFAULT_COLLATION=utf8_general_ci
make -j64
sudo make install -j1

 

打开配置文件并编辑:

vim /home/mariadb/my.cnf

图片

启动服务器并测试是否能连接数据库服务器:

sudo /usr/local/mariadb/bin/mysqld_safe --user=mysql --skip-grant-tables
/usr/local/mariadb/bin/mariadb

图片

 连接成功!

二、Redis

接下来就是Redis了,Redis全称为REmote DIctionary Server(Redis), 由 Salvatore Sanfilippo编写。是一个开源的、使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)的存储数据库,并提供多种语言的 API。

Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。

通过APT安装Redis:

sudo apt install redis-server

然后启动Redis服务:

sudo servcie redis-server start

进入redis-cli:

redis-cli

如果能进入Redis Shell那就说明安装成功。

编译安装:

wget 

https://github.com/redis/redis/archive/refs/tags/7.0.12.tar.gz

解压:

tar -xzvf 7.0.12.tar.gz 

进入Redis文件夹:

cd redis-7.0.12/

编译:

make BUILD_TLS=yes USE_SYSTEMD=yes -j64

测试一下(可选):

make test

安装:

sudo make install

启动服务器:

redis-server
redis-server &(后台运行)
运行redis-benchmark压力测试(10万次请求,20个客户端),以CSV文件形式输出。
redis-benchmark -n 100000 -c 20 --csv

 结果如下:

图片

 因此Redis通过APT安装和编译安装两种方式均可以。

三、MongoDB

接下来就是MongoDB,MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

通过APT安装MongoDB:

sudo apt install mongodb

结果提示不支持通过apt安装,因此我们选择源码编译安装。

下载源码包:

wget 

https://fastdl.mongodb.org/src/mongodb-src-r6.0.8.tar.gz

解压缩:

tar -xzvf mongodb-src-r6.0.8.tar.gz

进入mongodb源码文件夹:

cd mongodb-src-r6.0.8/

编译:

python3 buildscripts/scons.py install-mongod -j64

结果编译失败:

图片

在安装相关的包以后,依旧无法编译。

四、PostgreSQL

然后就是PostgreSQL,PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行。PostgreSQL 开发者把它念作 post-gress-Q-L。PostgreSQL 的 Slogan 是 "世界上最先进的开源关系型数据库"。

通过APT安装:

apt-get install postgresql postgresql-client

测试一下:

sudo -i -u postgres
psql

图片

 编译安装:

下载源代码:

wget 

https://ftp.postgresql.org/pub/source/v15.3/postgresql-15.3.tar.gz

解压:

tar -xzvf postgresql-15.3.tar.gz

新建pg文件夹:

mkdir pg

进入:

cd postgresql-15.3/

配置:

./configure --prefix=/home/perfxlab01/pg

编译并安装:

make world -j64
make install-world -j64
进入~/pg/

 初始化数据库:

./bin/initdb -D ./data/

启动数据库:

bin/pg_ctl -D ./data/ -l logfile start

成功启动数据库后,接下来就是测试数据库性能了。PostgreSQL和Redis一样也自带了压力测试程序。

新建用于压力测试的数据库:

bin/psql -U postgres -h localhost
(进入psql shell)
CREATE DATABASE test;
(退出psql shell)

初始化用于压力测试的数据库:

bin/pgbench -i test

开始压力测试:

bin/pgbench -c 100 -T 300 -j 64 test

压力测试结果如下:

pgbench (15.3)
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 1
query mode: simple
number of clients: 100
number of threads: 64
maximum number of tries: 1
duration: 300 s
number of transactions actually processed: 93122
number of failed transactions: 0 (0.000%)
latency average = 322.405 ms
initial connection time = 156.199 ms
tps = 310.168586 (without initial connection time)
statement latencies in milliseconds and failures:
0.005           0  \set aid random(1, 100000 * :scale)
0.002           0  \set bid random(1, 1 * :scale)
0.002           0  \set tid random(1, 10 * :scale)
0.002           0  \set delta random(-5000, 5000)
0.201           0  BEGIN;
1.144           0  UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid;
0.429           0  SELECT abalance FROM pgbench_accounts WHERE aid = :aid;
290.788           0  UPDATE pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;
26.624           0  UPDATE pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid;
0.432           0  INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP);
2.556           0  END;

五、TiDB

接下来就是TiDB了,TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库。该数据库使用Go语言编写。

下载最新版的TiDB源码包以后解压并进入源码文件夹,然后编译:

tar -xzvf tidb-7.1.1.tar.gz
cd tidb-7.1.1/
make

结果编译失败:

图片

同时也尝试了通过脚本安装,结果提示不支持该架构。

总结:

通过此次实验,得出了以下结果。

数据库

APT安装/脚本安装

编译安装

Redis

MongoDB

×

×

PostgreSQL

TiDB

×

×

MySQL

×

MariaDB

1、上一期我就提到MySQL不支持直接通过编译安装,只能通过打Ubuntu提供的补丁才能编译(详见MySQL server fails to build on RISC-V 64),而MariaDB通过编译安装或包管理器安装两种方式均可以。但是通过编译安装后后续要作进一步手工配置(教程见参考资料),而通过包管理器安装系统自动给你配置好,开箱即用,因此建议通过APT(包管理器)安装MySQL/MariaDB,更加省时方便。

2、目前测试的四款数据库软件中,MongoDB只有适用于Ubuntu 22.04 LTS的软件包,而TiDB无论是脚本安装还是编译安装均不支持riscv64。因此希望这两个数据库在RISC-V架构上的支持再加把劲。

3、此次兼容性测试中表现最亮眼的是PostgreSQL和Redis,这两者编译下来都挺顺利,而且还能正常运行。说明这两个数据库对riscv64的兼容性做得是非常好。尤其是PostgreSQL,之前PostgreSQL BuildFarm里有社区成员使用riscv64平台上的编译器编译成功了。因此PostgreSQL能够在riscv64平台上成功编译并运行就是必然的了。

4、Redis和PostgreSQL都自带了压力测试工具,Redis的redis-benchmark设置好压力测试参数,然后只要等测试结果出炉即可,而PostgreSQL的pgbench相比于redis-benchmark,只要在设置压力测试参数前再加创建测试数据库和初始化测试数据库这两步即可。因此,自带压力测试程序这一点,对于这两个数据库来说是加分项,因为使用自带的压力测试程序可以帮助使用者了解到该服务器在数据库方面上的性能。

参考资料:

MariaDB 简介

https://mariadb.org/zh/

Redis 教程

https://www.runoob.com/redis/redis-tutorial.html

MongoDB官网

https://www.mongodb.com/zh-cn

MongoDB开发者社区

https://www.mongodb.com/community/forums/t/when-to-upload-version-on-debian/181125

mongodb-server binary package in Ubuntu Focal riscv64

https://launchpad.net/ubuntu/focal/riscv64/mongodb-server

MySQL server fails to build on RISC-V 64

https://bugs.mysql.com/bug.php?id=100356

部署Mariadb数据库到Linux(源码编译安装)

https://www.cnblogs.com/DragonStart/p/10823222.html

PostgreSQL BuildFarm Status

https://buildfarm.postgresql.org/cgi-bin/show_status.pl

PostgreSQL BuildFarm Status History

https://buildfarm.postgresql.org/cgi-bin/show_history.pl?nm=boomslang&br=REL_15_STABLE

TiDB

https://docs.pingcap.com/zh/tidb/stable

正文完


  • About HS-2

HS-2 RISC-V通用主板是澎峰科技与合作伙伴共同研发的一款专为开发者设计的标准mATX主板,它预装了澎峰科技为RISC-V高性能服务器定制开发的软件包,包括各种标准bencmark、支持V扩展的GCC编译器、计算库、中间件以及多种典型服务器应用程序。

HS-2 RISC-V通用主板搭载了一颗国产RISC-V 64核处理器(SG2042)。SG2042是目前已量产的性能最高的RISC-V处理器,主要针对高性能计算领域需求设计,适用于科学计算、工程计算、AI计算、融合计算等大算力应用场景。

图片

  • 关于RISC-V公共测试平台

    图片

RISC-V高性能处理器公共测试云平台 ·快速使用指南,下载链接:https://www.kdocs.cn/l/cmnYcyFIlVRx

  • RISC-V公共测试云平台系列文章

  1.  RISC-V公测平台发布 ·Stream带宽完整测试

  2.  RISC-V公测平台发布 · 我的世界MohistMC

  3.  RISC-V公测平台发布 · 第一个WEB Server“Hello RISC-V world!”

  4.  RISC-V公测平台发布 ·如何在SG2042上玩转k3s

  5. “RISC-V成长日记” blog发布,第一个运行在RISC-V服务器上的blog?

  6. RISC-V公测平台发布:如何在SG2042上玩转OpenMPI

  7. RISC-V公测平台发布:Compiling The Fedora Linux Kernel Natively on RISC-V

  8.  RISC-V公测平台发布 · Unix Bench完整测试

  9. RISC-V公测平台发布 · 使用YCSB测试SG2042上的MySQL性能

  10. RISC-V公测平台发布 · 7-zip 测试

  11. RISC-V公测平台发布 · CoreMark测试报告

  12. RISC-V公测平台发布 · 数据库在RISC-V服务器上的适配评估(本篇)

欢迎投稿,发送至riscvinfo@perfxlab.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/48355.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity 之 Input类

文章目录 总述具体介绍 总述 Input 类是 Unity 中用于处理用户输入的重要工具&#xff0c;它允许您获取来自键盘、鼠标、触摸屏和控制器等设备的输入数据。通过 Input 类&#xff0c;您可以轻松地检测按键、鼠标点击、鼠标移动、触摸、控制器按钮等用户输入事件。以下是关于 I…

数学建模-模型详解(2)

微分模型 当谈到微分模型时&#xff0c;通常指的是使用微分方程来描述某个系统的动态行为。微分方程是描述变量之间变化率的数学方程。微分模型可以用于解决各种实际问题&#xff0c;例如物理学、工程学、生物学等领域。 微分模型可以分为两类&#xff1a;常微分方程和偏微分…

《学爸》成爆款背后,马栏山以BOT模式示范“文化+科技”路径

文|智能相对论 作者|范柔丝 今年暑期档的爆款电影&#xff0c;必有《学爸》一席之地。 这部给众多深陷教育旋涡的家长带来深刻思考的电影&#xff0c;就是马栏山视频文创产业园经过3年筹备&#xff0c;首部本土孵化出品的教育现实体裁院线大电影。 据猫眼专业版数据&#x…

初步认识OSPF的大致内容(第三课)

1 路由的分类 直连路由&#xff08;Directly Connected Route&#xff09;是指网络拓扑结构中相邻两个网络设备直接相连的路由&#xff0c;也称为直接路由。如果两个设备属于同一IP网络地址&#xff0c;那么它们就是直连设备。直连路由表是指由计算机系统生成的一种用于路由选择…

Vue3 用父子组件通信实现页面页签功能

一、大概流程 二、用到的Vue3知识 1、组件通信 &#xff08;1&#xff09;父给子 在vue3中父组件给子组件传值用到绑定和props 因为页签的数组要放在父页面中&#xff0c; data(){return {tabs: []}}, 所以顶部栏需要向父页面获取页签数组 先在页签页面中定义props用来接…

谷粒商城环境搭建一:Docker容器部署

Docker容器部署 VMware虚拟机安装 参考&#xff1a;VMware虚拟机安装Linux教程 Docker安装 Linux安装Docker # 1.更新apt包索引 sudo apt-get update# 2.安装以下包以使apt可以通过HTTPS使用存储库&#xff08;repository&#xff09; sudo apt-get install -y apt-transpor…

Linux内核学习(六)—— 中断(基于Linux 2.6内核)

一、中断 中断使得硬件得以发出通知给处理器。中断随时都可以产生&#xff0c;如键盘敲击就会触发中断&#xff0c;通知操作系统有按键按下。 不同设备对应的中断不同&#xff0c;而每个中断都通过一个唯一的数字标识。这些中断值通常被称为中断请求&#xff08;IRQ&#xff…

【观察】戴尔科技:构建企业创新“韧性”,开辟数实融合新格局

过去几年&#xff0c;国家高度重视发展数字经济&#xff0c;将其上升为国家战略。其中&#xff0c;“十四五”规划中&#xff0c;就明确提出要推动数字经济和实体经济的深度融合&#xff0c;以数字经济赋能传统产业转型升级&#xff1b;而2023年年初正式发布的《数字中国建设整…

Coremail参与编制|《信创安全发展蓝皮书——系统安全分册(2023年)》

信创安全发展蓝皮书 近日&#xff0c;Coremail参与编制的《信创安全发展蓝皮书—系统安全分册&#xff08;2023年&#xff09;》重磅发布。 此次信创安全发展蓝皮书由工业和信息化部电子第五研究所联合大数据协同安全技术国家工程研究中心重磅共同发布。 本次蓝皮书涵盖信创系…

多种方法实现 Nginx 隐藏式跳转(隐式URL,即浏览器 URL 跳转后保持不变)

多种方法实现 Nginx 隐藏式跳转(隐式URL,即浏览器 URL 跳转后保持不变)。 一个新项目,后端使用 PHP 实现,前端不做路由,提供一个模板,由后端路由控制。 Route::get(pages/{name}, [\App\Http\Controllers\ResourceController::class, getResourceVersion])

【Python原创设计】基于Python Flask 机器学习的全国+上海气象数据采集预测可视化系统-附下载链接以及详细论文报告,原创项目其他均为抄袭

基于Python Flask 机器学习的全国上海气象数据采集预测可视化系统 一、项目简介二、开发环境三、项目技术四、功能结构五、运行截图六、功能实现七、数据库设计八、源码获取 一、项目简介 在信息科技蓬勃发展的当代&#xff0c;我们推出了一款基于Python Flask的全国上海气象数…

多维时序 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络的数据多变量时间序列预测

多维时序 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络的数据多变量时间序列预测 目录 多维时序 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络的数据多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 多维时序 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经…

Centos 解决 XXX不在 sudoers 文件中。此事将被报告。的错误

本来想使用 sudo 拷贝一个文件&#xff0c;结果出现上面的问题&#xff01; 下面是解决方法&#xff1a; 首先登录root&#xff0c;然后执行下面的命令 vim /etc/sudoers 将你需要添加的用户带红色框线的地方&#xff0c;模仿root写一遍&#xff0c;然后保存&#xff01; …

分类预测 | MATLAB实现BWO-TCN-Attention数据分类预测

分类预测 | MATLAB实现BWO-TCN-Attention数据分类预测 目录 分类预测 | MATLAB实现BWO-TCN-Attention数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.BWO-TCN-Attention数据分类预测程序&#xff1b; 2.无Attention适用于MATLAB 2022b版及以上版本&#xf…

Elasticsearch算分优化方案之rescore_query

简介 今天来说一说Elasticsearch 的重新评分&#xff0c;即在检索出来一次结果的基础上在进行检索提升数据排序效果&#xff0c;但是仅对查询或者post_filter阶段返回的前多少条进行二次查询。在每个分片上进行二次检索的文档数量时可以通过window_size 控制的&#xff0c;该参…

2019年3月全国计算机等级考试真题(C语言二级)

2019年3月全国计算机等级考试真题&#xff08;C语言二级&#xff09; 第1题 负责数据库中查询操作的数据库语言是 A. 数据定义语言 B. 数据管理语言 C. 数据操纵语言 D. 数据控制语言 正确答案&#xff1a;C 第2题 有关系如下图所示&#xff0c;其违反了哪一类完整性约束 …

2023国赛数学建模思路 - 案例:感知机原理剖析及实现

文章目录 1 感知机的直观理解2 感知机的数学角度3 代码实现 4 建模资料 # 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 感知机的直观理解 感知机应该属于机器学习算法中最简单的一种算法&#xff0c;其…

【Python原创设计】基于Python Flask的上海美食信息与可视化宣传网站项目-附下载方式以及往届优秀论文,原创项目其他均为抄袭

基于Python Flask的上海美食信息与可视化宣传网站&#xff08;获取方式访问文末官网&#xff09; 一、项目简介二、开发环境三、项目技术四、功能结构五、运行截图六、功能实现七、数据库设计八、源码获取 一、项目简介 随着大数据和人工智能技术的迅速发展&#xff0c;我们设…

论文速递 Nature 2023 | Heat-assisted detection and ranging

注1:本文系“计算成像最新论文速览”系列之一,致力于简洁清晰地介绍、解读非视距成像领域最新的顶会/顶刊论文(包括但不限于 Nature/Science及其子刊; CVPR, ICCV, ECCV, SIGGRAPH, TPAMI; Light‐Science & Applications, Optica 等)。 本次介绍的论文是: 2023年,Nature,“…

31.Netty源码之客户端启动流程

highlight: arduino-light 客户端启动主要流程 如果看了服务器端的启动流程&#xff0c;这里简单看下就可以了。 java package io.netty.server; ​ import io.netty.bootstrap.Bootstrap; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; import …