一、前言
1、介紹
vdbench是一個I/O工作負載生成器,通常用於驗證數據完整性和度量直接附加(或網絡連接)存儲性能。它可以運行在windows、linux環境,可用於測試文件系統或塊設備基准性能。
2、版本包獲取
-
vdbench版本包
下載鏈接 -
jdk版本包
下載鏈接(windows)
下載鏈接(linux)
二、安裝部署
1、Linux客戶端
- 部署jdk環境
解壓縮jdk安裝包至/opt
目錄
tar -zxvf jdk-8u251-linux-x64.tar.gz -C /opt/
配置jdk環境變量
echo 'JAVA_HOME=/opt/jdk1.8.0_251' >> /root/.bashrc
echo 'PATH=$JAVA_HOME/bin:$PATH' >> /root/.bashrc
echo 'CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /root/.bashrc
source /root/.bashrc
- 配置免秘鑰
非必選項,如需要聯機測試,則需要配置此項
示例使用三個客戶端聯機測試,使用客戶端node241
作為主節點
客戶端主機名 | 客戶端IP |
---|---|
node241 | 66.66.66.241 |
node242 | 66.66.66.242 |
node243 | 66.66.66.243 |
將每個節點IP和主機名的映射關系寫入到/etc/hosts
配置文件內
echo '66.66.66.241 node241' >> /etc/hosts
echo '66.66.66.242 node242' >> /etc/hosts
echo '66.66.66.243 node243' >> /etc/hosts
主節點生成公鑰文件,並拷貝到其他從節點(配置主節點到從節點免秘鑰登錄)
ssh-keygen
ssh-copy-id node242
ssh-copy-id node243
- vdbench使用
解壓縮vdbench安裝包至/root/vdbench50406
目錄內,切換到vdbench解壓縮目錄執行對應參數文件即可
unzip vdbench50406.zip -d /root/vdbench50406
2、Windows客戶端
-
部署jdk環境
直接安裝jdk軟件即可(環境變量在安裝完成后會自動添加) -
vdbench使用
解壓縮vdbench軟件包,切換到vdbench解壓縮目錄執行對應參數文件即可
3、注意事項
- 在聯機測試時,客戶端的系統時間需保持一致,否則會出現時鍾同步告警(this can lead to heartbeat issues)
- 客戶端的防火牆要關閉(或者設置開放程序指定端口
5570
、5560
訪問) - 關閉系統日志服務
rsyslog
,避免運行時出現其他日志文件打印信息
參數文件添加messagescan=no
可以過濾掉多余的系統日志
三、常用操作
1、常用操作命令
檢查vdbench環境
./vdbench -t
運行測試模型
注:-f后接測試參數文件名,-o后接導出測試結果路徑
./vdbench -f {filename} -o {exportpath}
建立rsh通信
注:此命令是用於windows系統多主機聯機跑vdbench時使用,因為windows操作系統不支持ssh,因此,vdbench提供了rsh的通信方式。在目標主機上執行此工具后,vdbench將會啟動一個java socket用於vdbench slave與master之間通信
./vdbench rsh
四、參數說明
vdbench可用於文件系統及塊設備基准性能測試,以下主要介紹文件系統及塊存儲的常用測試參數
vdbench所有測試參數都定義到一個參數文件內,在運行時按照順序被讀取執行相應操作,在參數文件定義時需要執行順序進行定義
1、文件系統
文件系統參數文件定義順序為:HD、FSD、FWD、RD
1.1、HD(Host Define)
非必選項,單機運行時不需要配置HD參數,一般只有在多主機聯機測試時才需要配置
hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh
hd=hd1,system=node241
hd=hd2,system=node242
hd=hd3,system=node243
- hd= 標識主機定義的名稱,多主機運行時,可以使用hd1、hd2、hd3...區分
- system= 主機IP地址或主機名
- vdbench= vdbench執行文件存放路徑,當多主機存放路徑不同時,可在hd定義時單獨指定
- user= slave和master通信使用用戶
- shell= 可選值為
rsh
、ssh
或vdbench
,默認值為rsh
,多主機聯機測試時,mater和slave主機間通信方式
當參數值為rsh
時,需要配置master和slave主機rsh互信,考慮到rsh使用明文傳輸,安全級別不夠,通常情況下不建議使用這種通信方式
當參數值為ssh
時,需要配置master和slave主機ssh互信,通常Linux主機聯機時使用此通信方式
當參數值為vdbench
,需要在所有slave主機運行vdbench rsh
啟用vdbench本身的rsh守護進程,通常Window主機聯機時使用此通信方式
1.2、FSD(File System Define)
fsd=default,depth=2,width=3,files=2,size=128k
fsd=fsd1,anchor=/mnt/client1
fsd=fsd2,anchor=/mnt/client2
fsd=fsd3,anchor=/mnt/client3
- fsd= 標識文件系統定義的名稱,多文件系統時(
fsd1
、fsd2
、fsd3
...),可以指定default
(將相同的參數作為所有fsd的默認值) - anchor= 文件寫入根目錄
- depth= 創建目錄層級數(即目錄深度)
- width= 每層文件夾的子文件夾數
- files= 測試文件個數(vdbench測試過程中會生成多層級目錄結構,實際只有最后一層目錄會生成測試文件)
- size= 每個測試文件大小
- **distribution= ** 可選值為
bottom
或all
,默認為bottom
--當參數值為bottom
時,程序只在最后一層目錄寫入測試文件
--當參數值為all
時,程序在每一層目錄都寫入測試文件 - shared= 可選值為
yes
或no
,默認值為no
,一般只有在多主機聯機測試時指定
vdbench不允許不同的slave之間共享同一個目錄結構下的所有文件,因為這樣會帶來很大的開銷,但是它們允許共享同一個目錄結構。加入設置了shared=yes,那么不同的slave可以平分一個目錄下所有的文件來進行訪問,相當於每個slave有各自等分的訪問區域,因此不能測試多個客戶的對同一個文件的讀寫
--當多主機聯機測試時,寫入的根目錄anchor
為同一個路徑時,需要指定參數值為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
計算公式如下:
最后一層生成文件夾個數=width
^depth
測試文件個數=(width
^depth
)*files
fsd=fsd1,anchor=/dir1,depth=2,width=3,files=2,size=128k
以上述參數為例,生成目錄結構及測試文件如下:
最后一層文件夾數=3^2=9 最后一層文件數=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.file
12 directories, 20 files
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= 標識文件系統工作負載定義的名稱,多文件系統工作負載定義時,可以使用fwd1、fwd2、fwd3...區分
- fsd= 標識此工作負載使用文件存儲定義的名稱
- host= 標識此工作負載使用主機
- operation= 可選值為
read
或write
,文件操作方式 - rdpct= 可選值為
0
~100
,讀操作占比百分比,一般混合讀寫時需要指定,當值為60時,則混合讀寫比為6:4 - fileio=
可選值為random
或sequential
,標識文件 I/O 將執行的方式 - fileselect=
random
或sequential
,標識選擇文件或目錄的方式 - xfersizes= 數據傳輸(讀取和寫入操作)處理的數據大小(即單次IO大小)
- threads= 此工作負載的並發線程數量
1.4、RD(Run Define)
rd=rd1,fwd=(fwd1-fwd3),fwdrate=max,format=restart,elapsed=604800,interval=10
- rd= 標識文件系統運行定義的名稱。
- fwd= 標識文件系統工作負載定義的名稱。
- fwdrate= 每秒執行的文件系統操作數量。設置為max,表示不做任何限制,按照最大強度自適應
- format= 可選值為
yes
、no
或restart
,標識預處理目錄和文件結構的方式
--yes表示刪除目錄和文件結構再重新創建
--no表示不刪除目錄和文件結構
--restart表示只創建未生成的目錄或文件,並且增大未達到實際大小的文件 - elapsed= 默認值為
30
,測試運行持續時間(單位為秒) - interval= 結果輸出打印時間間隔(單位為秒)
2、塊設備
塊設備參數文件定義順序為:HD、SD、WD、RD
1.1、HD(Host Define)
非必選項,單機運行時不需要配置HD參數,一般只有在多主機聯機測試時才需要配置
hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh
hd=hd1,system=node241
hd=hd2,system=node242
hd=hd3,system=node243
- hd= 標識主機定義的名稱,多主機運行時,可以使用hd1、hd2、hd3...區分
- system= 主機IP地址或主機名
- vdbench= vdbench執行文件存放路徑,當多主機存放路徑不同時,可在hd定義時單獨指定
- user= slave和master通信使用用戶
- shell= 可選值為
rsh
、ssh
或vdbench
,默認值為rsh
,多主機聯機測試時,mater和slave主機間通信方式
當參數值為rsh
時,需要配置master和slave主機rsh互信,考慮到rsh使用明文傳輸,安全級別不夠,通常情況下不建議使用這種通信方式
當參數值為ssh
時,需要配置master和slave主機ssh互信,通常Linux主機聯機時使用此通信方式
當參數值為vdbench
,需要在所有slave主機運行vdbench rsh
啟用vdbench本身的rsh守護進程,通常Window主機聯機時使用此通信方式
1.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= 標識存儲定義的名稱
- hd= 標識主機定義的名稱
- lun= 寫入塊設備,如:/dev/sdb, /dev/sdc...
- openflags= 通過設置為
o_direct
,以無緩沖緩存的方式進行讀寫操作 - threads= 對SD的最大並發I/O請求數量
1.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= 標識工作負載定義的名稱
- sd= 標識存儲定義的名稱
- seekpct= 可選值為
0
或100
(也可使用sequential
或random
表示),默認值為100
,隨機尋道的百分比,設置為0
時表示順序,設置為100
時表示隨機。 - rdpct= 讀取請求占請求總數的百分比,設置為0時表示寫,設置為100時表示讀
- xfersize= 要傳輸的數據大小。默認設置為4k
- skew= 非必選項,一般在多個工作負載時需要指定,表示該工作負載占總工作量百分比(skew總和為100)
1.4、RD(Run Define)
rd=rd1,wd=wd*,iorate=max,maxdata=400GB,warmup=30,elapse=604800,interval=5
- rd= 標識運行定義的名稱
- wd= 標識工作負載定義的名稱
- iorate= 常用可選值為
100
、max
,此工作負載的固定I/O速率
--當參數值為100
時,以每秒100個I/Os的速度運行工作負載,當參數值設置為一個低於最大速率的值時,可以達到限制讀寫速度的效果
--當參數值為max
時,以最大的I/O速率運行工作負載,一般測試讀寫最大性能時,該參數值均為max
- warmup= 預熱時間(單位為秒),默認情況下vdbench會將第一個時間間隔輸出數據排除在外,程序在預熱時間內的測試不納入最終測試結果中(即預熱結束后,才開始正式測試)
--當interval
為5、elapsed
為600時,測試性能為2
~elapsed/interval
(avg_2-120)時間間隔內的平均性能
--當interval
為5、warmup
為60、elapsed
為600時,測試性能為1+(warmup/interval)
~(warmup+elapsed)/interval
(avg_13-132)時間間隔內的平均性能 - maxdata= 讀寫數據大小,通常情況下,當運行
elapsed
時間后測試結束;當同時指定elapsed
和maxdata
參數值時,以最快運行完的參數為准(即maxdata
測試時間小於elapsed
時,程序寫完elapsed
數據量后結束)
--當參數值為100
以下時,表示讀寫數據量為總存儲定義大小的倍數(如maxdata=2,2個存儲定義(每個存儲定義數據量為100G),則實際讀寫數據大小為400G)
--當參數值為100
以上時,表示數據量為實際讀寫數據量(可以使用單位M、G、T等) - elapsed= 默認值為
30
,測試運行持續時間(單位為秒) - interval= 報告時間間隔(單位為秒)
五、運行使用
1、單機運行
- Linux
示例如下,單節點針對裸盤測試,1M順序寫,測試時間600s,預熱時間60s,報告時間間隔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
- Window
示例如下,單節點針對文件系統測試,1M順序寫,目錄深度為2,每層目錄數為3,每個目錄文件數為10,每個文件大小為200M,測試時間為600s,報告時間時間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"
2、聯機運行
- Linux
1、按照二、安裝部署
,配置多主機ssh互信
2、master主機運行測試參數文件即可
示例如下,三節點針對裸盤聯機測試,1M順序寫,測試數據量為400G,預熱時間30s,報告間隔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
- Window
1、所有slave主機運行vdbench本身rsh守護進程
E:\vdbench50406>vdbench rsh
2、master主機運行測試參數文件即可
示例如下,三節點針對文件系統聯機測試,1M順序寫,目錄深度為2,每層目錄數為3,每個目錄文件數為10000,每個文件大小為200M,測試時間為600s,報告間隔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"
六、結果分析
當vdbench運行完負載測試后,會在安裝目錄下生成
output
文件夾,里邊包含測試結果文件
1、輸出文件
- errorlog.html
當運行測試啟用數據校驗時,它可能會包含一些錯誤信息,如:- 無效的密鑰讀取
- 無效的 lba 讀取(一個扇區的邏輯字節地址)
- 無效的 SD 或 FSD 名稱讀取
- 數據損壞
- 壞扇區
- flatfile.html
vdbench 生成的一種逐列的 ASCII 格式的信息,可以使用parseflat
參數解析結果
./vdbench parseflat -i <flatfile.html> -o output.csv [-c col1 col2 ..] [-a] [-f col1 value1 col2 value2..]
-i input flatfile, e.g. output/flatfile.html
-o output CSV file name (default stdout)
-c which column to write to CSV. Columns are written in the order specified
-f filters: 'if (colX == valueX) ... ...' (Alphabetic compare)
-a include only the 'avg' data. Default: include only non-avg data.
-i是表示待分析的文件,這里寫vdbench輸出目錄里的flatfile.html這個文件,寫其它文件不能正常解析;
-o是解析后的輸出文件,可以手動指定存放目錄。文件格式為CSV,此文件的列由-c參數指定,列的順序為-c參數的順序
-a是表示csv文件中只記錄測試過程中的avg值
示例如下:
.\vdbench.bat parseflat -i D:\vdbench50406\output\flatfile.html -c run rate MB/sec seekpct rdpct bytes/io threads resp -o d:\output.csv -a
vdbench parseflat arguments:
Argument 0: -i
Argument 1: D:\vdbench50406\output\flatfile.html
Argument 2: -c
Argument 3: run
Argument 4: rate
Argument 5: MB/sec
Argument 6: seekpct
Argument 7: rdpct
Argument 8: bytes/io
Argument 9: threads
Argument 10: resp
Argument 11: -o
Argument 12: D:\output.csv
Argument 13: -a
14:12:49.265 ParseFlat completed successfully.
- histogram.html
一種包含報告柱狀圖的響應時間、文本格式的文件 - logfile.html
包含 Java 代碼寫入控制台窗口的每行信息的副本。logfile.html 主要用於調試用途 - parmfile.html
包含測試運行配置參數信息 - summary.html
記錄全部數據信息,顯示每個報告間隔內總體性能情況及工作負載情況,以及除第一個間隔外的所有間隔的加權平均值 - totals.html
記錄全部數據計算之后的平均值,一般測試結果從該文件取值,除第一個間隔外所有間隔的加權平均值
2、結果分析
2.1、文件系統
#測試參數如下:
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
#測試結果如下:
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.984
18:48:42.000 Starting RD=rd1; elapsed=600; fwdrate=max. For loops: None
18: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
一般包括兩個部分,第一部分為文件存儲目錄結構及數據填充的平均性能值,第二部分為執行測試過程中除第一個時間間隔外所有時間間隔平均性能值,主要看第二部分的內容
-
Interval
報告間隔序號,測試結果一般為除第一個時間間隔外所有時間間隔加權平均值
如elapsed=600,interval=5,則性能結果為第2個間隔到第120個間隔的平均值(avg_2-120) -
ReqstdOps
- rate
每秒讀寫I/O個數(讀寫IOPS),可以通過rd
運行定義參數fwdrate
控制
當fwdrate
為max
時,以最大I/O速率運行工作負載
當fwdrate
為低於最大I/0速率的一個數值時,可以限制讀寫速度,以固定I/O速率運行工作負載 - resp
讀寫請求響應時間(讀寫時延),單位為ms
- rate
-
cpu%
- tatol
總的cpu占用率 - sys
系統cpu占用率
- tatol
-
read pct
讀取請求占總請求數百分比占比,當為0時表示寫,當為100時表示讀 -
read
- rate
每秒讀I/O個數(讀IOPS) - resp
讀請求響應時間(讀時延),單位為ms
- rate
-
write
- rate
每秒寫I/O個數(寫IOPS) - resp
寫請求響應時間(寫時延),單位為ms
- rate
-
mb/sec
- read
每秒讀取速度 - write
每秒寫入速度 - total
每秒讀寫速度總和
- read
-
xfersize
每個讀寫I/O傳輸數據量(即單個讀寫I/O大小),單位為字節B
2.2、塊設備
#測試參數如下:
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
#測試結果如下:
<a name="_1143839598"></a><i><b>19:02:15.001 Starting RD=rd1; I/O rate: Uncontrolled MAX; elapsed=600 warmup=30; For loops: None</b></i>
Jun 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
報告間隔序號,測試結果一般為除第一個時間時間外所有時間間隔加權平均值,如有設置預熱時間,則這部分測試數據也需要排除在外
如elapsed=600,warmup=30,interval=5,則性能測試結果為第7個間隔到第126個間隔的平均值(avg_7-126) -
i/o rate
每秒讀寫I/O個數(讀寫IOPS),可以通過rd
運行定義參數iorate
控制
當iorate
為max
時,以最大I/O速率運行工作負載
當iorate
為低於最大I/0速率的一個數值時,可以限制讀寫速度,以固定I/O速率運行工作負載 -
MB/sec
每秒讀寫速度(讀寫帶寬)
注:按官方手冊說明, -
bytes i/0
每個讀寫I/O傳輸數據量(即單個讀寫I/O大小),單位為字節B
,可以通過wd
工作負載定義參數xfersize
控制 -
read pct
讀取請求占請求總數的百分比,可以通過wd
工作負載定義參數rdpct
控制
當rdpct
為0
時,表示測試模型為寫
當rdpct
為100
時,表示測試模型為讀 -
resp time
請求響應時間(讀寫時延),單位為毫秒ms
-
read resp
讀取請求響應時間,單位為毫秒ms
-
write resp
寫入請求響應時間,單位為毫秒ms
-
resp max
最大請求響應時間,單位為毫秒ms
-
resp stddev
請求響應時間標准偏差,單位為毫秒ms
-
queue depth
讀寫I/0隊列深度 -
cpu% sys+u
內核態空間及用戶態空間CPU占用率 -
cpu% sys
內核態空間CPU占用率 2020年05月29日 16:00:16 Clear
七、測試說明
1、測試總結
- 線程數(thread)一般設置為客戶端CPU線程數總大小
grep 'processor' /proc/cpuinfo | sort -u | wc -l
- 測試總數據量需要為客戶端內存大小兩倍
- 測試讀模型時需要清理客戶端緩存信息
sync;echo 3 > /proc/sys/vm/drop
2、常見測試參數
- 4M順序寫
目錄深度2、單級目錄數100、單個目錄文件數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/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
- 4M順序讀
目錄深度2、單級目錄數100、單個目錄文件數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
- 8M混合讀寫
目錄深度2、單級目錄數100、單個目錄文件數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