日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

vdbench - 性能压力测试工具

發(fā)布時(shí)間:2023/12/31 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vdbench - 性能压力测试工具 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ? 《存儲(chǔ)工具系列文章》主要介紹存儲(chǔ)相關(guān)的測(cè)試和調(diào)試工具,包括不限于dd、fio、vdbench、iozone、iometer、cosbench等性能負(fù)載工具,及strace等調(diào)試工具。


1. 概述

????????vdbench是一個(gè)I/O工作負(fù)載生成器,通常用于驗(yàn)證數(shù)據(jù)完整性和度量直接附加(或網(wǎng)絡(luò)連接)存儲(chǔ)性能。

????????vdbench可以運(yùn)行在windows、linux環(huán)境,可用于測(cè)試文件系統(tǒng)或塊設(shè)備基準(zhǔn)性能。

2. 安裝部署

2.1?? ?Linux平臺(tái)

????????一、安裝jdk

[root@node1 vdbench50406]# rpm -ivh jdk-8u144-linux-x64.rpm

????????配置jdk環(huán)境變量,明確jdk安裝目錄,本次實(shí)踐為/usr/java/jdk1.8.0_144

[root@node1 vdbench50406]# echo 'JAVA_HOME=/usr/java/jdk1.8.0_144' >> /etc/profile [root@node1 vdbench50406]# echo 'PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile [root@node1 vdbench50406]# echo 'CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /etc/profile [root@node1 vdbench50406]# echo 'export PATH' >> /etc/profile [root@node1 vdbench50406]# echo 'export JAVA_HOME' >> /etc/profile [root@node1 vdbench50406]# echo 'export CLASSPTH' >> /etc/profile

????????使環(huán)境變量生效

[root@node1 vdbench50406]# source /etc/profile

????????二、vdbench解壓

????????解壓縮vdbench安裝包,切換到vdbench解壓縮目錄執(zhí)行對(duì)應(yīng)參數(shù)文件即可

[root@node1 vdbench50406]# unzip vdbench50406.zip

2.2?? ?Windows平臺(tái)

????????一、部署jdk環(huán)境

????????直接安裝jdk軟件即可(環(huán)境變量在安裝完成后會(huì)自動(dòng)添加)

????????二、vdbench使用

????????解壓縮vdbench軟件包,切換到vdbench解壓縮目錄執(zhí)行對(duì)應(yīng)參數(shù)文件即可

3.?配置參數(shù)說明

????????vdbench可用于文件系統(tǒng)及塊設(shè)備基準(zhǔn)性能測(cè)試,以下主要介紹文件系統(tǒng)及塊存儲(chǔ)的常用測(cè)試參數(shù)

????????vdbench所有測(cè)試參數(shù)都定義到一個(gè)參數(shù)文件內(nèi),在運(yùn)行時(shí)按照順序被讀取執(zhí)行相應(yīng)操作,在參數(shù)文件定義時(shí)需要執(zhí)行順序進(jìn)行定義。

3.1 文件系統(tǒng)

????????文件系統(tǒng)參數(shù)文件定義順序?yàn)?#xff1a;HD、FSD、FWD、RD。

3.1.1 hd(host define)

? ? ? ? 非必選項(xiàng),單機(jī)運(yùn)行時(shí)不需要配置HD參數(shù),一般只有在多主機(jī)聯(lián)機(jī)測(cè)試時(shí)才需要配置。

hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh hd=hd1,system=node241 hd=hd2,system=node242 hd=hd3,system=node243

????????hd:標(biāo)識(shí)主機(jī)定義的名稱,多主機(jī)運(yùn)行時(shí),可以使用hd1、hd2、hd3…區(qū)分

????????system:主機(jī)IP地址或主機(jī)名

????????vdbench:vdbench執(zhí)行文件存放路徑,當(dāng)多主機(jī)存放路徑不同時(shí),可在hd定義時(shí)單獨(dú)指定

????????user:slave和master通信使用用戶

????????shell:可選值為rsh、ssh或vdbench,默認(rèn)值為rsh,多主機(jī)聯(lián)機(jī)測(cè)試時(shí),mater和slave主機(jī)間通信方式

  • 當(dāng)參數(shù)值為rsh時(shí),需要配置master和slave主機(jī)rsh互信,考慮到rsh使用明文傳輸,安全級(jí)別不夠,通常情況下不建議使用這種通信方式;
  • 當(dāng)參數(shù)值為ssh時(shí),需要配置master和slave主機(jī)ssh互信,通常Linux主機(jī)聯(lián)機(jī)時(shí)使用此通信方式;
  • 當(dāng)參數(shù)值為vdbench,需要在所有slave主機(jī)運(yùn)行vdbench rsh啟用vdbench本身的rsh守護(hù)進(jìn)程,通常Window主機(jī)聯(lián)機(jī)時(shí)使用此通信方式。

3.1.2 FSD(File System Define)

fsd=default,openflags=directio,depth=2,width=3,files=2,size=128k fsd=fsd1,anchor=/mnt/client1 fsd=fsd2,anchor=/mnt/client2 fsd=fsd3,anchor=/mnt/client3

????????fsd:標(biāo)識(shí)文件系統(tǒng)定義的名稱,多文件系統(tǒng)時(shí)(fsd1、fsd2、fsd3…),可以指定default(將相同的參數(shù)作為所有fsd的默認(rèn)值)

????????openflags:通過設(shè)置為o_direct或directio,以無緩沖緩存的方式進(jìn)行讀寫操作

????????anchor:文件寫入目錄,linux指定路徑為/dir01;windows指定路徑為E:\dir01;

????????depth:創(chuàng)建目錄層級(jí)數(shù)(即目錄深度)

