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.gzcp 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公共测试云平台系列文章
-
RISC-V公测平台发布 ·Stream带宽完整测试
-
RISC-V公测平台发布 · 我的世界MohistMC
-
RISC-V公测平台发布 · 第一个WEB Server“Hello RISC-V world!”
-
RISC-V公测平台发布 ·如何在SG2042上玩转k3s
-
“RISC-V成长日记” blog发布,第一个运行在RISC-V服务器上的blog?
-
RISC-V公测平台发布:如何在SG2042上玩转OpenMPI
-
RISC-V公测平台发布:Compiling The Fedora Linux Kernel Natively on RISC-V
-
RISC-V公测平台发布 · Unix Bench完整测试
-
RISC-V公测平台发布 · 使用YCSB测试SG2042上的MySQL性能(本篇)
相关文章:
RISC-V公测平台发布 · 使用YCSB测试SG2042上的MySQL性能
实验介绍: YCSB(全称为Yahoo! Cloud Serving Benchmark),该性能测试工具由Java语言编写(在之前的MC文章中也提到过这个,如果没看过的读者可以去看看之前MC那一期),主要用于云端或者…...
母婴即时零售行业数据可视化分析
对新晋父母来说,很多母婴用品如同一位贴心的助手,为他们的宝宝提供温暖和呵护。从婴儿床垫到可爱的拼图玩具,每一件用品都是为宝宝的成长和发展量身定制。对于繁忙的父母们而言,这些用品不仅帮助照顾孩子,更是为他们减…...
快速解决IDEA中类的图标变成J,不是C的情况
有时候导入新的项目后,会出现如下情况,类的图标变成J,如图: 直接上解决方法: 找到项目的pom.xml,右键,在靠近最下方的位置找到Add as Maven Project,点击即可。 此时,一般类的图标就…...
vue学习笔记
1.官网 v2官网 https://v2.cn.vuejs.org/ v3官网 https://cn.vuejs.org/ 2.vue引入 在线引入 <script src"https://cdn.jsdelivr.net/npm/vue2.7.14/dist/vue.js"></script> 下载引入(下载链接) https://v2.cn.vuejs.org/js/vue.js 3.初始化渲…...
难解的bug
android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground(): ServiceRecord 【Android TimeCat】 解决 context.startforegroundservice() did not then call service.startforeground() | XiChens Blog http://www…...
人文景区有必要做VR云游吗?如何满足游客出行需求?
VR云游在旅游行业中的应用正在快速增长,为游客带来沉浸式体验的同时,也为文旅景区提供了新的营销方式。很多人说VR全景展示是虚假的,比不上真实的景区触感,人文景区真的有必要做VR云游吗?我的答案是很有必要。 如果你认…...
【字节跳动青训营】后端笔记整理-1 | Go语言入门指南:基础语法和常用特性解析
**本人是第六届字节跳动青训营(后端组)的成员。本文由博主本人整理自该营的日常学习实践,首发于稀土掘金:🔗Go语言入门指南:基础语法和常用特性解析 | 青训营 本文主要梳理自第六届字节跳动青训营ÿ…...
3.解构赋值
解构赋值是一种快速为变量赋值的简洁语法,本质上仍然是为变量赋值。 3.1数组解构 数组解构是 将数组的单元值快速批量赋值给一系列变量 的简洁语法 1.基本语法: (1)赋值运算符左侧的[ ]用于批量声明变量,右侧数组的单元值将被赋…...
ChatGPT在智能游戏和游戏AI中的应用如何?
ChatGPT在智能游戏和游戏AI领域具有广泛的应用潜力,可以为游戏体验增添智能和交互性,同时也有助于游戏开发者创造更丰富、更引人入胜的游戏内容。以下将详细探讨ChatGPT在智能游戏和游戏AI中的应用。 ## 1. 游戏角色的智能化 在角色扮演游戏࿰…...
【安卓串口通信】
安卓串口通信需要使用到串口适配器和USB OTG线。首先需要在Android设备上安装串口调试助手或其他支持串口通信的应用程序。然后将串口适配器连接到Android设备,使用USB OTG线连接即可。 接下来,您需要打开串口调试助手或其他应用程序,…...
电气测试相关
项目: 长期过电压 瞬态过电压 瞬态欠压 跳跃启动 卸载 纹波电压 电源电压缓慢下降和上升 电源电压缓慢下降、快速上升 复位行为 短暂中断 启动脉冲 带电气系统控制的电压曲线 引脚中断 连接器中断 反极性 信号线和负载电路短路 启动行为 对分流不…...
ProsperEx 的野望:借势 RWA 浪潮,构建全新的链上衍生品体系
真实资产代币化(RWA)并不是一个新概念了,以 USDT、USDC、DAI 等一系列美元稳定币是行业内最早的 RWA 概念资产,这些资产以美元为价值基础通过不同信用的机制,将其价值映射至链上,并以加密货币的形式体现&am…...
Spring Data JPA 详解
目录 一、概述1.1 JPA简介1.2 Spring Data JPA简介 二、配置及应用2.1 环境配置2.2 依赖添加2.3 实体类创建2.4 Repository接口创建2.5 示例程序运行 三、实体映射3.1 注解3.2 关系映射 四、Repository接口4.1 基本增删改查4.2 自定义查询方法4.3 使用 Sort 和 Pageable 进行排…...
NZ系列工具NZ02:VBA读取PDF使用说明
【分享成果,随喜正能量】时光绽放并蒂莲,更是一份殷殷嘱托,更是一份诚挚祝福,是一份时光馈赠,又是一份时光陪伴。。 我的教程一共九套及VBA汉英手册一部,分为初级、中级、高级三大部分。是对VBA的系统讲解…...
Autocasting和GradScaler
Autocasting和GradScaler是什么 torch.autocast 是一个上下文管理器,它可以将数据类型从 float32 自动转换为 float16。这可以提高性能,因为 float16 比 float32 更小,因此可以更快地处理。torch.cuda.amp.GradScaler 是一个类,它…...
头条移动端项目Day03 —— 自媒体素材管理、自媒体文章管理、自媒体文章发布
❤ 作者主页:欢迎来到我的技术博客😎 ❀ 个人介绍:大家好,本人热衷于Java后端开发,欢迎来交流学习哦!( ̄▽ ̄)~* 🍊 如果文章对您有帮助,记得关注、点赞、收藏、…...
【ARM 嵌入式 编译系列 9-- GCC 编译符号表(Symbol Table)的详细介绍】
文章目录 什么是符号表符号表的作用是什么如何生成符号表符号表中的数据类型有哪些?符号表与map文件什么关系? 上篇文章:ARM 嵌入式 番外篇 编译系列 8 – RT-Thread 编译命令 Scons 详细讲解 什么是符号表 在 ARM GCC 中,符号表…...
Apache Doris 入门教程27:BITMAP精准去重和HLL近似去重
BITMAP 精准去重 背景 Doris原有的Bitmap聚合函数设计比较通用,但对亿级别以上bitmap大基数的交并集计算性能较差。排查后端be的bitmap聚合函数逻辑,发现主要有两个原因。一是当bitmap基数较大时,如bitmap大小超过1g,网络/磁盘…...
bug总结
bug总是意外的出现,对于语法问题导致的bug是容易排查的,对于逻辑的bug和环境的bug往往令人头疼。在这里,将这些收集起来。、 【1-8来自对博客认输了!这些Bug让我目瞪口呆!_电脑放青藏高原共振是真的?_Truda.的博客-C…...
DC电源模块的高转换率
BOSHIDA DC电源模块的高转换率 DC电源模块是将交流电转换为直流电供应设备使用的装置,是现代工业制造和电子产品中不可或缺的组件之一。高转换率是DC电源模块最重要的性能之一,它直接影响着电源的效率、功耗和发热等方面,因此也深受设计师的关…...
前端数据可视化优化
前端数据可视化优化:提升用户体验的关键 在当今数据驱动的时代,前端数据可视化已成为企业和开发者展示复杂信息的核心工具。无论是电商平台的销售数据、金融行业的实时交易趋势,还是物联网设备的运行状态,清晰直观的可视化图表能…...
开发者实操手册:HY-MT1.8B通过Chainlit构建对话界面
开发者实操手册:HY-MT1.8B通过Chainlit构建对话界面 1. 开篇:为什么你需要一个翻译对话界面? 想象一下,你正在开发一个多语言应用,或者需要处理大量跨语言的文档。传统的翻译工具要么是网页版,要么是API调…...
为什么92%的AI电商项目止步POC?SITS2026生产级实践告诉你:模型服务化不是加API,而是重构5层数据契约与3类人机协同协议
第一章:SITS2026案例:AI原生电商平台实践 2026奇点智能技术大会(https://ml-summit.org) SITS2026是面向下一代电商基础设施的AI原生平台原型,由阿里云与浙江大学联合实验室在2026奇点智能技术大会上首次发布。该平台摒弃传统“AI”叠加模式…...
基于MAVROS的Jetson Nano与PX4飞控高效通信实践指南
1. 为什么需要MAVROS通信? 在无人机开发中,机载电脑(如Jetson Nano)和飞控(如PX4)的协同工作至关重要。想象一下,Jetson Nano就像是无人机的大脑,负责处理复杂的视觉识别、路径规划等…...
数据库分库分表实战
数据库分库分表实战:应对海量数据的高效策略 随着互联网业务的快速发展,单库单表的数据库架构逐渐暴露出性能瓶颈。当数据量达到千万甚至亿级时,查询延迟、写入拥堵等问题频发,分库分表成为解决这一难题的核心方案。本文将深入探…...
别再让Halcon拉伸你的图像了!手把手教你用dev_set_part实现完美等比例显示
Halcon图像显示优化:用dev_set_part实现完美等比例适配 在机器视觉项目开发中,图像显示的准确性直接影响测量结果和判断效率。许多Halcon初学者都会遇到一个令人头疼的问题——当图像被加载到控件窗口时,系统默认的拉伸显示方式会破坏原始比例…...
Qwen-Image-Edit场景解析:适合个人创作、电商美工、内容生产的AI工具
Qwen-Image-Edit场景解析:适合个人创作、电商美工、内容生产的AI工具 你有没有遇到过这样的烦恼?拍了一张不错的照片,但背景太杂乱,想换个干净的;给产品拍了主图,但总觉得不够吸引人,想加点创意…...
从‘乐学小鹅’到‘com.tencent.k12gy’:一次Frida注入失败带给我的Android应用‘身份证’认知升级
从应用显示名到包名:一次Frida注入失败引发的Android应用标识深度思考 那天下午,我盯着终端里刺眼的红色错误信息,手指悬在键盘上方迟迟没有动作。Failed to spawn: unable to find application with identifier 乐学小鹅——这个看似简单的报…...
打造自己的信道编码工具箱——Turbo、LDPC、极化码三合一
作者:绳匠_ZZ0从零开始,把现代编码三巨头整合到一个C语言项目中,实现编码、译码、误码率测试一体化📦 前言:为什么我要做这个工具箱?过去几个月,我陆续学习了Turbo码、LDPC码和极化码。每次写代…...
Visualized BGE批量推理实战:如何用Python代码将图片编码速度提升3倍
Visualized BGE批量推理实战:如何用Python代码将图片编码速度提升3倍 在当今多模态AI应用爆炸式增长的时代,高效处理图像嵌入已成为开发者面临的普遍挑战。Visualized BGE作为支持中文的多模态嵌入模型,其性能优化直接关系到实际业务落地的可…...
