加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

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

2023/08/11
3479
阅读需 17 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

实验介绍:

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.gz
cd mysql-8.0.34/
mkdir build
cd 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.bak
vim db.properties
db.properties内容如下:
db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/ycsb
db.user=root
db.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/python
sudo 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

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
ATSAMA5D35A-CUR 1 Microchip Technology Inc IC MCU 32BIT 160KB ROM 324LFBGA
$13.4 查看
ATSAM4S16BA-ANR 1 Microchip Technology Inc RISC Microcontroller
$5.12 查看
USB2514BI-AEZG 1 Microchip Technology Inc UNIVERSAL SERIAL BUS CONTROLLER, QCC36, 6 X 6 MM, 0.50 MM PITCH, ROHS COMPLIANT, QFN-36

ECAD模型

下载ECAD模型
$3.89 查看

相关推荐

电子产业图谱

主要关注HPC、AI、RISC-V等领域,科技行业从业二十余载。洞悉前沿科技,擅长战略规划。