????????width:每層文件夾的子文件夾數(shù)

????????files:測(cè)試文件個(gè)數(shù)(vdbench測(cè)試過程中會(huì)生成多層級(jí)目錄結(jié)構(gòu),實(shí)際只有最后一層目錄會(huì)生成測(cè)試文件)

????????size:每個(gè)測(cè)試文件大小

????????**distribution= ** 可選值為bottom或all,默認(rèn)為bottom

–當(dāng)參數(shù)值為bottom時(shí),程序只在最后一層目錄寫入測(cè)試文件

–當(dāng)參數(shù)值為all時(shí),程序在每一層目錄都寫入測(cè)試文件

????????shared:可選值為yes或no,默認(rèn)值為no,一般只有在多主機(jī)聯(lián)機(jī)測(cè)試時(shí)指定

????????vdbench不允許不同的slave之間共享同一個(gè)目錄結(jié)構(gòu)下的所有文件,因?yàn)檫@樣會(huì)帶來很大的開銷,但是它們?cè)试S共享同一個(gè)目錄結(jié)構(gòu)。加入設(shè)置了shared=yes,那么不同的slave可以平分一個(gè)目錄下所有的文件來進(jìn)行訪問,相當(dāng)于每個(gè)slave有各自等分的訪問區(qū)域,因此不能測(cè)試多個(gè)客戶的對(duì)同一個(gè)文件的讀寫–當(dāng)多主機(jī)聯(lián)機(jī)測(cè)試時(shí),寫入的根目錄anchor為同一個(gè)路徑時(shí),需要指定參數(shù)值為yes

????????說明

hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh hd=hd1,system=node1 hd=hd2,system=node2 hd=hd3,system=node3 fsd=fsd1,anchor=/client/,depth=2,width=100,files=100,size=4k,shared=yes

????????計(jì)算公式如下:

最后一層生成文件夾個(gè)數(shù)=width^depth

測(cè)試文件個(gè)數(shù)=(width^depth)*files

fsd=fsd1,anchor=/dir1,depth=2,width=3,files=2,size=128k

????????以上述參數(shù)為例,生成目錄結(jié)構(gòu)及測(cè)試文件如下:

????????最后一層文件夾數(shù)=3^2=9 最后一層文件數(shù)=9*2=18

/dir1/ ├── no_dismount.txt ├── vdb.1_1.dir │ ? ├── vdb.2_1.dir │ ? │ ? ├── vdb_f0001.file │ ? │ ? └── vdb_f0002.file │ ? ├── vdb.2_2.dir │ ? │ ? ├── vdb_f0001.file │ ? │ ? └── vdb_f0002.file │ ? └── vdb.2_3.dir │ ? ? ? ├── vdb_f0001.file │ ? ? ? └── vdb_f0002.file ├── vdb.1_2.dir │ ? ├── vdb.2_1.dir │ ? │ ? ├── vdb_f0001.file │ ? │ ? └── vdb_f0002.file │ ? ├── vdb.2_2.dir │ ? │ ? ├── vdb_f0001.file │ ? │ ? └── vdb_f0002.file │ ? └── vdb.2_3.dir │ ? ? ? ├── vdb_f0001.file │ ? ? ? └── vdb_f0002.file ├── vdb.1_3.dir │ ? ├── vdb.2_1.dir │ ? │ ? ├── vdb_f0001.file │ ? │ ? └── vdb_f0002.file │ ? ├── vdb.2_2.dir │ ? │ ? ├── vdb_f0001.file │ ? │ ? └── vdb_f0002.file │ ? └── vdb.2_3.dir │ ? ? ? ├── vdb_f0001.file │ ? ? ? └── vdb_f0002.file └── vdb_control.file12 directories, 20 files

3.1.3 FWD(FileSystem Workload Defile)

fwd=default,operation=read,xfersize=4k,fileio=sequential,fileselect=random,threads=2 fwd=fwd1,fsd=fsd1,host=hd1 fwd=fwd2,fsd=fsd2,host=hd2 fwd=fwd3,fsd=fsd3,host=hd3

????????fwd:標(biāo)識(shí)文件系統(tǒng)工作負(fù)載定義的名稱,多文件系統(tǒng)工作負(fù)載定義時(shí),可以使用fwd1、fwd2、fwd3…區(qū)分

????????fsd:標(biāo)識(shí)此工作負(fù)載使用文件存儲(chǔ)定義的名稱

????????host:標(biāo)識(shí)此工作負(fù)載使用主機(jī)

????????operation:可選值為read或write,文件操作方式

????????rdpct:可選值為0~100,讀操作占比百分比,一般混合讀寫時(shí)需要指定,當(dāng)值為60時(shí),則混合讀寫比為6:4

????????fileio:可選值為random或sequential,標(biāo)識(shí)文件 I/O 將執(zhí)行的方式

????????fileselect: random或sequential,標(biāo)識(shí)選擇文件或目錄的方式

????????xfersizes:數(shù)據(jù)傳輸(讀取和寫入操作)處理的數(shù)據(jù)大小(即單次IO大小)

????????threads:此工作負(fù)載的并發(fā)線程數(shù)量

注:

1、默認(rèn)情況下,預(yù)填數(shù)據(jù)工作負(fù)載定義為threads=8,xfersize=128k,即預(yù)填數(shù)據(jù)使用8線程,IO大小為128K 如需更改默認(rèn)預(yù)填數(shù)據(jù)工作負(fù)載定義,則需要增加參數(shù)指定線程數(shù)和IO大小(fwd=format,threads=nn,xfersize=nn)

3.1.4 RD(Run Define)

rd=rd1,fwd=(fwd1-fwd3),fwdrate=max,format=restart,elapsed=604800,interval=10

