vdbench使用
簡(jiǎn)介
vdbench是一個(gè) I/O 工作負(fù)載生成器,用于驗(yàn)證數(shù)據(jù)完整性和度量直接附加和網(wǎng)絡(luò)連接的存儲(chǔ)的性能。它是一個(gè)免費(fèi)的工具,容易使用,而且常常用于測(cè)試和基準(zhǔn)測(cè)試。
可以使用vdbench測(cè)試磁盤和文件系統(tǒng)的讀寫性能。
名詞解釋
vdbench中常用的一些名詞解釋:
HD ? ?主機(jī)定義
SD ? ?存儲(chǔ)定義?
WD ? 工作負(fù)載定義
RD ? ?運(yùn)行定義
FSD ? 文件系統(tǒng)存儲(chǔ)定義
FWD ?文件工作負(fù)載定義
安裝和配置
linux下配置vdbench
(1)下載Vdbench
下載地址:
http://www.oracle.com/technetwork/cn/server-storage/vdbench-downloads-1901681-zhs.html
下載之后解壓;
(2)然后安裝java(vdbench的運(yùn)行依賴于java)
yum install -y java
java -version
(3)安裝csh或者將csh從別的安裝好了的系統(tǒng)拷貝到/bin目錄下,vdbench在linux上的運(yùn)行需要csh來支撐。
? ? ? ? ?CSH,是一種計(jì)算機(jī)中的linux、unix命令,用來調(diào)用 C shell。
? ? ? ? ?C shell 是一個(gè)交互式命令解釋器和一種命令編程語言,采用的語法類似于 C 編程語言。shell 是交互式地從終端鍵盤或者是從一個(gè)文件來執(zhí)行命令的。這個(gè) csh 命令調(diào)用了 C shell。當(dāng)調(diào)用 csh 命令時(shí)就會(huì)執(zhí)行,這是通過查找根目錄和執(zhí)行命令從 .cshrc 文件(用來存儲(chǔ)用戶化的用戶信息)中,執(zhí)行的條件是命令存在。如果 csh 命令作為一個(gè)登錄 shell 運(yùn)行,就會(huì)從 .cshrc 和 .login 文件中執(zhí)行命令。
安裝:yum?install -y csh
查看:ls /bin/ |grep csh
(4)進(jìn)入vdbench相應(yīng)目錄下./vdbench -t 來測(cè)試一下vdbench的可用性,如果正常,會(huì)在目錄下自動(dòng)生成一個(gè)output目錄。
如果報(bào)錯(cuò),則需修改vdbench的權(quán)限:
root@node03:/home/vdbench/vdbench50406# chmod 777 vdbench
Windows下配置vdbench
(1)解壓vdbench包(vdbench的linux版本的包和windows是同一個(gè)),解壓之后,下載32位的java,安裝java,配置windows上java的環(huán)境變量;(注意:目前vdbench在windows支持32位的java)
(2)打開dos窗口,切換到vdbench目錄,執(zhí)行命令 vdbench -t來測(cè)試vdbench的可用性
使用
vdbench文件系統(tǒng)測(cè)試
對(duì)于一個(gè)文件系統(tǒng),需要配置以下參數(shù):
(1)HD:主機(jī)定義。與虛擬塊設(shè)備相同。
(2)FSD:文件系統(tǒng)定義
fsd= 標(biāo)識(shí)文件系統(tǒng)定義的名稱
anchor= 將在其中創(chuàng)建目錄結(jié)構(gòu)的目錄
width= 要在定位符下創(chuàng)建的目錄數(shù)
depth= 要在定位符下創(chuàng)建的級(jí)別數(shù)
files= 要在最低級(jí)別創(chuàng)建的文件數(shù)
sizes= (size,size,...) 將創(chuàng)建的文件大小
distribution= bottom(如果希望僅在最低級(jí)別創(chuàng)建文件)和 all(如果希望在所有目錄中創(chuàng)建文件)
openflags= 用于打開一個(gè)文件系統(tǒng) (Solaris) 的 flag_list
(3)FWD:文件系統(tǒng)工作負(fù)載定義
fwd= 標(biāo)識(shí)文件系統(tǒng)工作負(fù)載定義的名稱。
fsd= 要使用的文件系統(tǒng)定義的 ID。
host= 要用于此工作負(fù)載的主機(jī)的 ID。
fileio= random 或 sequential,表示文件 I/O 將執(zhí)行的方式。
fileselect= random 或 sequential,標(biāo)識(shí)選擇文件或目錄的方式。
xfersizes= 數(shù)據(jù)傳輸(讀取和寫入操作)處理的數(shù)據(jù)大小。
operation= mkdir、rmdir、create、delete、open、close、read、write、getattr 和 setattr。選擇要執(zhí)行的單個(gè)文件操作。
rdpct= (僅)讀取和寫入操作的百分比。
threads= 此工作負(fù)載的并發(fā)線程數(shù)量。每個(gè)線程需要至少 1 個(gè)文件。
(4)RD:運(yùn)行定義
fwd= 要使用的文件系統(tǒng)工作負(fù)載定義的 ID。
fwdrate= 每秒執(zhí)行的文件系統(tǒng)操作數(shù)量。
format= yes / no / only / restart / clean / directories。在開始運(yùn)行之前要執(zhí)行的操作。
operations= 覆蓋 fwd 操作。選項(xiàng)相同。
配置文件例子:
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
vdbench裸盤測(cè)試
1、對(duì)于一個(gè)塊設(shè)備,配置以下參數(shù):
(1)HD:主機(jī)定義
? ? ?如果您希望展示當(dāng)前主機(jī),則設(shè)置 hd= localhost。如果希望指定一個(gè)遠(yuǎn)程主機(jī),hd= label。
? ? ?system= IP 地址或網(wǎng)絡(luò)名稱。
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 ,這里的目錄是指所有主機(jī)上的目錄,這就表示,所有主機(jī)上的vdbench目錄都要一樣,且對(duì)應(yīng)的配置要放在vdbench下面;
(2)SD:存儲(chǔ)定義
? ? ?sd= 標(biāo)識(shí)存儲(chǔ)的名稱。
? ? ?host= 存儲(chǔ)所在的主機(jī)的 ID。
? ? ?lun= 原始磁盤、磁帶或文件系統(tǒng)的名稱。vdbench 也可為您創(chuàng)建一個(gè)磁盤。
? ? ?threads= 對(duì) SD 的最大并發(fā) I/O 請(qǐng)求數(shù)量。默認(rèn)為 8。
? ? ?hitarea= 調(diào)整讀取命中百分比的大小。默認(rèn)為 1m。
? ? ?openflags= 用于打開一個(gè) lun 或一個(gè)文件的 flag_list,為了貼近真實(shí)場(chǎng)景,一般在這里選擇o_direct,繞過緩存機(jī)制,直接寫盤。
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
? ? ? 此配置區(qū)分了主機(jī)1和主機(jī)2,第一行是針對(duì)以下所有sd的通用配置;
(3)WD:工作負(fù)載定義
? ? ?wd= 標(biāo)識(shí)工作負(fù)載的名稱。
? ? ?sd= 要使用的存儲(chǔ)定義的 ID。
? ? ?host= 要運(yùn)行此工作負(fù)載的主機(jī)的 ID。默認(rèn)設(shè)置為 localhost。
? ? ?rdpct= 讀取請(qǐng)求占請(qǐng)求總數(shù)的百分比。
? ? ?rhpct= 讀取命中百分比。默認(rèn)設(shè)置為 0。
? ? ?whpct= 寫入命中百分比。默認(rèn)設(shè)置為 0。
? ? ?xfersize= 要傳輸?shù)臄?shù)據(jù)大小。默認(rèn)設(shè)置為 4k。
? ? ?seekpct= 隨機(jī)尋道的百分比。可為隨機(jī)值。
? ? ?openflags= 用于打開一個(gè) lun 或一個(gè)文件的 flag_list。
? ? ?iorate= 此工作負(fù)載的固定 I/O 速率。
Example:
wd=wd1,sd=sd*,xfersize=4k,rdpct=0,seekpct=100
此配置,配置了塊的大小,讀的比例和隨機(jī)比例;
(4)RD:運(yùn)行定義
? ? ?rd= 標(biāo)識(shí)運(yùn)行的名稱。
? ? ?wd= 用于此運(yùn)行的工作負(fù)載的 ID。
? ? ?iorate= (#,#,...) 一個(gè)或多個(gè) I/O 速率。(這里可以控制運(yùn)行的iops,如果不控制就設(shè)置成max)
? ? ?elapsed= time:以秒為單位的運(yùn)行持續(xù)時(shí)間。默認(rèn)設(shè)置為30。(設(shè)置長(zhǎng)時(shí)間的運(yùn)行,可能會(huì)使得數(shù)據(jù)更加穩(wěn)定)
? ? ?warmup= time:加熱期,最終會(huì)被忽略。
? ? ?distribution= I/O 請(qǐng)求的分布:指數(shù)、統(tǒng)一或確定性。
? ? ?pause= 在下一次運(yùn)行之前休眠的時(shí)間,以秒為單位。
? ? ?openflags= 用于打開一個(gè) lun 或一個(gè)文件的 flag_list。
配置文件例子:
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
?
結(jié)果分析
每次運(yùn)行后,vdbench 會(huì)創(chuàng)建一個(gè)包含以下文件的output文件夾:
(1)errorlog.html——當(dāng)為測(cè)試啟用了數(shù)據(jù)驗(yàn)證(-jn)時(shí),它可包含一些數(shù)據(jù)塊中的錯(cuò)誤的相關(guān)信息:
????????無效的密鑰讀取
????????無效的 lba 讀取(一個(gè)扇區(qū)的邏輯字節(jié)地址)
????????無效的 SD 或 FSD 名稱讀取
????????數(shù)據(jù)損壞,即使在使用錯(cuò)誤的 lba 或密鑰時(shí)
????????數(shù)據(jù)損壞
????????壞扇區(qū)
(2)flatfile.html——包含 vdbench 生成的一種逐列的 ASCII 格式的信息。
(3)histogram.html——一種包含報(bào)告柱狀圖的響應(yīng)時(shí)間、文本格式的文件。
(4)logfile.html——包含 Java 代碼寫入控制臺(tái)窗口的每行信息的副本。logfile.html 主要用于調(diào)試用途
(5)parmfile.html——顯示已包含用于測(cè)試的每項(xiàng)內(nèi)容的最終結(jié)果
(6)resourceN-M.html、resourceN.html、resourceN.var_adm_msgs.html
? ? ? ? ?摘要報(bào)告、stdout/stderr 報(bào)告、主機(jī) N 的摘要報(bào)告
????????最后 “nn” 行文件 /var/adm/messages 和 /var/adm/messages。每個(gè) M 個(gè) JVM/Slave 的目標(biāo)主機(jī) N 和主機(jī) N 上為 0。
(7)sdN.histogram.html、sdN.html——每個(gè) N 存儲(chǔ)定義的柱狀圖和存儲(chǔ)定義 “N” 報(bào)告。
(8)summary.html——主要報(bào)告文件,顯示為在每個(gè)報(bào)告間隔的每次運(yùn)行生成的總工作負(fù)載,以及除第一個(gè)間隔外的所有間隔的加權(quán)平均值。
????????interval:報(bào)告間隔序號(hào)
????????I/O rate:每秒觀察到的平均 I/O 速率
????????MB sec:傳輸?shù)臄?shù)據(jù)的平均 MB 數(shù)
????????bytes I/O:平均數(shù)據(jù)傳輸大小
????????read pct:平均讀取百分比
????????resp time:以讀/寫請(qǐng)求持續(xù)時(shí)間度量的平均響應(yīng)時(shí)間。所有 vdbench 時(shí)間都以毫秒為單位。
????????resp max:在此間隔中觀察到的最大響應(yīng)時(shí)間。最后一行包含最大值總數(shù)。
????????resp stddev:響應(yīng)時(shí)間的標(biāo)準(zhǔn)偏差
????????cpu% sys+usr:處理器繁忙 = 100(系統(tǒng) + 用戶時(shí)間)(Solaris、Windows、Linux)
????????cpu% sys:處理器利用率:系統(tǒng)時(shí)間
(9)swat_mon.txt,swat_mon_total.txt
????????vdbench 與 Sun StorageTekTM Workload Analysis Tool (Swat) Trace Facility (STF) 相結(jié)合,支持重放使用 Swat 創(chuàng)建的一個(gè)軌跡的 I/O 工作負(fù)載。
????????Swat 使用 Create Replay File 選項(xiàng)創(chuàng)建和處理的軌跡文件會(huì)創(chuàng)建文件 flatfile.bin(flatfile.bin.gz 用于 vdbench403 和更高版本),其中包含 Swat 所識(shí)別的每個(gè) I/O 操作的一條記錄。
這些文件包含一個(gè)格式化的報(bào)告,可將該報(bào)告導(dǎo)入 Swat Performance Monitor (SPM) 中來創(chuàng)建性能圖表。?
數(shù)據(jù)一致性校驗(yàn)
vdbench另一個(gè)重要功能就是做數(shù)據(jù)校驗(yàn),可以通過執(zhí)行時(shí)增加以下命令參數(shù)來打開數(shù)據(jù)校驗(yàn)功能:
-v Activate data validation.
-vr Activate data validation, immediately re-read after each write. (寫完馬上重讀校驗(yàn))
選項(xiàng)'-vr'可用于在每次寫后立即進(jìn)行讀取和驗(yàn)證,而通常只在數(shù)據(jù)塊計(jì)劃下一次讀或下一次寫時(shí)進(jìn)行驗(yàn)證。當(dāng)對(duì)一個(gè)大LUN進(jìn)行I/O操作時(shí),塊再次被引用通常需要一段時(shí)間。因此,有時(shí)這可能有助于快速確認(rèn)數(shù)據(jù)是否正確。但是,請(qǐng)注意,在寫之后立即讀取塊很可能只會(huì)顯示數(shù)據(jù)已經(jīng)到達(dá)控制器緩存,而沒有證據(jù)表明數(shù)據(jù)曾經(jīng)到達(dá)物理磁盤驅(qū)動(dòng)器。
-vw Activate data validation, but don’t read before write. (保證讀在寫之后)
-vt Activate data validation, keep track of each write timestamp (memory intensive)? (跟蹤每個(gè)寫時(shí)間戳(內(nèi)存密集型))
選項(xiàng)'-vt'將在內(nèi)存中保存最近一次成功讀或?qū)懙臅r(shí)間戳(沒有日志可用)。當(dāng)數(shù)據(jù)塊失敗時(shí),將報(bào)告此時(shí)間戳。知道塊在一天中的什么時(shí)候是好的,可以幫助您識(shí)別可能導(dǎo)致問題的錯(cuò)誤注入。注意:這需要每個(gè)數(shù)據(jù)塊多8個(gè)字節(jié)的內(nèi)存(因此512字節(jié)塊的內(nèi)存需求可能令人望而卻步)。
-j Activate data validation
-jn
-vr
-vt
配置文件方式如下:
vdbench配置中,校驗(yàn)方式:
create_anchors=yes
validate=yes
validate=read
validate=read_after_write
validate=no_preread
validate=time
journal=yes
journal=noflush
參考文章:
原文鏈接:https://blog.csdn.net/u012114090/article/details/81626430
總結(jié)
- 上一篇: svnadmin服务安装
- 下一篇: c语言 画图软件哪个好,电脑画图软件推荐