一、vdbench安裝
1、安裝java:
java -version
(vdbench的運行依賴於java)
2、檢測vdbench能夠使用:
進入vdbench相應目錄下./vdbench -t 來測試一下vdbench的可用性,如果正常,會在目錄下自動生成一個output目錄。
root@node1:/home/vdbench/vdbench50406# ./vdbench -t
如果報錯,則需修改vdbench的權限:
root@node03:/home/vdbench/vdbench50406# chmod 777 vdbench
二、執行(下面的例子是針對文件系統)
1、配置參考文件目錄vdbench504/examples/filesys
如:將紅色/dir1改為具體的測試目錄或者說是掛載點,其它參數第三小節會做詳細解釋
[root@sdosspststorage10 back]# cat seq_write
*
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
*
*
* Author: Henk Vandenbergh.
*
* Sequentially write randomly selected files.
*
* 'format=yes' first creates (depth*width*files) 1000 128k files.
* Test then will have eight threads each randomly select a file and sequentially
* write it. At EOF a new file is selected.
*
* Note: the amount of files and the total combined file size in this test
* guarantees that most if not all of the i/o activity is done from cache.
* Increase the amount of files and/or the file size to make sure that some
* real disk i/o activity is done.
*
fsd=fsd1,anchor=/dir1,depth=1,width=1,files=1000,size=128k
fwd=fwd1,fsd=fsd1,operation=write,xfersize=4k,fileio=sequential,
fileselect=random,threads=8
rd=rd1,fwd=fwd*,fwdrate=max,format=yes,elapsed=120,interval=1
2、執行:
/mnt/data2/ossfuse/vdbench504/vdbench -f seq_write -jn -o ./my/
vdbench的詳細目錄 配置文件 指定output目錄
三、vdbench文件系統測試——詳細參數說明:
對於一個文件系統,配置以下參數:
(1)HD:主機定義。與虛擬塊設備相同。
(2)FSD:文件系統定義
fsd= 標識文件系統定義的名稱
anchor= 將在其中創建目錄結構的目錄
width= 要在定位符下創建的目錄數
depth= 要在定位符下創建的級別數
files= 要在最低級別創建的文件數
sizes= (size,size,...) 將創建的文件大小
distribution= bottom(如果希望僅在最低級別創建文件)和 all(如果希望在所有目錄中創建文件)
openflags= 用於打開一個文件系統 (Solaris) 的 flag_list
(3)FWD:文件系統工作負載定義
fwd= 標識文件系統工作負載定義的名稱。
fsd= 要使用的文件系統定義的 ID。
host= 要用於此工作負載的主機的 ID。
fileio= random 或 sequential,表示文件 I/O 將執行的方式。
fileselect= random 或 sequential,標識選擇文件或目錄的方式。
xfersizes= 數據傳輸(讀取和寫入操作)處理的數據大小。
operation= mkdir、rmdir、create、delete、open、close、read、write、getattr 和 setattr。選擇要執行的單個文件操作。
rdpct= (僅)讀取和寫入操作的百分比。
threads= 此工作負載的並發線程數量。每個線程需要至少 1 個文件。
(4)RD:運行定義
fwd= 要使用的文件系統工作負載定義的 ID。
fwdrate= 每秒執行的文件系統操作數量。
format= yes / no / only / restart / clean / directories。在開始運行之前要執行的操作。
yes:是每次都會先刪除目錄文件,再重新創建
restart:每次起的時候會先校驗文件、目錄是否全,不全的補上
no:不校驗文件目錄直接跑,事先最好將文件灌好
operations= 覆蓋 fwd 操作。選項相同。
vdbench文件系統測試Example:
fsd=fsd1,anchor=/mnt/cephfs02,depth=3,width=10,files=20,size(512,50,4k,50),openflags=o-direct
fwd=fwd1,fsd=fsd1,operation=write,xfersize=(4k,15,8k,35,1M,50),fileio=random,fileselect=random,threads=32
rd=rd1,fwd=fwd1,fwdrate=max,format=yes,elapsed=20,interval=1
3、運行腳本
root@node1:/home/vdbench/vdbench50406# ./vdbench -f examples/filesys/create_files -jn
其中-jn是為了做數據校驗,目前還不太懂。
4、輸出結果
會回寫輸出一大堆東西,如果沒有出現錯誤,最后會出現:
Vdbench execution completed successfully. Output directory: /home/vdbench/vdbench50406/output
每次運行后,vdbench 會創建一個包含以下文件的output文件夾:
(1)errorlog.html——當為測試啟用了數據驗證(-jn)時,它可包含一些數據塊中的錯誤的相關信息:
無效的密鑰讀取
無效的 lba 讀取(一個扇區的邏輯字節地址)
無效的 SD 或 FSD 名稱讀取
數據損壞,即使在使用錯誤的 lba 或密鑰時
數據損壞
壞扇區
(2)flatfile.html——包含 vdbench 生成的一種逐列的 ASCII 格式的信息。
(3)histogram.html——一種包含報告柱狀圖的響應時間、文本格式的文件。
(4)logfile.html——包含 Java 代碼寫入控制台窗口的每行信息的副本。logfile.html 主要用於調試用途
(5)parmfile.html——顯示已包含用於測試的每項內容的最終結果
(6)resourceN-M.html、resourceN.html、resourceN.var_adm_msgs.html
摘要報告、stdout/stderr 報告、主機 N 的摘要報告
最后 “nn” 行文件 /var/adm/messages 和 /var/adm/messages。每個 M 個 JVM/Slave 的目標主機 N 和主機 N 上為 0。
(7)sdN.histogram.html、sdN.html——每個 N 存儲定義的柱狀圖和存儲定義 “N” 報告。
(8)summary.html——主要報告文件,顯示為在每個報告間隔的每次運行生成的總工作負載,以及除第一個間隔外的所有間隔的加權平均值。
interval:報告間隔序號
ReqstdOps是指每秒讀的次數(一次讀的大小是配置文件配置的xfersize=8k)
I/O rate:每秒觀察到的平均 I/O 速率
MB sec:傳輸的數據的平均 MB 數
bytes I/O:平均數據傳輸大小
read pct:平均讀取百分比
resp time:以讀/寫請求持續時間度量的平均響應時間。所有 vdbench 時間都以毫秒為單位。
resp max:在此間隔中觀察到的最大響應時間。最后一行包含最大值總數。
resp stddev:響應時間的標准偏差
cpu% sys+usr:處理器繁忙 = 100(系統 + 用戶時間)(Solaris、Windows、Linux)
cpu% sys:處理器利用率:系統時間
(9)swat_mon.txt,swat_mon_total.txt
vdbench 與 Sun StorageTekTM Workload Analysis Tool (Swat) Trace Facility (STF) 相結合,支持重放使用 Swat 創建的一個軌跡的 I/O 工作負載。
Swat 使用 Create Replay File 選項創建和處理的軌跡文件會創建文件 flatfile.bin(flatfile.bin.gz 用於 vdbench403 和更高版本),其中包含 Swat 所識別的每個 I/O 操作的一條記錄。
這些文件包含一個格式化的報告,可將該報告導入 Swat Performance Monitor (SPM) 中來創建性能圖表。
四、vdbench裸盤測試——詳細參數說明:
1、對於一個塊設備,配置以下參數:
(1)HD:主機定義
• 如果您希望展示當前主機,則設置 hd= localhost。如果希望指定一個遠程主機,hd= label。
• system= IP 地址或網絡名稱。
Example:
hd=localhost,shell=ssh,vdbench=/home/vdbench/vdbench50406,user=root
hd=hd1,system=10.147.0.15
hd=hd2,system=10.147.37.173
注意:vdbench=dir ,這里的目錄是指所有主機上的目錄,這就表示,所有主機上的vdbench目錄都要一樣,且對應的配置要放在vdbench下面;
(2)SD:存儲定義
• sd= 標識存儲的名稱。
• host= 存儲所在的主機的 ID。
• lun= 原始磁盤、磁帶或文件系統的名稱。vdbench 也可為您創建一個磁盤。
• threads= 對 SD 的最大並發 I/O 請求數量。默認為 8。
• hitarea= 調整讀取命中百分比的大小。默認為 1m。
• openflags= 用於打開一個 lun 或一個文件的 flag_list,為了貼近真實場景,一般在這里選擇o_direct,繞過緩存機制,直接寫盤。
Example:
sd=default,threads=32,openflags=o_direct,size=340G
sd=sd1,hd=hd1,lun=/dev/sdb
sd=sd2,hd=hd1,lun=/dev/sdc
sd=sd3,hd=hd1,lun=/dev/sdd
sd=sd4,hd=hd1,lun=/dev/sde
sd=sd5,hd=hd1,lun=/dev/sdf
sd=sd6,hd=hd1,lun=/dev/sdg
sd=sd7,hd=hd1,lun=/dev/sdh
sd=sd8,hd=hd1,lun=/dev/sdi
sd=sd1,hd=hd2,lun=/dev/sdb
sd=sd2,hd=hd2,lun=/dev/sdc
sd=sd3,hd=hd2,lun=/dev/sdd
sd=sd4,hd=hd2,lun=/dev/sde
sd=sd5,hd=hd2,lun=/dev/sdf
sd=sd6,hd=hd2,lun=/dev/sdg
sd=sd7,hd=hd2,lun=/dev/sdh
sd=sd8,hd=hd2,lun=/dev/sdi
此配置區分了主機1和主機2,第一行是針對以下所有sd的通用配置;
(3)WD:工作負載定義
• wd= 標識工作負載的名稱。
• sd= 要使用的存儲定義的 ID。
• host= 要運行此工作負載的主機的 ID。默認設置為 localhost。
• rdpct= 讀取請求占請求總數的百分比。
• rhpct= 讀取命中百分比。默認設置為 0。
• whpct= 寫入命中百分比。默認設置為 0。
• xfersize= 要傳輸的數據大小。默認設置為 4k。
• seekpct= 隨機尋道的百分比。可為隨機值。
• openflags= 用於打開一個 lun 或一個文件的 flag_list。
• iorate= 此工作負載的固定 I/O 速率。
Example:
wd=wd1,sd=sd*,xfersize=4k,rdpct=0,seekpct=100
此配置,配置了塊的大小,讀的比例和隨機比例;
(4)RD:運行定義
• rd= 標識運行的名稱。
• wd= 用於此運行的工作負載的 ID。
• iorate= (#,#,...) 一個或多個 I/O 速率。(這里可以控制運行的iops,如果不控制就設置成max)
• elapsed= time:以秒為單位的運行持續時間。默認設置為30。(設置長時間的運行,可能會使得數據更加穩定)
• warmup= time:加熱期,最終會被忽略。
• distribution= I/O 請求的分布:指數、統一或確定性。
• pause= 在下一次運行之前休眠的時間,以秒為單位。
• openflags= 用於打開一個 lun 或一個文件的 flag_list。
Example:
rd=run1,wd=wd1,iorate=max,el=100000,in=1,warmup=600
此配置,配置了iorate(iops),運行時間,數據打印頻率
vdbench裸盤測試examples:
hd=localhost,shell=ssh,vdbench=/home/vdbench/vdbench50406,user=root
hd=hd1,system=200.200.213.30
sd=default,threads=16,openflags=o_direct,size=30G
sd=sd1,hd=hd1,lun=/dev/sdb
sd=sd2,hd=hd1,lun=/dev/sdc
sd=sd3,hd=hd1,lun=/dev/sdb
sd=sd4,hd=hd1,lun=/dev/sdc
sd=sd5,hd=hd1,lun=/dev/sdb
sd=sd6,hd=hd1,lun=/dev/sdc
sd=sd7,hd=hd1,lun=/dev/sdb
sd=sd8,hd=hd1,lun=/dev/sdc
wd=wd1,sd=sd*,xfersize=4k,rdpct=0,seekpct=100
rd=run1,wd=wd1,iorate=max,el=100000,in=1,warmup=600
輸出結果(部分):
Aug 13, 2018 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
07:37:56.397 1 85.00 0.33 4096 0.00 2968.303 0.000 2968.303 6136.625 1844.150 308.5 83.4 23.9
07:37:56.459 2 83.00 0.32 4096 0.00 3184.730 0.000 3184.730 7861.568 1795.753 348.0 95.5 68.2
07:37:56.478 3 23.00 0.09 4096 0.00 3441.907 0.000 3441.907 5995.742 1011.997 61.2 71.4 42.9
07:37:56.493 4 0.00 0.00 0 0.00 0.000 0.000 0.000 0.000 0.000 0.7 NaN NaN
07:37:56.647 5 0.00 0.00 0 0.00 0.000 0.000 0.000 0.000 0.000 0.8 83.3 33.3
07:38:01.132 6 0.00 0.00 0 0.00 0.000 0.000 0.000 0.000 0.000 40.8 85.7 33.3
07:38:01.162 7 44.00 0.17 4096 0.00 4070.731 0.000 4070.731 10818.509 2883.771 226.7 66.7 66.7
07:38:01.181 8 0.00 0.00 0 0.00 0.000 0.000 0.000 0.000 0.000 1.4 88.9 11.1
07:38:01.201 9 26.00 0.10 4096 0.00 4508.067 0.000 4508.067 15048.031 2778.336 27.7 91.7 55.6
07:38:01.630 10 8.00 0.03 4096 0.00 1806.932 0.000 1806.932 4328.737 1174.638 48.3 90.0 86.7
07:38:01.760 Detailed reporting is running behind; reporting of intervals 11-27 has been skipped.
07:38:54.054 28 0.00 0.00 0 0.00 0.000 0.000 0.000 0.000 0.000 15.9 NaN NaN
07:39:01.272 29 17.00 0.07 4096 0.00 4937.274 0.000 4937.274 7454.897 1474.074 39.4 NaN NaN
07:39:03.858 Detailed reporting is running behind; reporting of intervals 30-42 has been skipped.
07:39:59.480 89 84.00 0.33 4096 0.00 7764.630 0.000 7764.630 14029.705 2984.238 654.5 75.9 48.1
07:39:59.561 90 0.00 0.00 0 0.00 0.000 0.000 0.000 0.000 0.000 0.6 NaN NaN
五、多客戶端運行
3 Vdbench運行及結果查看
./vdbench -f parafile
parafiile為配置文件,如果需要校驗文件一致性可以可以指定-v參數,./vdbench -vf parafile
在vdbench安裝目錄下面有output目錄,可以查看運行及輸出結果,適用於windows及linux。
4 Linux下聯機運行
4.1 每個客戶的都需要安裝vdbench,路徑保持一致
4.2 SSH互相,選一個客戶的為父節點,把每個子節點都信任父節點
父節點為93.93.41.5,子節點為93.93.41.6
ssh-keygen -t rsa 生成秘鑰
chmod 755 /root/.ssh/ 修改生成秘鑰的權限
scp /root/.ssh/id_rsa.pub 93.93.41.6:/root/.ssh/authorized_keys 拷貝公鑰
4.3 驗證SSH互信
在父節點上ssh每一個子節點,如果不需要輸入秘鑰就能登錄,則互信成功。
4.4 多客戶端配置文件
hd=default,dbench=/home/Vdbench/,user=root,shell=ssh
hd=hd1,system=93.93.31.7
hd=hd2,system=93.93.41.8
hd=hd3,system=93.93.41.9
fsd=fsd1,anchor=/tmp/yht/client1,depth=2,width=100,files=2000,size=100m,shared=yes
fsd=fsd2,anchor=/tmp/yht/client2,depth=1,width=1000,files=2000,zies=(20m,40,100m,60),shared=yes
fsd=fsd3,anchor=/tmp/yht/client3,depth=1000,width=1,files2000,size=1m,shared=yes
fwd=fwd1,fsd=fsd1,host=hd1,operation=read,xfersize=(1m,40,64k,60),fileio=random,fileselect=sequantial,threads=32
fwd=fwd2,fsd=fsd2,host=hd2,operation=write,xfersize=64k,fileio=random,fileselect=sequantial,threads=32
fwd=fwd3,fsd=fsd3,host=hd3,rdpct=60,xfersize=4k,fileio=random,fileselect=sequantial,threads=32
rd=rd1,fwd=(fwd1-fwd3),fwdrate=max,format=restart,elapsed=600,interval=10
elapsed:定義測試時間
interval:測試結果刷新頻率(1秒鍾刷新一次測試結果)
iorate=max:運行最大io性能
openflags=o_direct:遍歷整個磁盤(測試裸設備時使用)
sd:使用之前定義過的sd。
seekpct:定義順序(seq)或隨機(random)。
rdpct定義讀寫比率:100為100%讀,100%寫。 xfersize:定義測試文件塊大小。
sd:存儲描述,定義測試磁盤。
lun:定義測試磁盤為/dev/sdk。
threads:定義並行測試進程為64進程。
wd:工作描述,定義策略。
fwdrate= 每秒執行的文件系統操作數量。
format=yes / no / only / restart / clean / directories
在開始運行之前要執行的操作
yes:刪除之前的文件結構,根據配置文件重新創建目錄和文件
no:默認使用原來的文件目錄結構,不會創建文件
restart:每次都會校驗一下數據,是否達到背景數據要求,沒有的話會繼續創建目錄和文件
elapsed:以秒為單位的運行持續時間,默認設置為 30s
腳本內容:(可按實際測試要求更改):
sd=sd1,lun=/dev/sdk,threads=64,range=(100g,150g)或者range=(30,50)容量百分比
wd=wd1,sd=sd*,seekpct=seq,rdpct=100,xfersize=1M,openflags=o_direct
rw=rd1,wd=wd*,elapses=120,interval=1,iorate=max
若是跑文件系統,先要掛載,之后在掛載的盤上建立文件,之后把腳本里的lun=/mnt/***就可以了
注:fsd中shared,vdbench不允許不同的slave之間共享同一個目錄結構下的所有文件,因為這樣會帶來很大的開銷,
但是它們允許共享同一個目錄結構。加入設置了shared=yes,那么不同的slave可以平分一個目錄下所有的文件
來進行訪問,相當於每個slave有各自等分的訪問區域,因此不能測試多個客戶的對同一個文件的讀寫。一般不需要帶
例如:
./vdbench -f 1M_seq_read -o /1M 測試腳本名稱為1M_seq_read,測試結果放在/1M目錄下,到所在目錄查看sd1
實際使用:針對ossfuse
cat random_read_100_100_300-100th
hd=default,vdbench=/home/vdbench,user=root,shell=ssh
hd=hd1,system=10.244.124.90
hd=hd2,system=10.244.124.91
hd=hd3,system=10.244.124.92
hd=hd4,system=10.244.124.93
fsd=fsd1,anchor=/mnt/sdoss/read_1023a1,depth=2,width=100,files=300,size=128k
fsd=fsd2,anchor=/mnt/sdoss/read_1023a2,depth=2,width=100,files=300,size=128k
fsd=fsd3,anchor=/mnt/sdoss/read_1023a3,depth=2,width=100,files=300,size=128k
fsd=fsd4,anchor=/mnt/sdoss/read_1023a4,depth=2,width=100,files=300,size=128k
fwd=fwd1,fsd=fsd1,host=hd1,operation=read,xfersize=8k,fileio=random,fileselect=random,threads=100
fwd=fwd2,fsd=fsd2,host=hd2,operation=read,xfersize=8k,fileio=random,fileselect=random,threads=100
fwd=fwd3,fsd=fsd3,host=hd3,operation=read,xfersize=8k,fileio=random,fileselect=random,threads=100
fwd=fwd4,fsd=fsd4,host=hd4,operation=read,xfersize=8k,fileio=random,fileselect=random,threads=100
rd=rd1,fwd=fwd*,fwdrate=max,format=no,elapsed=600,interval=5
cat random_rw_100_100_300-100th
hd=default,vdbench=/home/vdbench,user=root,shell=ssh
hd=hd1,system=10.244.124.90
hd=hd2,system=10.244.124.91
hd=hd3,system=10.244.124.92
hd=hd4,system=10.244.124.93
fsd=fsd1,anchor=/mnt/sdoss/read_1023a1,depth=2,width=100,files=300,size=128k
fsd=fsd2,anchor=/mnt/sdoss/read_1023a2,depth=2,width=100,files=300,size=128k
fsd=fsd3,anchor=/mnt/sdoss/read_1023a3,depth=2,width=100,files=300,size=128k
fsd=fsd4,anchor=/mnt/sdoss/read_1023a4,depth=2,width=100,files=300,size=128k
fwd=fwd1,fsd=fsd1,host=hd1,operation=write,xfersize=8k,fileio=random,fileselect=random,threads=100
fwd=fwd2,fsd=fsd2,host=hd2,operation=write,xfersize=8k,fileio=random,fileselect=random,threads=100
fwd=fwd3,fsd=fsd3,host=hd3,operation=write,xfersize=8k,fileio=random,fileselect=random,threads=100
fwd=fwd4,fsd=fsd4,host=hd4,operation=write,xfersize=8k,fileio=random,fileselect=random,threads=100
fwd=fwd5,fsd=fsd5,host=hd1,operation=read,xfersize=8k,fileio=random,fileselect=random,threads=100
fwd=fwd6,fsd=fsd6,host=hd2,operation=read,xfersize=8k,fileio=random,fileselect=random,threads=100
fwd=fwd7,fsd=fsd7,host=hd3,operation=read,xfersize=8k,fileio=random,fileselect=random,threads=100
fwd=fwd8,fsd=fsd8,host=hd4,operation=read,xfersize=8k,fileio=random,fileselect=random,threads=100
rd=rd1,fwd=fwd*,fwdrate=max,format=no,elapsed=600,interval=5
正常測試是測試內存的2倍
比如內存是8g,那就是測試16g的數據
16g/目錄數=結果*1024*1024=轉換的結果/文件大小=結果(結果為每個目錄的文件數)
根據上面的vdbench的配置文件就是:
16/100^2=0.0016*1024*1024=1677/128=15 測試的時候需要將file寫成15就可以了
報表解讀:
默認輸出的報表在程序目錄下的output文件夾里面
(運行程序的時候也可以指定報表位置“vdbench –f parmfile –o C:\test\”)
在默認報表文件夾里面,主要看summary.html和totals.html
報表里面“starting RD=format_for_rd1”的條目數據是為了初始化測試環境(創建文件夾,空文件等),主要看下一個條目(自己定義的)
Summary.html:記錄全部的數據信息
Totals.html:記錄所有數據計算之后的平均數據
http://www.mamicode.com/info-detail-1858176.html
報錯:
1、vdbench No read validations done during a Data Validation run
參考網站:
https://community.oracle.com/message/14179733#14179733
https://community.oracle.com/thread/3945285
執行命令去除-jn
-jn是支持數據校驗,可以驗證數據一致性,可以支持crash和reboot時的數據校驗。
說明:如果想測試下vdbench數據一致性檢查功能是否生效,可以將一個LUN通過iSCSI或者FC掛載到兩台主機,然后一台主機對LUN進行vdbench寫操作,另一台對該LUN進行dd寫,觀察Vdbench是否能實時檢測到數據不一致。
參考網站:https://blog.csdn.net/benfenge/article/details/58596910