????????rd:標(biāo)識(shí)文件系統(tǒng)運(yùn)行定義的名稱。

????????fwd:標(biāo)識(shí)文件系統(tǒng)工作負(fù)載定義的名稱。

????????fwdrate:每秒執(zhí)行的文件系統(tǒng)操作數(shù)量。設(shè)置為max,表示不做任何限制,按照最大強(qiáng)度自適應(yīng)
????????format: 可選值為no、yes、或restart,標(biāo)識(shí)預(yù)處理目錄和文件結(jié)構(gòu)的方式

  • no:默認(rèn)參數(shù)值,不執(zhí)行format預(yù)處理操作,如測(cè)試目錄不存在文件時(shí),vdbench會(huì)由于無可用文件讀寫而異常退出
  • yes:表示刪除測(cè)試目錄已有文件結(jié)構(gòu),并且重新創(chuàng)建新的文件結(jié)構(gòu)
  • restart:表示只創(chuàng)建未生成的目錄或文件,并且增大未達(dá)到實(shí)際大小的文件

????????elapsed:默認(rèn)值為30,測(cè)試運(yùn)行持續(xù)時(shí)間(單位為秒)

????????interval:結(jié)果輸出打印時(shí)間間隔(單位為秒)

3.2 塊設(shè)備

????????塊設(shè)備參數(shù)文件定義順序?yàn)?#xff1a;HD、SD、WD、RD

3.2.1 HD(Host Define)

????????非必選項(xiàng),單機(jī)運(yùn)行時(shí)不需要配置HD參數(shù),一般只有在多主機(jī)聯(lián)機(jī)測(cè)試時(shí)才需要配置

hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh hd=hd1,system=node241 hd=hd2,system=node242 hd=hd3,system=node243

????????參數(shù)解析參照文件系統(tǒng)的hd系列參數(shù)

3.2.2 SD(Storage Define)

sd=sd1,hd=hd1,lun=/dev/sdb,openflags=o_direct,threads=6 sd=sd3,hd=hd2,lun=/dev/sdb,openflags=o_direct,threads=6 sd=sd6,hd=hd3,lun=/dev/sdb,openflags=o_direct,threads=6

????????sd: 標(biāo)識(shí)存儲(chǔ)定義的名稱

????????hd: 標(biāo)識(shí)主機(jī)定義的名稱

????????lun: 寫入塊設(shè)備,linux使用sdb盤,則指定路徑為/dev/sdb;windows使用G盤,則指定路徑為\\.\G:;

????????openflags: 通過設(shè)置為o_direct或directio,以無緩沖緩存的方式進(jìn)行讀寫操作

????????threads: 對(duì)SD的最大并發(fā)I/O請(qǐng)求數(shù)量

3.2.3 WD(Workload Define)

wd=wd1,sd=sd*,seekpct=100,rdpct=100,xfersize=8k,skew=40 wd=wd2,sd=sd*,seekpct=100,rdpct=0,xfersize=8k,skew=10 wd=wd3,sd=sd*,seekpct=100,rdpct=100,xfersize=1024k,skew=40 wd=wd4,sd=sd*,seekpct=100,rdpct=0,xfersize=1024k,skew=10

????????wd: 標(biāo)識(shí)工作負(fù)載定義的名稱

????????sd: 標(biāo)識(shí)存儲(chǔ)定義的名稱

????????seekpct: 可選值為0或100(也可使用sequential或random表示),默認(rèn)值為100,隨機(jī)尋道的百分比,設(shè)置為0時(shí)表示順序,設(shè)置為100時(shí)表示隨機(jī)。

????????rdpct:讀取請(qǐng)求占請(qǐng)求總數(shù)的百分比,設(shè)置為0時(shí)表示寫,設(shè)置為100時(shí)表示讀

????????xfersize: 要傳輸?shù)臄?shù)據(jù)大小。默認(rèn)設(shè)置為4k

????????skew: 非必選項(xiàng),一般在多個(gè)工作負(fù)載時(shí)需要指定,表示該工作負(fù)載占總工作量百分比(skew總和為100)

3.2.4 RD(Run Define)

rd=rd1,wd=wd*,iorate=max,maxdata=400GB,warmup=30,elapse=604800,interval=5

????????rd: 標(biāo)識(shí)運(yùn)行定義的名稱

????????wd: 標(biāo)識(shí)工作負(fù)載定義的名稱

????????iorate: 常用可選值為100、max,此工作負(fù)載的固定I/O速率

  • –當(dāng)參數(shù)值為100時(shí),以每秒100個(gè)I/Os的速度運(yùn)行工作負(fù)載,當(dāng)參數(shù)值設(shè)置為一個(gè)低于最大速率的值時(shí),可以達(dá)到限制讀寫速度的效果
  • –當(dāng)參數(shù)值為max時(shí),以最大的I/O速率運(yùn)行工作負(fù)載,一般測(cè)試讀寫最大性能時(shí),該參數(shù)值均為max

????????warmup: 預(yù)熱時(shí)間(單位為秒),默認(rèn)情況下vdbench會(huì)將第一個(gè)時(shí)間間隔輸出數(shù)據(jù)排除在外,程序在預(yù)熱時(shí)間內(nèi)的測(cè)試不納入最終測(cè)試結(jié)果中(即預(yù)熱結(jié)束后,才開始正式測(cè)試)

  • –當(dāng)interval為5、elapsed為600時(shí),測(cè)試性能為2~elapsed/interval(avg_2-120)時(shí)間間隔內(nèi)的平均性能
  • –當(dāng)interval為5、warmup為60、elapsed為600時(shí),測(cè)試性能為1+(warmup/interval)~(warmup+elapsed)/interval(avg_13-132)時(shí)間間隔內(nèi)的平均性能

