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

实验介绍:

YCSB(全称为Yahoo! Cloud Serving Benchmark),该性能测试工具由Java语言编写(在之前的MC文章中也提到过这个,如果没看过的读者可以去看看之前MC那一期),主要用于云端或者服务器端的数据库性能测试工具,其内部涵盖了常见的NoSQL数据库产品,如Cassandra、MongoDB、HBase、Redis等等。

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

当然,本次实验所用到的平台还是衡山-2(HS-2)RISC-V通用主板,该主板是一款专为开发者设计的标准mATX主板,该主板最高支持128GB内存,通过类似PC的丰富的接口和较强的兼容性,赋予开发者桌面级的RISC-V开发体验。

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

实验材料:

MySQL/MySQL源代码

一台SG2042服务器(HS-2)

TPCC源代码

YCSB源代码

JDK(本教程使用系统自带的JDK 11)

实验过程:

安装MySQL:

方式一:直接通过apt安装

sudo apt install mysql-server

方式二:编译安装(此路不通)

下载源码

wget

https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.34.tar.gz

如果wget太慢,可以先提前下载到电脑上,然后再传到服务器上。

解压并进入

tar -xzvf mysql-8.0.34.tar.gzcd mysql-8.0.34/mkdir buildcd build/

由于MySQL需要boost,而且直接下载boost比较慢,因此我们选择手动下载boost

https://boostorg.jfrog.io/artifactory/main/release/1.77.0/source/boost_1_77_0.tar.gz

解压

tar -xzvf boost_1_77_0.tar.gz

回到mysql的build文件夹下:

cd mysql-8.0.34/build/

运行cmake​​​​​​​

sudo cmake .. -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_unicode_ci 
-DENABLED_LOCAL_INFILE=ON                                    -DWITH_SSL=system 
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql/server  -DMYSQL_DATADIR=/usr/local/mysql/data 
-DMYSQL_TCP_PORT=3306                                        -DDOWNLOAD_BOOST=0 
-DWITH_BOOST=/home/perfxlab01/boost_1_77_0/

编译并安装

sudo make -j64

结果提示SHM_Buffer.hpp上的代码报错,后来发现当时不支持RISC-V平台编译,因此在此建议还是通过包管理器安装mysql。

注意,如果是之前已经卸载并重装过mysql,如果出现sock无法访问,请参考:

https://stackoverflow.com/questions/70813122/getting-error-mysql-service-failed-because-the-control-process-exited-with-erro

如果提示mysql.cnf出错,只要执行以下命令即可修复。​​​​​​​

sudo touch /etc/mysql/mysql.cnf(新建mysql.cnf文件)sudo dpkg --configure -a(重新配置)

初始化设置:

sudo mysql_secure_installation

图片

 

发现没有权限

进入mysql

sudo mysql

执行以下命令:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by '[你想设置的密码]';

然后退出mysql shell

接下来我们运行YCSB测试

获取YCSB

https://hub.yzuu.cf/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-0.17.0.tar.gz

https://github.com/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-0.17.0.tar.gz

如果wget下载太慢的话可以先在电脑上使用多线程下载工具下载到电脑上,然后上传到服务器上

传到服务器上后解压:

tar -xzvf ycsb-0.17.0.tar.gz

进入YCSB文

cd ycsb-0.17.0/

由于YCSB使用的Java语言编写,因此我们还需要JDK。不过系统以已经提前提供了JDK11,因此无需另外安装JDK。

登录数据库,创建数据库和表:​​​​​​​

create database ycsb;use ycsb;CREATE TABLE usertable (YCSB_KEY VARCHAR(255) PRIMARY KEY,FIELD0 TEXT, FIELD1 TEXT,FIELD2 TEXT, FIELD3 TEXT,FIELD4 TEXT, FIELD5 TEXT,FIELD6 TEXT, FIELD7 TEXT,FIELD8 TEXT, FIELD9 TEXT);

图片

 

编辑db.properties​​​​​​​

cd jdbc-binding/conf/mv db.properties db.properties.bakvim db.properties

db.properties内容如下:​​​​​​​

db.driver=com.mysql.cj.jdbc.Driverdb.url=jdbc:mysql://localhost:3306/ycsbdb.user=rootdb.passwd=[你的密码]

