加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專(zhuān)業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

RISC-V公測(cè)平臺(tái)發(fā)布 · 使用YCSB測(cè)試SG2042上的MySQL性能

2023/08/11
3295
閱讀需 17 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

實(shí)驗(yàn)介紹:

YCSB(全稱(chēng)為Yahoo! Cloud Serving Benchmark),該性能測(cè)試工具由Java語(yǔ)言編寫(xiě)(在之前的MC文章中也提到過(guò)這個(gè),如果沒(méi)看過(guò)的讀者可以去看看之前MC那一期),主要用于云端或者服務(wù)器端的數(shù)據(jù)庫(kù)性能測(cè)試工具,其內(nèi)部涵蓋了常見(jiàn)的NoSQL數(shù)據(jù)庫(kù)產(chǎn)品,如Cassandra、MongoDB、HBase、Redis等等。

MySQL數(shù)據(jù)庫(kù)服務(wù)是一個(gè)完全托管的數(shù)據(jù)庫(kù)服務(wù),可使用世界上最受歡迎的開(kāi)源數(shù)據(jù)庫(kù)來(lái)部署云原生應(yīng)用程序。它是百分百由MySQL原廠開(kāi)發(fā),管理和提供支持。

當(dāng)然,本次實(shí)驗(yàn)所用到的平臺(tái)還是衡山-2(HS-2)RISC-V通用主板,該主板是一款專(zhuān)為開(kāi)發(fā)者設(shè)計(jì)的標(biāo)準(zhǔn)mATX主板,該主板最高支持128GB內(nèi)存,通過(guò)類(lèi)似PC的豐富的接口和較強(qiáng)的兼容性,賦予開(kāi)發(fā)者桌面級(jí)的RISC-V開(kāi)發(fā)體驗(yàn)。

HS-2主板搭載了一顆國(guó)產(chǎn)的服務(wù)器級(jí)RISC-V 64核處理器(SG2042)。SG2042是目前已量產(chǎn)的性能最高的RISC-V處理器,主要針對(duì)高性能計(jì)算領(lǐng)域需求設(shè)計(jì),適用于科學(xué)計(jì)算、工程計(jì)算、AI計(jì)算、融合計(jì)算等大算力應(yīng)用場(chǎng)景。

實(shí)驗(yàn)材料:

MySQL/MySQL源代碼

一臺(tái)SG2042服務(wù)器(HS-2)

TPCC源代碼

YCSB源代碼

JDK(本教程使用系統(tǒng)自帶的JDK 11)

實(shí)驗(yàn)過(guò)程:

安裝MySQL:

方式一:直接通過(guò)apt安裝

sudo apt install mysql-server

方式二:編譯安裝(此路不通)

下載源碼

wget

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

如果wget太慢,可以先提前下載到電腦上,然后再傳到服務(wù)器上。

解壓并進(jìn)入

tar -xzvf mysql-8.0.34.tar.gz
cd mysql-8.0.34/
mkdir build
cd build/

由于MySQL需要boost,而且直接下載boost比較慢,因此我們選擇手動(dòng)下載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/

運(yùn)行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

結(jié)果提示SHM_Buffer.hpp上的代碼報(bào)錯(cuò),后來(lái)發(fā)現(xiàn)當(dāng)時(shí)不支持RISC-V平臺(tái)編譯,因此在此建議還是通過(guò)包管理器安裝mysql。

注意,如果是之前已經(jīng)卸載并重裝過(guò)mysql,如果出現(xiàn)sock無(wú)法訪問(wèn),請(qǐng)參考:

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

如果提示mysql.cnf出錯(cuò),只要執(zhí)行以下命令即可修復(fù)。

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

初始化設(shè)置:

sudo mysql_secure_installation

發(fā)現(xiàn)沒(méi)有權(quán)限

進(jìn)入mysql

sudo mysql

執(zhí)行以下命令:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by '[你想設(shè)置的密碼]';

然后退出mysql shell

接下來(lái)我們運(yùn)行YCSB測(cè)試

獲取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下載太慢的話可以先在電腦上使用多線程下載工具下載到電腦上,然后上傳到服務(wù)器上

傳到服務(wù)器上后解壓:

tar -xzvf ycsb-0.17.0.tar.gz

進(jìn)入YCSB文件夾

cd ycsb-0.17.0/

由于YCSB使用的Java語(yǔ)言編寫(xiě),因此我們還需要JDK。不過(guò)系統(tǒng)以已經(jīng)提前提供了JDK11,因此無(wú)需另外安裝JDK。

登錄數(shù)據(jù)庫(kù),創(chuàng)建數(shù)據(jù)庫(kù)和表:

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內(nèi)容如下:
db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/ycsb
db.user=root
db.passwd=[你的密碼]

然后下載所需要的數(shù)據(jù)庫(kù)驅(qū)動(dòng)

wget

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

解壓并將驅(qū)動(dòng)安裝到指定文件夾下:

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/

載入數(shù)據(jù):

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

然后就是跑分時(shí)間:

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

(上面兩個(gè)步驟時(shí)間比較長(zhǎng),可以在等的時(shí)候順便泡杯咖啡或者看一會(huì)番等等)

如果提示Python報(bào)錯(cuò),那是因?yàn)閅CSB使用的是Python 2代碼,雖然有人試圖將Python3支持與主倉(cāng)庫(kù)合并,但是卻一直沒(méi)有被合并進(jìn)去(0.17.0依舊還是使用Python 2)。

先安裝python2

sudo apt install python2

更改鏈接

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

測(cè)試一下:

python --version

如果提示Python 2.7.18那就說(shuō)明已經(jīng)成功將鏈接改到python 2了。

然后重新嘗試執(zhí)行載入數(shù)據(jù)并跑分

跑分結(jié)果:

[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

總結(jié):

從跑分結(jié)果來(lái)看,SG2042在數(shù)據(jù)庫(kù)應(yīng)用方面還是比較不錯(cuò)的,但是由于YCSB使用的是Python 2,而Python 2已于2020年1月1日停止支持,因此也希望YCSM盡快遷移到Python 3上。

參考資料:

MySQL中文官網(wǎng):

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

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
ATMEGA328P-MU 1 Microchip Technology Inc IC MCU 8BIT 32KB FLASH 32VQFN

ECAD模型

下載ECAD模型
$2.5 查看
MKL17Z256VMP4 1 Freescale Semiconductor Kinetis L 32-bit MCU, ARM Cortex-M0+ core, 256KB Flash, 48MHz, MAPBGA 64

ECAD模型

下載ECAD模型
$5.01 查看
PIC24EP512GU810-I/PT 1 Microchip Technology Inc 16-BIT, FLASH, 60 MHz, MICROCONTROLLER, PQFP100, 12 X 12 MM, 1 MM HEIGHT, LEAD FREE, PLASTIC, TQFP-100

ECAD模型

下載ECAD模型
$10.44 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