????????maxdata:讀寫數(shù)據(jù)大小,通常情況下,當(dāng)運(yùn)行elapsed時(shí)間后測(cè)試結(jié)束;當(dāng)同時(shí)指定elapsed和maxdata參數(shù)值時(shí),以最快運(yùn)行完的參數(shù)為準(zhǔn)(即maxdata測(cè)試時(shí)間小于elapsed時(shí),程序?qū)懲阤lapsed數(shù)據(jù)量后結(jié)束)

  • –當(dāng)參數(shù)值為100以下時(shí),表示讀寫數(shù)據(jù)量為總存儲(chǔ)定義大小的倍數(shù)(如maxdata=2,2個(gè)存儲(chǔ)定義(每個(gè)存儲(chǔ)定義數(shù)據(jù)量為100G),則實(shí)際讀寫數(shù)據(jù)大小為400G)
  • –當(dāng)參數(shù)值為100以上時(shí),表示數(shù)據(jù)量為實(shí)際讀寫數(shù)據(jù)量(可以使用單位M、G、T等)

????????elapsed: 默認(rèn)值為30,測(cè)試運(yùn)行持續(xù)時(shí)間(單位為秒)

????????interval: 報(bào)告時(shí)間間隔(單位為秒)

4 測(cè)試案例

4.1 單機(jī)測(cè)試

4.1.1 Linux平臺(tái)

示例如下,單節(jié)點(diǎn)針對(duì)裸盤測(cè)試,1M順序?qū)?#xff0c;測(cè)試時(shí)間600s,預(yù)熱時(shí)間60s,報(bào)告時(shí)間間隔2s

[root@node241 vdbench50406]# cat Single-RawDisk.html? sd=sd1,lun=/dev/sdb,openflag=o_direct wd=wd1,sd=sd1,seekpct=0,rdpct=0,xfersize=1M rd=rd1,wd=wd1,iorate=max,warmup=60,elapsed=600,interval=2 [root@node241 vdbench50406]#? [root@node241 vdbench50406]# ./vdbench -f Single-RawDisk.html

4.1.2 Windows平臺(tái)

????????示例如下,單節(jié)點(diǎn)針對(duì)文件系統(tǒng)測(cè)試,1M順序?qū)?#xff0c;目錄深度為2,每層目錄數(shù)為3,每個(gè)目錄文件數(shù)為10,每個(gè)文件大小為200M,測(cè)試時(shí)間為600s,報(bào)告時(shí)間時(shí)間2s

E:\vdbench50406>more "Single FileSystem.txt" fsd=fsd1,anchor=E:\Sigle-FileSystem,depth=2,width=3,files=10,size=200M fwd=fwd1,fsd=fsd1,operation=write,xfersize=1M,fileio=sequential,fileselect=rando m,threads=2 rd=rd1,fwd=fwd1,fwdrate=max,format=yes,elapsed=600,interval=5 E:\vdbench50406> E:\vdbench50406>vdbench -f "Single FileSystem.txt"

4.2 聯(lián)機(jī)測(cè)試

4.2.1 Linux平臺(tái)

????????一、配置多主機(jī)ssh互信

????????二、master主機(jī)運(yùn)行測(cè)試參數(shù)文件即可

????????示例如下,三節(jié)點(diǎn)針對(duì)裸盤聯(lián)機(jī)測(cè)試,1M順序?qū)?#xff0c;測(cè)試數(shù)據(jù)量為400G,預(yù)熱時(shí)間30s,報(bào)告間隔5s

[root@node241 vdbench50406]# cat Multi-RawDisk hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh hd=hd1,system=node241 hd=hd2,system=node242 hd=hd3,system=node243 sd=sd1,hd=hd1,lun=/dev/sdb,openflag=o_direct sd=sd2,hd=hd2,lun=/dev/sdb,openflag=o_direct sd=sd3,hd=hd3,lun=/dev/sdb,openflag=o_direct wd=wd1,sd=sd*,seekpct=0,rdpct=0,xfersize=1M rd=rd1,wd=wd1,iorate=max,maxdata=100M,elapsed=64800,warmup=30,interval=5 [root@node241 vdbench50406]#? [root@node241 vdbench50406]# ./vdbench -f Multi-RawDisk

4.2.2 Windows平臺(tái)

????????一、所有slave主機(jī)運(yùn)行vdbench本身rsh守護(hù)進(jìn)程

????????E:\vdbench50406>vdbench rsh

????????二、master主機(jī)運(yùn)行測(cè)試參數(shù)文件即可

????????示例如下,三節(jié)點(diǎn)針對(duì)文件系統(tǒng)聯(lián)機(jī)測(cè)試,1M順序?qū)?#xff0c;目錄深度為2,每層目錄數(shù)為3,每個(gè)目錄文件數(shù)為10000,每個(gè)文件大小為200M,測(cè)試時(shí)間為600s,報(bào)告間隔1s

E:\vdbench50406>more "Multi FileSystem.txt" hd=default,vdbench=E:\vdbench50406,user=Micah,shell=vdbench hd=hd1,system=66.66.66.250 hd=hd2,system=66.66.66.252 fsd=fsd1,anchor=Z:\Sigle-FileSystem-01,depth=2,width=3,files=10000,size=200M fsd=fsd2,anchor=Z:\Sigle-FileSystem-02,depth=2,width=3,files=10000,size=200M fwd=default,operation=write,xfersize=1M,fileio=sequential,fileselect=random,threads=16 fwd=fwd1,fsd=fsd1,host=hd1 fwd=fwd2,fsd=fsd2,host=hd2 rd=rd1,fwd=fwd*,fwdrate=max,format=yes,elapsed=600,interval=1 E:\vdbench50406> E:\vdbench50406>vdbench -f "Multi FileSystem.txt"