然后下载所需要的数据库驱动

wget

https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-j-8.0.33.tar.gz

解压并将驱动安装到指定文件夹下:​​​​​​​

tar -xzvf mysql-connector-j-8.0.33.tar.gz cp mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar ~/ycsb-0.17.0/jdbc-binding/lib/

载入数据:​​​​​​​

bin/ycsb load jdbc -P workloads/workloada -P ./jdbc-binding/conf/db.properties -cp ./jdbc-binding/lib/mysql-connector-j-8.0.33.jar

然后就是跑分时间:​​​​​​​

bin/ycsb run jdbc -P workloads/workloada -P ./jdbc-binding/conf/db.properties -cp ./jdbc-binding/lib/mysql-connector-j-8.0.33.jar

(上面两个步骤时间比较长,可以在等的时候顺便泡杯咖啡或者看一会番等等)

如果提示Python报错,那是因为YCSB使用的是Python 2代码,虽然有人试图将Python3支持与主仓库合并,但是却一直没有被合并进去(0.17.0依旧还是使用Python 2)。

先安装python2

sudo apt install python2

更改链接​​​​​​​

sudo rm /usr/bin/pythonsudo ln -s /usr/bin/python2 /usr/bin/python

测试一下:

python --version

如果提示Python 2.7.18那就说明已经成功将链接改到python 2了。

然后重新尝试执行载入数据并跑分

跑分结果:

[OVERALL], RunTime(ms), 1180970
[OVERALL], Throughput(ops/sec), 84.67615604122035
[TOTAL_GCS_Copy], Count, 127
[TOTAL_GC_TIME_Copy], Time(ms), 2214
[TOTAL_GC_TIME_%_Copy], Time(%), 0.18747300947526185
[TOTAL_GCS_MarkSweepCompact], Count, 6
[TOTAL_GC_TIME_MarkSweepCompact], Time(ms), 526
[TOTAL_GC_TIME_%_MarkSweepCompact], Time(%), 0.044539658077681905
[TOTAL_GCs], Count, 133
[TOTAL_GC_TIME], Time(ms), 2740
[TOTAL_GC_TIME_%], Time(%), 0.23201266755294375
[READ], Operations, 49947
[READ], AverageLatency(us), 1485119.70881134
[READ], MinLatency(us), 20192
[READ], MaxLatency(us), 66584575
[READ], 95thPercentileLatency(us), 3217407
[READ], 99thPercentileLatency(us), 3725311
[READ], Return=OK, 49947
[CLEANUP], Operations, 100
[CLEANUP], AverageLatency(us), 207285.48
[CLEANUP], MinLatency(us), 4828
[CLEANUP], MaxLatency(us), 6111231
[CLEANUP], 95thPercentileLatency(us), 999935
[CLEANUP], 99thPercentileLatency(us), 1299455
[UPDATE], Operations, 50053
[UPDATE], AverageLatency(us), 609746.7518030887
[UPDATE], MinLatency(us), 22224
[UPDATE], MaxLatency(us), 2666495
[UPDATE], 95thPercentileLatency(us), 1309695
[UPDATE], 99thPercentileLatency(us), 1539071
[UPDATE], Return=OK, 50053

总结:

从跑分结果来看,SG2042在数据库应用方面还是比较不错的,但是由于YCSB使用的是Python 2,而Python 2已于2020年1月1日停止支持,因此也希望YCSM尽快迁移到Python 3上。

参考资料:

MySQL中文官网:

https://www.mysql.com/cn/

YCSB的jdbc文档

https://github.com/brianfrankcooper/YCSB/tree/master/jdbc

Port ycsb to Python3 and also make it Python2 compatible #1421(Github)

https://github.com/brianfrankcooper/YCSB/pull/1421

MySQL server fails to build on RISC-V 64

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

正文完


  • 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性能(本篇)

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

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

相关文章

面试热题(反转链表)

给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 链表的题&#xff0c;大部分都可以用指针或者递归可以做&#xff0c;指针如果做不出来的话&#xff0c;…

大模型的数据隐私问题有解了,浙江大学提出联邦大语言模型

