vdbench是一個 I/O 工作負載生成器,用於驗證數據完整性和度量直接附加和網絡連接的存儲的性能。它是一個免費的工具,容易使用,而且常常用於測試和基准測試。
1.安裝
需要安裝jdk
到oracel下載vdbench504;不需要安裝,直接以絕對路徑執行就可以
建議解壓到/var/www/html/vdbench
#unzip vdbench504 -d /var/www/html/vdbench
2.使用
./vdbench -t
這一步先測試一下工具能不能用,如何正常,會在目錄下自動生成一個output
./vdbench -f parmfile
根據指定配置文件測試
這里的parmfile需要根據測試環境修改,可以參考output目錄下的parmfile
樣例:
dd if=/dev/zero of=/tmp/disk1 bs=4 count=1M
vim parmfile
sd=sd1,lun=/tmp/disk1 size=4m
wd=wd1,sd=sd1,xfersize=4096,readpct=100
rd=run1,wd=wd1,iorate=100,elapsed=10,interval=1
[root@localhost vdbench504]# ./vdbench -f parmfile.html
Vdbench distribution: vdbench504
For documentation, see 'vdbench.pdf'.
3.參數說明
對於一個虛擬塊設備,配置以下參數:
HD:主機定義
-
如果您希望展示當前主機,則設置 hd= localhost。如果希望指定一個遠程主機,hd= label。
-
system= IP 地址或網絡名稱。
-
clients= 用於模擬服務器的正在運行的客戶端數量。
SD:存儲定義
-
sd= 標識存儲的名稱。
-
host= 存儲所在的主機的 ID。
-
lun= 原始磁盤、磁帶或文件系統的名稱。vdbench 也可為您創建一個磁盤。
-
threads= 對 SD 的最大並發 I/O 請求數量。默認為 8。
-
hitarea= 調整讀取命中百分比的大小。默認為 1m。
-
openflags= 用於打開一個 lun 或一個文件的 flag_list。
WD:工作負載定義
-
wd= 標識工作負載的名稱。
-
sd= 要使用的存儲定義的 ID。
-
host= 要運行此工作負載的主機的 ID。默認設置為 localhost。
-
rdpct= 讀取請求占請求總數的百分比。
-
rhpct= 讀取命中百分比。默認設置為 0。
-
whpct= 寫入命中百分比。默認設置為 0。
-
xfersize= 要傳輸的數據大小。默認設置為 4k。
-
seekpct= 隨機尋道的百分比。可為隨機值。
-
openflags= 用於打開一個 lun 或一個文件的 flag_list。
-
iorate= 此工作負載的固定 I/O 速率。
RD:運行定義
-
rd= 標識運行的名稱。
-
wd= 用於此運行的工作負載的 ID。
-
iorate= (#,#,...) 一個或多個 I/O 速率。
-
curve:性能曲線(待定義)。
-
max:不受控制的工作負載。
-
elapsed= time:以秒為單位的運行持續時間。默認設置為 30。
-
warmup= time:加熱期,最終會被忽略。
-
distribution= I/O 請求的分布:指數、統一或確定性。
-
pause= 在下一次運行之前休眠的時間,以秒為單位。
-
openflags= 用於打開一個 lun 或一個文件的 flag_list。
對於一個文件系統
對於一個文件系統,配置以下參數:
HD:主機定義。與虛擬塊設備相同。
FSD:文件系統定義
-
fsd= 標識文件系統定義的名稱
-
anchor= 將在其中創建目錄結構的目錄
-
width= 要在定位符下創建的目錄數
-
depth= 要在定位符下創建的級別數
-
files= 要在最低級別創建的文件數
-
sizes= (size,size,...) 將創建的文件大小
-
distribution= bottom(如果希望僅在最低級別創建文件)和 all(如果希望在所有目錄中創建文件)
-
openflags= 用於打開一個文件系統 (Solaris) 的 flag_list
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 個文件。
RD:運行定義
-
fwd= 要使用的文件系統工作負載定義的 ID。
-
fwdrate= 每秒執行的文件系統操作數量。
-
format= yes / no / only / restart / clean / directories。在開始運行之前要執行的操作。
-
operations= 覆蓋 fwd 操作。選項相同。
運行之后的輸出文件夾文件
每次運行后,vdbench 會創建一個包含以下文件的輸出文件夾:
-
errorlog.html
-
當為測試啟用了數據驗證時,它可包含一些數據塊中的錯誤的相關信息:
-
無效的密鑰讀取
-
無效的 lba 讀取(一個扇區的邏輯字節地址)
-
無效的 SD 或 FSD 名稱讀取
-
數據損壞,即使在使用錯誤的 lba 或密鑰時
-
數據損壞
-
壞扇區
-
-
flatfile.html
-
包含 vdbench 生成的一種逐列的 ASCII 格式的信息。
-
histogram.html
-
一種包含報告柱狀圖的響應時間、文本格式的文件。
-
logfile.html
-
包含 Java 代碼寫入控制台窗口的每行信息的副本。logfile.html 主要用於調試用途
-
parmfile.html
-
顯示已包含用於測試的每項內容的最終結果
-
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。
-
-
sdN.histogram.html、sdN.html
-
每個 N 存儲定義的柱狀圖和存儲定義 “N” 報告。
-
summary.html
-
主要報告文件,顯示為在每個報告間隔的每次運行生成的總工作負載,以及除第一個間隔外的所有間隔的加權平均值。
-
interval:報告間隔序號
-
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:處理器利用率:系統時間
-
-
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) 中來創建性能圖表。
-
-
個人總結:
1。指定一個分區報錯
Slave localhost-0 aborting: On Linux 'openflags=o_direct' is required for any lun starting with '/dev/': /dev/sdb1
解決方法
在lun后面加上openflags=o_direct
sd=sd1,lun=/dev/sdb1,openflags=o_direct
使用 vdbench 來測試原始磁盤和文件系統。它有一個 Web 用戶界面可顯示詳細的性能報告。vdbench 由 Sun Microsystems 的 Henk Vandenbergh 開發,以前稱為 StorageTek。vdbench 是使用 Java? 編寫的。它在 Solaris、Windows、HP-UX、AIX、Linux、Mac OS X、zLinux 和原生 VMware 上經過了測試。
1.先將以下4個文件准備好:
jdk-6u3-Linux-i586-rpm.bin
Parmfile
vdbench502.tar
Vdbench使用指導書.doc
2.在linux下建立一個文件夾,為vdbench。
3.將上面的4個文件copy到剛才建立的文件建vdbench中。
4.安裝jdk - jdk-6u3-linux-i586-rpm.bin
先賦予權限:chmod 755 *
在執行:./jdk-6u3-linux-i586-rpm.bin
執行該命令后,會讓你閱讀協議,一直點擊回車到最后,輸入yes或者y,同意協議。
5.解壓tar包: tar -xvf vdbench502.tar
6.執行命令:./vdbench -t。對vdbench進行測試
最后輸出: Vdbench execution completed successfully. Output directory: /root/vdbench/output。表示執行測試成功。
7.使用命名: vi parmfile 。進入文件,對里面的參數進行修改。
8.保存parmfile文件后。執行命令:./vdbench -f parmfile。就能達到效果了。
http://blog.chinaunix.net/uid-29163607-id-4855449.html
http://pt.findeen.com/vdbench使用指導書.html
2.
編輯測試腳本:
腳本內容:
(可按實際測試要求更改)
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
rd=rd1,wd=wd*,elapsed=120,interval=1,iorate=max
若是跑文件系統,先要掛載,之后在掛載的盤上建立文件,之后把腳本里的
lun=/mnt/***
就可以了
sd
:存儲描述,定義測試磁盤。
lun
:定義測試磁盤為
/dev/sdk
。
threads
:定義並行測試進程為
64
進程。
wd
:工作描述,定義策略。
sd
:使用之前定義過的
sd
。
seekpct
:定義順序
(seq)
或隨機
(random)
。
rdpct
定義讀寫比率:
100
為
100%
讀,
100%
寫。
xfersize
:定義測試文件塊大小。
openflags=o_direct
:遍歷整個磁盤(測試裸設備時使用)
rd
:運行描述,定義運行方式:
wd
:使用之前定義過的
wd
。
elapsed
:定義測試時間(
120
秒)。
interval
:測試結果刷新頻率(
1
秒鍾刷新一次測試結果)。
iorate=max
:運行最大
io
性能
可以更改測試磁盤、讀寫策略、塊大小、測試時間及刷新頻率來進行不同方式的測試。
注:默認
vdbench503rc5x
目錄下的
examples
里有示例,可以按照示例更改測試腳本。
3.
開始運行測試:
在
vdbench503rc5x
目錄下直接運行
./vdbench
–
f
測試腳本
–
o
結果輸出文件存放
在目錄下可能需要權限:
chmod
777
vdvench