4.3 常見測(cè)試參數(shù)

4.3.1 4M順序?qū)?/h3>

????????目錄深度2、單級(jí)目錄數(shù)100、單個(gè)目錄文件數(shù)100、單文件大小4M、IO塊大小1M、順序?qū)憽?/p> hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh hd=hd1,system=node21 hd=hd2,system=node22 hd=hd3,system=node23 hd=hd4,system=node24 hd=hd5,system=node25 hd=hd6,system=node26 fsd=fsd1,anchor=/client/test01,depth=2,width=100,files=100,size=4M,shared=yes fwd=format,threads=24,xfersize=1m fwd=default,xfersize=1m,fileio=sequential,fileselect=sequential,operation=write,threads=24 fwd=fwd1,fsd=fsd1,host=hd1 fwd=fwd2,fsd=fsd1,host=hd2 fwd=fwd3,fsd=fsd1,host=hd3 fwd=fwd4,fsd=fsd1,host=hd4 fwd=fwd5,fsd=fsd1,host=hd5 fwd=fwd6,fsd=fsd1,host=hd6 rd=rd1,fwd=fwd*,fwdrate=max,format=restart,elapsed=600,interval=1

4.3.1 4M順序讀

????????目錄深度2、單級(jí)目錄數(shù)100、單個(gè)目錄文件數(shù)100、單文件大小4M、IO塊大小1M、順序讀

hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh hd=hd1,system=node21 hd=hd2,system=node22 hd=hd3,system=node23 hd=hd4,system=node24 hd=hd5,system=node25 hd=hd6,system=node26 fsd=fsd1,anchor=/client/test02,depth=2,width=100,files=100,size=4M,shared=yes fwd=format,threads=24,xfersize=1m fwd=default,xfersize=1m,fileio=sequential,fileselect=sequential,operation=read,threads=24 fwd=fwd1,fsd=fsd1,host=hd1 fwd=fwd2,fsd=fsd1,host=hd2 fwd=fwd3,fsd=fsd1,host=hd3 fwd=fwd4,fsd=fsd1,host=hd4 fwd=fwd5,fsd=fsd1,host=hd5 fwd=fwd6,fsd=fsd1,host=hd6 rd=rd1,fwd=fwd*,fwdrate=max,format=restart,elapsed=600,interval=1

4.3.2 8M混合讀寫

????????目錄深度2、單級(jí)目錄數(shù)100、單個(gè)目錄文件數(shù)100、單文件大小8M、IO塊大小1M、混合讀寫(讀寫比為6:4)

hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh hd=hd1,system=node21 hd=hd2,system=node22 hd=hd3,system=node23 hd=hd4,system=node24 hd=hd5,system=node25 hd=hd6,system=node26 fsd=fsd1,anchor=/client/test03,depth=2,width=100,files=100,size=8M,shared=yes fwd=format,threads=24,xfersize=1m fwd=default,xfersize=1m,fileio=random,fileselect=random,rdpct=60,threads=24 fwd=fwd1,fsd=fsd1,host=hd1 fwd=fwd2,fsd=fsd1,host=hd2 fwd=fwd3,fsd=fsd1,host=hd3 fwd=fwd4,fsd=fsd1,host=hd4 fwd=fwd5,fsd=fsd1,host=hd5 fwd=fwd6,fsd=fsd1,host=hd6 rd=rd1,fwd=fwd*,fwdrate=max,format=restart,elapsed=600,interval=1

5 測(cè)試結(jié)果解析

????????當(dāng)vdbench運(yùn)行完負(fù)載測(cè)試后,會(huì)在安裝目錄下生成output文件夾,里邊包含測(cè)試結(jié)果文件。

5.1 輸出文件

errorlog.html

當(dāng)運(yùn)行測(cè)試啟用數(shù)據(jù)校驗(yàn)時(shí),它可能會(huì)包含一些錯(cuò)誤信息,如:無效的密鑰讀取、無效的 lba 讀取(一個(gè)扇區(qū)的邏輯字節(jié)地址)、無效的 SD 或 FSD 名稱讀取、數(shù)據(jù)損壞、壞扇區(qū)。

flatfile.html

vdbench 生成的一種逐列的 ASCII 格式的信息,可以使用parseflat參數(shù)解析結(jié)果

histogram.html

一種包含報(bào)告柱狀圖的響應(yīng)時(shí)間、文本格式的文件


logfile.html

包含 Java 代碼寫入控制臺(tái)窗口的每行信息的副本。logfile.html 主要用于調(diào)試用途

parmfile.html

包含測(cè)試運(yùn)行配置參數(shù)信息

summary.html

記錄全部數(shù)據(jù)信息,顯示每個(gè)報(bào)告間隔內(nèi)總體性能情況及工作負(fù)載情況,以及除第一個(gè)間隔外的所有間隔的加權(quán)平均值

totals.html

記錄全部數(shù)據(jù)計(jì)算之后的平均值,一般測(cè)試結(jié)果從該文件取值,除第一個(gè)間隔外所有間隔的加權(quán)平均值

5.2 文件系統(tǒng)結(jié)果分析

????????測(cè)試參數(shù):

hd=default,vdbench=E:\vdbench50406,user=Micah,shell=vdbench hd=hd1,system=66.66.66.250 hd=hd2,system=66.66.66.252 fsd=fsd1,anchor=Z:\Sigle-FileSystem-01,depth=2,width=3,files=10,size=4M fsd=fsd2,anchor=Z:\Sigle-FileSystem-02,depth=2,width=3,files=10,size=4M fwd=default,operation=write,xfersize=1M,fileio=sequential,fileselect=random,threads=2 fwd=fwd1,fsd=fsd1,host=hd1 fwd=fwd2,fsd=fsd2,host=hd2 rd=rd1,fwd=fwd*,fwdrate=max,format=yes,elapsed=600,interval=5

