實驗介紹:
YCSB(全稱為Yahoo! Cloud Serving Benchmark),該性能測試工具由Java語言編寫(在之前的MC文章中也提到過這個,如果沒看過的讀者可以去看看之前MC那一期),主要用于云端或者服務(wù)器端的數(shù)據(jù)庫性能測試工具,其內(nèi)部涵蓋了常見的NoSQL數(shù)據(jù)庫產(chǎn)品,如Cassandra、MongoDB、HBase、Redis等等。
MySQL數(shù)據(jù)庫服務(wù)是一個完全托管的數(shù)據(jù)庫服務(wù),可使用世界上最受歡迎的開源數(shù)據(jù)庫來部署云原生應(yīng)用程序。它是百分百由MySQL原廠開發(fā),管理和提供支持。
當然,本次實驗所用到的平臺還是衡山-2(HS-2)RISC-V通用主板,該主板是一款專為開發(fā)者設(shè)計的標準mATX主板,該主板最高支持128GB內(nèi)存,通過類似PC的豐富的接口和較強的兼容性,賦予開發(fā)者桌面級的RISC-V開發(fā)體驗。
HS-2主板搭載了一顆國產(chǎn)的服務(wù)器級RISC-V 64核處理器(SG2042)。SG2042是目前已量產(chǎn)的性能最高的RISC-V處理器,主要針對高性能計算領(lǐng)域需求設(shè)計,適用于科學(xué)計算、工程計算、AI計算、融合計算等大算力應(yīng)用場景。
實驗材料:
MySQL/MySQL源代碼
一臺SG2042服務(wù)器(HS-2)
TPCC源代碼
YCSB源代碼
JDK(本教程使用系統(tǒng)自帶的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太慢,可以先提前下載到電腦上,然后再傳到服務(wù)器上。
解壓并進入
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
結(jié)果提示SHM_Buffer.hpp上的代碼報錯,后來發(fā)現(xiàn)當時不支持RISC-V平臺編譯,因此在此建議還是通過包管理器安裝mysql。
注意,如果是之前已經(jīng)卸載并重裝過mysql,如果出現(xiàn)sock無法訪問,請參考:
https://stackoverflow.com/questions/70813122/getting-error-mysql-service-failed-because-the-control-process-exited-with-erro
如果提示mysql.cnf出錯,只要執(zhí)行以下命令即可修復(fù)。
sudo touch /etc/mysql/mysql.cnf(新建mysql.cnf文件)
sudo dpkg --configure -a(重新配置)
初始化設(shè)置:
sudo mysql_secure_installation
發(fā)現(xiàn)沒有權(quán)限
進入mysql
sudo mysql
執(zhí)行以下命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by '[你想設(shè)置的密碼]';
然后退出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下載太慢的話可以先在電腦上使用多線程下載工具下載到電腦上,然后上傳到服務(wù)器上
傳到服務(wù)器上后解壓:
tar -xzvf ycsb-0.17.0.tar.gz
進入YCSB文件夾
cd ycsb-0.17.0/
由于YCSB使用的Java語言編寫,因此我們還需要JDK。不過系統(tǒng)以已經(jīng)提前提供了JDK11,因此無需另外安裝JDK。
登錄數(shù)據(jù)庫,創(chuàng)建數(shù)據(jù)庫和表:
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ù)庫驅(qū)動
wget
https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-j-8.0.33.tar.gz
解壓并將驅(qū)動安裝到指定文件夾下:
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
然后就是跑分時間:
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那就說明已經(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é)果來看,SG2042在數(shù)據(jù)庫應(yīng)用方面還是比較不錯的,但是由于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
正文完
- About HS-2
HS-2 RISC-V通用主板是澎峰科技與合作伙伴共同研發(fā)的一款專為開發(fā)者設(shè)計的標準mATX主板,它預(yù)裝了澎峰科技為RISC-V高性能服務(wù)器定制開發(fā)的軟件包,包括各種標準bencmark、支持V擴展的GCC編譯器、計算庫、中間件以及多種典型服務(wù)器應(yīng)用程序。
HS-2 RISC-V通用主板搭載了一顆國產(chǎn)RISC-V 64核處理器(SG2042)。SG2042是目前已量產(chǎn)的性能最高的RISC-V處理器,主要針對高性能計算領(lǐng)域需求設(shè)計,適用于科學(xué)計算、工程計算、AI計算、融合計算等大算力應(yīng)用場景。
- 關(guān)于RISC-V公共測試平臺
RISC-V高性能處理器公共測試云平臺 ·快速使用指南,下載鏈接:https://www.kdocs.cn/l/cmnYcyFIlVRx
- RISC-V公共測試云平臺系列文章
1. RISC-V公測平臺發(fā)布 ·Stream帶寬完整測試
2. RISC-V公測平臺發(fā)布 · 我的世界MohistMC
3. RISC-V公測平臺發(fā)布 · 第一個WEB Server“Hello RISC-V world!”
4. RISC-V公測平臺發(fā)布 ·如何在SG2042上玩轉(zhuǎn)k3s
5. “RISC-V成長日記” blog發(fā)布,第一個運行在RISC-V服務(wù)器上的blog?
6. RISC-V公測平臺發(fā)布:如何在SG2042上玩轉(zhuǎn)OpenMPI
7. RISC-V公測平臺發(fā)布:Compiling The Fedora Linux Kernel Natively on RISC-V
8. RISC-V公測平臺發(fā)布 · Unix Bench完整測試
9. RISC-V公測平臺發(fā)布 · 使用YCSB測試SG2042上的MySQL性能(本篇)
-
JAVA
+關(guān)注
關(guān)注
19文章
2952瀏覽量
104482 -
MySQL
+關(guān)注
關(guān)注
1文章
797瀏覽量
26399 -
RISC-V
+關(guān)注
關(guān)注
44文章
2204瀏覽量
45958 -
澎峰科技
+關(guān)注
關(guān)注
0文章
48瀏覽量
3156
發(fā)布評論請先 登錄
相關(guān)推薦
評論