当前位置: 首页 > news >正文

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

相关文章:

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云游在旅游行业中的应用正在快速增长&#xff0c;为游客带来沉浸式体验的同时&#xff0c;也为文旅景区提供了新的营销方式。很多人说VR全景展示是虚假的&#xff0c;比不上真实的景区触感&#xff0c;人文景区真的有必要做VR云游吗&#xff1f;我的答案是很有必要。 如果你认…...

【字节跳动青训营】后端笔记整理-1 | Go语言入门指南:基础语法和常用特性解析

**本人是第六届字节跳动青训营&#xff08;后端组&#xff09;的成员。本文由博主本人整理自该营的日常学习实践&#xff0c;首发于稀土掘金&#xff1a;&#x1f517;Go语言入门指南&#xff1a;基础语法和常用特性解析 | 青训营 本文主要梳理自第六届字节跳动青训营&#xff…...

3.解构赋值

解构赋值是一种快速为变量赋值的简洁语法&#xff0c;本质上仍然是为变量赋值。 3.1数组解构 数组解构是 将数组的单元值快速批量赋值给一系列变量 的简洁语法 1.基本语法: &#xff08;1&#xff09;赋值运算符左侧的[ ]用于批量声明变量&#xff0c;右侧数组的单元值将被赋…...

ChatGPT在智能游戏和游戏AI中的应用如何?

ChatGPT在智能游戏和游戏AI领域具有广泛的应用潜力&#xff0c;可以为游戏体验增添智能和交互性&#xff0c;同时也有助于游戏开发者创造更丰富、更引人入胜的游戏内容。以下将详细探讨ChatGPT在智能游戏和游戏AI中的应用。 ## 1. 游戏角色的智能化 在角色扮演游戏&#xff0…...

【安卓串口通信】

安卓串口通信需要使用到串口适配器和USB OTG线。首先需要在Android设备上安装串口调试助手或其他支持串口通信的应用程序。然后将串口适配器连接到Android设备&#xff0c;使用USB OTG线连接即可。 接下来&#xff0c;您需要打开串口调试助手或其他应用程序&#xff0c…...

电气测试相关

项目&#xff1a; 长期过电压 瞬态过电压 瞬态欠压 跳跃启动 卸载 纹波电压 电源电压缓慢下降和上升 电源电压缓慢下降、快速上升 复位行为 短暂中断 启动脉冲 带电气系统控制的电压曲线 引脚中断 连接器中断 反极性 信号线和负载电路短路 启动行为 对分流不…...

ProsperEx 的野望:借势 RWA 浪潮,构建全新的链上衍生品体系

真实资产代币化&#xff08;RWA&#xff09;并不是一个新概念了&#xff0c;以 USDT、USDC、DAI 等一系列美元稳定币是行业内最早的 RWA 概念资产&#xff0c;这些资产以美元为价值基础通过不同信用的机制&#xff0c;将其价值映射至链上&#xff0c;并以加密货币的形式体现&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使用说明

【分享成果&#xff0c;随喜正能量】时光绽放并蒂莲&#xff0c;更是一份殷殷嘱托&#xff0c;更是一份诚挚祝福&#xff0c;是一份时光馈赠&#xff0c;又是一份时光陪伴。。 我的教程一共九套及VBA汉英手册一部&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解…...

Autocasting和GradScaler

Autocasting和GradScaler是什么 torch.autocast 是一个上下文管理器&#xff0c;它可以将数据类型从 float32 自动转换为 float16。这可以提高性能&#xff0c;因为 float16 比 float32 更小&#xff0c;因此可以更快地处理。torch.cuda.amp.GradScaler 是一个类&#xff0c;它…...

头条移动端项目Day03 —— 自媒体素材管理、自媒体文章管理、自媒体文章发布

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…...

【ARM 嵌入式 编译系列 9-- GCC 编译符号表(Symbol Table)的详细介绍】

文章目录 什么是符号表符号表的作用是什么如何生成符号表符号表中的数据类型有哪些&#xff1f;符号表与map文件什么关系&#xff1f; 上篇文章&#xff1a;ARM 嵌入式 番外篇 编译系列 8 – RT-Thread 编译命令 Scons 详细讲解 什么是符号表 在 ARM GCC 中&#xff0c;符号表…...

Apache Doris 入门教程27:BITMAP精准去重和HLL近似去重

BITMAP 精准去重 背景​ Doris原有的Bitmap聚合函数设计比较通用&#xff0c;但对亿级别以上bitmap大基数的交并集计算性能较差。排查后端be的bitmap聚合函数逻辑&#xff0c;发现主要有两个原因。一是当bitmap基数较大时&#xff0c;如bitmap大小超过1g&#xff0c;网络/磁盘…...

bug总结

bug总是意外的出现&#xff0c;对于语法问题导致的bug是容易排查的&#xff0c;对于逻辑的bug和环境的bug往往令人头疼。在这里&#xff0c;将这些收集起来。、 【1-8来自对博客认输了&#xff01;这些Bug让我目瞪口呆&#xff01;_电脑放青藏高原共振是真的?_Truda.的博客-C…...

DC电源模块的高转换率

BOSHIDA DC电源模块的高转换率 DC电源模块是将交流电转换为直流电供应设备使用的装置&#xff0c;是现代工业制造和电子产品中不可或缺的组件之一。高转换率是DC电源模块最重要的性能之一&#xff0c;它直接影响着电源的效率、功耗和发热等方面&#xff0c;因此也深受设计师的关…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...