????????測(cè)試結(jié)果:
?

18:47:03.001 Starting RD=format_for_rd1六月 04, 2020 .Interval. .ReqstdOps... ...cpu%... ?read ....read..... ....write.... ..mb/sec... mb/sec .xfer.. ...mkdir.... ...rmdir.... ...create... ....open.... ...close.... ...delete...rate ? resp total ?sys ? pct ? rate ? resp ? rate ? resp ?read write ?total ? ?size ?rate ? resp ?rate ? resp ?rate ? resp ?rate ? resp ?rate ? resp ?rate ? resp 18:48:40.218 ? avg_2-20 ? 57.6 ?6.244 ?13.4 2.99 ? 0.0 ? ?0.0 ?0.000 ? 57.6 ?6.244 ?0.00 ?7.20 ? 7.20 ?131072 ? 0.2 104.49 ? 0.2 41.526 ? 1.8 7527.0 ? 1.8 192.01 ? 1.8 7134.3 ? 1.8 21.98418:48:42.000 Starting RD=rd1; elapsed=600; fwdrate=max. For loops: None18:58:42.205 ?avg_2-120 ? ?6.2 ?1.063 ?13.0 2.80 ? 0.0 ? ?0.0 ?0.000 ? ?6.2 ?1.063 ?0.00 ?6.24 ? 6.24 1048576 ? 0.0 ?0.000 ? 0.0 ?0.000 ? 0.0 ?0.000 ? 1.6 47.864 ? 1.6 2401.1 ? 0.0 ?0.000

??? ?totals.html

一般包括兩個(gè)部分,第一部分為文件存儲(chǔ)目錄結(jié)構(gòu)及數(shù)據(jù)填充的平均性能值,第二部分為執(zhí)行測(cè)試過程中除第一個(gè)時(shí)間間隔外所有時(shí)間間隔平均性能值,主要看第二部分的內(nèi)容

??? ?Interval:報(bào)告間隔序號(hào),測(cè)試結(jié)果一般為除第一個(gè)時(shí)間間隔外所有時(shí)間間隔加權(quán)平均值,如elapsed=600,interval=5,則性能結(jié)果為第2個(gè)間隔到第120個(gè)間隔的平均值(avg_2-120)

??? ?ReqstdOps:Rate:每秒讀寫I/O個(gè)數(shù)(讀寫IOPS),可以通過rd運(yùn)行定義參數(shù)fwdrate控制;當(dāng)fwdrate為max時(shí),以最大I/O速率運(yùn)行工作負(fù)載;當(dāng)fwdrate為低于最大I/0速率的一個(gè)數(shù)值時(shí),可以限制讀寫速度,以固定I/O速率運(yùn)行工作負(fù)載。
Resp:讀寫請(qǐng)求響應(yīng)時(shí)間(讀寫時(shí)延),單位為ms

??? ?cpu%

tatol:總的cpu占用率
sys:系統(tǒng)cpu占用率

??? ?read pct

? ? ? ? 讀取請(qǐng)求占總請(qǐng)求數(shù)百分比占比,當(dāng)為0時(shí)表示寫,當(dāng)為100時(shí)表示讀

??? ?read

rate:每秒讀I/O個(gè)數(shù)(讀IOPS)
resp:讀請(qǐng)求響應(yīng)時(shí)間(讀時(shí)延),單位為ms

??? ?write

rate:每秒寫I/O個(gè)數(shù)(寫IOPS)
resp:寫請(qǐng)求響應(yīng)時(shí)間(寫時(shí)延),單位為ms

??? ?mb/sec

read:每秒讀取速度
write:每秒寫入速度
total:每秒讀寫速度總和

??? ?xfersize

每個(gè)讀寫I/O傳輸數(shù)據(jù)量(即單個(gè)讀寫I/O大小),單位為字節(jié)B

5.3?? ?塊設(shè)備結(jié)果分析

測(cè)試參數(shù)如下:

messagescan=no hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh hd=hd1,system=node241 hd=hd2,system=node242 hd=hd3,system=node243 sd=sd1,hd=hd1,lun=/dev/sdb,openflag=o_direct sd=sd2,hd=hd2,lun=/dev/sdb,openflag=o_direct sd=sd3,hd=hd3,lun=/dev/sdb,openflag=o_direct wd=wd1,sd=sd*,seekpct=0,rdpct=0,xfersize=1M rd=rd1,wd=wd1,iorate=max,elapsed=600,warmup=30,interval=5

測(cè)試結(jié)果如下:

19:02:15.001 Starting RD=rd1; I/O rate: Uncontrolled MAX; elapsed=600 warmup=30; For loops: NoneJun 04, 2020 ?interval ? ? ? ?i/o ? MB/sec ? bytes ? read ? ? resp ? ? read ? ?write ? ? resp ? ? resp queue ?cpu% ?cpu%rate ?1024**2 ? ? i/o ? ?pct ? ? time ? ? resp ? ? resp ? ? ?max ? stddev depth sys+u ? sys 19:12:46.068 avg_7-126 ? ? ?82.74 ? ?82.74 1048576 ? 0.00 ?289.158 ? ?0.000 ?289.158 2092.803 ?155.103 ?23.9 ?16.3 ?14.2

??? ?interval