作者 | 小戏、Python 理想化的 Learning 的理论方法作用于现实世界总会面临着诸多挑战&#xff0c;从模型部署到模型压缩&#xff0c;从数据的可获取性到数据的隐私问题。而面对着公共领域数据的稀缺性以及私有领域的数据隐私问题&#xff0c;联邦学习&#xff08;Federated Le…

[保研/考研机试] KY30 进制转换-大整数转二进制 清华大学复试上机题 C++实现

描述 将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。 输入描述&#xff1a; 多组数据&#xff0c;每行为一个长度不超过30位的十进制非负整数。 &#xff08;注意是10进制数字的个数可能有30个&#xff0c;而非30bits的整数&#xff09; 输出描述&#xff…

java+springboot+mysql小区宠物管理系统

项目介绍&#xff1a; 使用javaspringbootmysql开发的小区宠物管理系统&#xff0c;系统包含超级管理员&#xff0c;系统管理员、用户角色&#xff0c;功能如下&#xff1a; 超级管理员&#xff1a;管理员管理&#xff1b;用户管理&#xff1b;宠物分类&#xff1b;宠物管理&…

Java 诊断工具 arthas-boot 安装步骤及常用命令

arthas 是 Alibaba 开源的 Java 诊断工具&#xff0c;它的特点是使用方便&#xff0c;功能强大。最重要的是&#xff0c;arthas可以监察生产环境下的项目&#xff0c;使用的过程无需重启项目。 官方文档&#xff1a;https://alibaba.github.io/arthas 一、安装 第1步&#xf…

MongoDB 备份与恢复

1.1 MongoDB的常用命令 mongoexport / mongoimport mongodump / mongorestore 有以上两组命令在备份与恢复中进行使用。 1.1.1 导出工具mongoexport Mongodb中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出的数据项&#xff0c…

DOCKER的容器

1. 什么是Container&#xff08;容器&#xff09; 要有Container首先要有Image&#xff0c;也就是说Container是通过image创建的。 Container是在原先的Image之上新加的一层&#xff0c;称作Container layer&#xff0c;这一层是可读可写的&#xff08;Image是只读的&#xff0…

多货币多汇率跨境电子商城建设(仓储管理、网络安全)

多货币多汇率跨境电子商城建设需要考虑到多个方面&#xff0c;包括仓储管理、网络安全、货币兑换、物流配送等。以下是具体的介绍&#xff1a; 一、仓储管理 仓储管理是跨境电子商城的重要组成部分&#xff0c;需要考虑到商品的存储、管理和分拣等环节。以下是需要注意的几个…

Zookeeper 面试题

一、ZooKeeper 基础题 1.1、Zookeeper 的典型应用场景 Zookeeper 是一个典型的发布/订阅模式的分布式数据管理与协调框架&#xff0c;开发人员可以使用它来进行分布式数据的发布和订阅。 通过对 Zookeeper 中丰富的数据节点进行交叉使用&#xff0c;配合 Watcher 事件通知机…

分享21年电赛F题-智能送药小车-做题记录以及经验分享

这里写目录标题 前言一、赛题分析1、车型选择2、巡线1、OpenMv循迹2、灰度循迹 3、装载药品4、识别数字5、LED指示6、双车通信7、转向方案1、开环转向2、位置环速度环闭环串级转向3、MPU6050转向 二、调试经验分享1、循迹2、识别数字3、转向4、双车通信5、逻辑处理6、心态问题 …

图的遍历之 深度优先搜索和广度优先搜索

深度优先搜索的图文介绍 1. 深度优先搜索介绍 图的深度优先搜索(Depth First Search)&#xff0c;和树的先序遍历比较类似。 它的思想&#xff1a;假设初始状态是图中所有顶点均未被访问&#xff0c;则从某个顶点v出发&#xff0c;首先访问该顶点&#xff0c;然后依次从它的各…

mysql获取第一个逗号前面的字符串

字符串内容如下&#xff1a; 统编版&#xff08;2019&#xff09;,必修下册,第五单元 ,第10课,10-2 在马克思墓前的讲话 /恩格斯, 想获取&#xff0c;第一个逗号前面的字符串&#xff0c;即&#xff1a;统编版&#xff08;2019&#xff09; 需要第一获取逗号的下标位置&…