報(bào)告間隔序號(hào),測(cè)試結(jié)果一般為除第一個(gè)時(shí)間時(shí)間外所有時(shí)間間隔加權(quán)平均值,如有設(shè)置預(yù)熱時(shí)間,則這部分測(cè)試數(shù)據(jù)也需要排除在外
如elapsed=600,warmup=30,interval=5,則性能測(cè)試結(jié)果為第7個(gè)間隔到第126個(gè)間隔的平均值(avg_7-126)

??? ?i/o rate

每秒讀寫I/O個(gè)數(shù)(讀寫IOPS),可以通過rd運(yùn)行定義參數(shù)iorate控制
當(dāng)iorate為max時(shí),以最大I/O速率運(yùn)行工作負(fù)載
當(dāng)iorate為低于最大I/0速率的一個(gè)數(shù)值時(shí),可以限制讀寫速度,以固定I/O速率運(yùn)行工作負(fù)載

??? ?MB/sec

每秒讀寫速度(讀寫帶寬)
注:按官方手冊(cè)說明,

??? ?bytes i/0

每個(gè)讀寫I/O傳輸數(shù)據(jù)量(即單個(gè)讀寫I/O大小),單位為字節(jié)B,可以通過wd工作負(fù)載定義參數(shù)xfersize控制

??? ?read pct

讀取請(qǐng)求占請(qǐng)求總數(shù)的百分比,可以通過wd工作負(fù)載定義參數(shù)rdpct控制
當(dāng)rdpct為0時(shí),表示測(cè)試模型為寫
當(dāng)rdpct為100時(shí),表示測(cè)試模型為讀

??? ?resp time

請(qǐng)求響應(yīng)時(shí)間(讀寫時(shí)延),單位為毫秒ms

??? ?read resp

讀取請(qǐng)求響應(yīng)時(shí)間,單位為毫秒ms

??? ?write resp

寫入請(qǐng)求響應(yīng)時(shí)間,單位為毫秒ms

??? ?resp max

最大請(qǐng)求響應(yīng)時(shí)間,單位為毫秒ms

??? ?resp stddev

請(qǐng)求響應(yīng)時(shí)間標(biāo)準(zhǔn)偏差,單位為毫秒ms

??? ?queue depth

讀寫I/0隊(duì)列深度

??? ?cpu% sys+u

內(nèi)核態(tài)空間及用戶態(tài)空間CPU占用率

??? ?cpu% sys

內(nèi)核態(tài)空間CPU占用率

6 常見問題

6.1 open failed for xxx

一、問題描述:

????????使用vdbench測(cè)試過程中,測(cè)試中斷,報(bào)錯(cuò)信息如下:

19:37:41.155 19:37:44.813 error: 20 19:37:41.155 19:37:44.813 file_open(), open /trash/64M/vdb.1_47.dir/vdb.2_24.dir/vdb_f0002.file failed 19:37:41.155 19:37:44.814 error: 20 19:37:41.155 19:37:44.814 file_open(), open /trash/64M/vdb.1_47.dir/vdb.2_24.dir/vdb_f0003.file failed 19:37:41.156 19:37:44.814 Maximum native memory allocation: ? ?1,048,576; Current allocation: ? ?1,048,576 19:37:41.156 19:37:44.814 Maximum native memory allocation: ? ?1,048,576; Current allocation: ? ?1,048,576 19:37:41.156 19:37:44.814 error: 20 19:37:41.156 19:37:44.814? 19:37:41.156 19:37:44.814 open failed for /trash/64M/vdb.1_47.dir/vdb.2_24.dir/vdb_f0002.file 19:37:41.156 19:37:44.814? 19:37:41.158 java.lang.RuntimeException: open failed for /trash/64M/vdb.1_47.dir/vdb.2_24.dir/vdb_f0002.file

二、原因分析:

????????默認(rèn)vdbench限制了java內(nèi)存使用量,測(cè)試期間java運(yùn)行內(nèi)存不足才導(dǎo)致測(cè)試異常中斷。

三、處理措施:

增大vdbench運(yùn)行腳本的java內(nèi)存參數(shù)

[root@node40 ~]# cat vdbench50406/vdbench if [ "$1" == "SlaveJvm" ]; then$java -client -Xmx10240m -Xms128m -cp $cp Vdb.SlaveJvm $*exit $? else$java -client -Xmx10240m ?-Xms64m ?-cp $cp Vdb.Vdbmain $*exit $? fi

注:Xmx表示jvm最大內(nèi)存分配池,Xms表示初始內(nèi)存分配池
進(jìn)程初始以Xms內(nèi)存大小啟動(dòng),當(dāng)空余堆內(nèi)存小于40%時(shí),jvm會(huì)增大內(nèi)存至Xmx;當(dāng)空余堆內(nèi)存大于70%時(shí),jvm會(huì)減少內(nèi)存至Xms;為避免每次GC后JVM重新分配內(nèi)存,可以將Xmx和Xms設(shè)置為相同的參數(shù)值。

6.2 linux/aarch64.so does not exist

一、問題描述

????????arm服務(wù)器運(yùn)行vdbench,出現(xiàn)共享庫不匹配問題linux/aarch64.so does not exist,提示需要手動(dòng)編譯。

二、原因分析:

????????vdbench根目錄動(dòng)態(tài)庫文件linux/linux64.so為基于x86編譯的,需要基于aarch64重新編譯linux/linux64.so動(dòng)態(tài)庫文件

[root@node163 vdbench50407]# ls linux/ config.sh ?linux32.so ?linux64.so ?sparc64.so [root@node163 vdbench50407]# file linux/linux64.so? linux/linux64.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=34a31f32956f21153c372a95e73c02e84ddd29f8, not stripped

三、處理措施:

第一步:準(zhǔn)備源碼

????????下載vdbench50407源碼包,下載地址:vdbench50407.src.zip

????????解壓縮源碼包,創(chuàng)建linux目錄

mkdir vdbench50407-srcunzip vdbench50407.src.zip -d vdbench50407-src/cd vdbench50407-src/src/mkdir linux

第二步:完善代碼

????????進(jìn)入Jni目錄下,修改make.linux文件,主要修改如下:

????????– 指定vdbench源碼路徑(vdb=xx)

????????– 指定jdk路徑(java=xx),通常在/usr/lib/jvm/路徑下

????????– 刪除全文-m32和-m64字符

cd Jni/ sed -i 's#vdb=$mine/vdbench504#vdb=/root/vdbench50407-src/src#g' make.linux sed -i 's#java=/net/sbm-240a.us.oracle.com/export/swat/swat_java/linux/jdk1.5.0_22/#java=/usr/lib/jvm/java-1.8.0-openjdk/#g' make.linux sed -i 's/-m32//g' make.linux? sed -i 's/-m64//g' make.linux

第三步:編譯安裝

????????執(zhí)行源碼編譯操作./make.linux

????????執(zhí)行成功后會(huì)在../linux目錄下生成linux32.so和linux64.so文件,將linux64.so文件拷貝到vdbench測(cè)試工具根目錄linux/aarch64.so下,重新運(yùn)行vdbench測(cè)試

[root@node163 Jni]# ./make.linux target directory: /root/vdbench50407-src/src Compiling 32 bit Linking 32 bitCompiling 64 bit Linking 64 bit[root@node163 Jni]# ll ../linux/ total 160 -rwxrwxrwx 1 root root 78656 Feb ?9 14:54 linux32.so -rwxrwxrwx 1 root root 78656 Feb ?9 14:54 linux64.so[root@node163 Jni]# cp ../linux/linux64.so /root/vdbench50407/linux/aarch64.so

6.3 Raw device ‘sd=sd1,lun=\.\G:’ does not exist, or no permissions.

一、問題描述:

????????windows系統(tǒng)下使用vdbench測(cè)試裸盤性能,腳本運(yùn)行失敗,提示Raw device 'sd=sd1,lun=\\.\G:' does not exist, or no permissions.

D:\vdbench50406>more raw-test.txt sd=sd1,lun=\\.\G: wd=wd1,sd=sd1,seekpct=0,rdpct=0,xfersize=1M rd=rd1,wd=wd1,iorate=max,maxdata=100M,elapsed=64800,warmup=30,interval=5D:\vdbench50406>vdbench.bat -f raw-test.txt Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Vdbench distribution: vdbench50406 Wed July 20 15:49:52 MDT 2016 For documentation, see 'vdbench.pdf'.17:35:24.328 input argument scanned: '-fraw-test.txt' 17:35:24.375 Starting slave: D:\vdbench50406\vdbench SlaveJvm -m localhost -n localhost-10-220119-17.35.24.293 -l localhost-0 -p 5570 17:35:24.834 All slaves are now connected 17:35:25.263 Raw device 'sd=sd1,lun=\\.\G:' does not exist, or no permissions. 17:35:25.764 17:35:25.764 Please check above failures 17:35:25.765 java.lang.RuntimeException: Please check above failuresat Vdb.common.failure(common.java:335)at Vdb.InfoFromHost.matchDataWithSds(InfoFromHost.java:674)at Vdb.InfoFromHost.receiveInfoFromHost(InfoFromHost.java:485)at Vdb.SlaveOnMaster.processSlave(SlaveOnMaster.java:151)at Vdb.SlaveOnMaster.run(SlaveOnMaster.java:42)

二、處理措施:

????????1、檢查裸盤路徑是否正確,如測(cè)試G盤裸盤性能,則測(cè)試參數(shù)指定為lun=\\.\G:
????????2、檢查是否有執(zhí)行權(quán)限,cmd窗口需要以管理員身份運(yùn)行

6.4 Minimum required Java version for Vdbench is 1.7.0

一、問題描述

??????????Linux下運(yùn)行vdbench失敗,提示Minimum required Java version for Vdbench is 1.7.0; Vdbench terminated.

root@node65:/home/vdbench50406# ./vdbench -tCopyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Vdbench distribution: vdbench50406 Wed July 20 15:49:52 MDT 2016 For documentation, see 'vdbench.pdf'.* * * * Minimum required Java version for Vdbench is 1.7.0;? * You are currently running 11.0.9.1 * Vdbench terminated. * * * CTRL-C requested. vdbench terminating

二、處理措施:

????????查看官方相關(guān)說明,vdbench50407以前的版本,存在java檢測(cè)功能(vdbench50407版本已移除),在不變更現(xiàn)有環(huán)境java版本的情況下,可升級(jí)版本至vdbench50407版本解決。

? ?// Removed as per 50407 because of java 1.10.x//checkJavaVersion();//....private static void checkJavaVersion(){if (common.get_debug(common.USE_ANY_JAVA))return;if (!JVMCheck.isJREValid(System.getProperty("java.version"), 1, 7, 0)){System.out.print("*\n*\n*\n");System.out.println("* Minimum required Java version for Vdbench is 1.7.0; \n" +"* You are currently running " + System.getProperty("java.version") +"\n* Vdbench terminated.");System.out.println("*\n*\n*\n");System.exit(-99);}}

????????版本發(fā)布說明:# Vdbench 50407 is now available

50407rc29

* ? The check to make sure you are running java 1.7 or higher has been removed.

7 參考資料

[01] https://blog.csdn.net/Micha_Lu/article/details/109227774
?

總結(jié)

以上是生活随笔為你收集整理的vdbench - 性能压力测试工具的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。