1、安裝html
一、安裝vdbench,首先安裝java:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmljava
其次下載vdbench安裝包並進行安裝:http://pan.baidu.com/s/1b7XooY; shell
#mv vdbench50406 /var/www/html/ #unzip vdbench50406.zip -d vdbench504
啓動基準測試以前,使用默認的參數檢查安裝是否成功完成:服務器
# ./vdbench -t網絡
[root@lrrvd vdbench504]# ./vdbench -t 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'. 16:47:50.883 input argument scanned: '-f/tmp/parmfile' 16:47:50.939 Starting slave: /var/www/html/vdbench504/vdbench SlaveJvm -m localhost -n localhost-10-171116-16.47.50.757 -l localhost-0 -p 5570 16:48:01.006 Waiting for slave connection: localhost-0 16:48:01.508 All slaves are now connected 16:48:03.002 Starting RD=rd1; I/O rate: 100; elapsed=5; For loops: None Nov 16, 2017 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 16:48:04.051 1 86.00 0.08 1024 54.65 0.012 0.009 0.015 0.064 0.010 0.0 12.6 2.1 16:48:05.047 2 93.00 0.09 1024 50.54 0.016 0.012 0.020 0.064 0.012 0.0 5.1 1.0 16:48:06.047 3 94.00 0.09 1024 50.00 0.010 0.007 0.013 0.043 0.006 0.0 2.0 0.0 16:48:07.046 4 88.00 0.09 1024 50.00 0.012 0.008 0.017 0.043 0.009 0.0 2.5 0.5 16:48:08.051 5 99.00 0.10 1024 57.58 0.009 0.007 0.013 0.026 0.005 0.0 2.0 0.5 16:48:08.076 avg_2-5 92.00 0.09 1024 52.61 0.012 0.008 0.016 0.064 0.009 0.0 6.6 1.1 16:48:08.749 Vdbench execution completed successfully. Output directory: /var/www/html/vdbench504/output
目前爲止,安裝完成。併發
介紹一下參數意義:對於一個虛擬塊設備,配置如下參數oracle
HD:主機定義dom
若是您但願展現當前主機,則設置 hd= localhost。若是但願指定一個遠程主機,hd= label。ssh
system= IP 地址或網絡名稱oop
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= 讀取請求佔請求總數的百分比,爲100,則爲讀;爲0,則爲寫。
rhpct= 讀取命中百分比。默認設置爲 0。
whpct= 寫入命中百分比。默認設置爲 0。
xfersize= 要傳輸的數據大小。默認設置爲 4k。
seekpct= 隨機尋道的百分比。可爲隨機值,爲0則爲順序;爲100則爲隨機。
openflags= 用於打開一個 lun 或一個文件的 flag_list,裸盤設置openflags=o_direct
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 將執行的方式。順序讀寫,隨機速寫;對應裸設備的seekpct
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。在開始運行以前要執行的操做。
no是不改變文件目錄;yes是改變;restart是接着原來的文件目錄再去建立;
operations= 覆蓋 fwd 操做。選項相同。
1)測試塊設備的性能(隨機寫)
編輯測試腳本文件test1(測試本機一塊磁盤)
hd=default,vdbench=/var/www/html/vdbench504,user=root,shell=ssh sd=sd1,lun=/dev/vdc,openflags=o_direct,threads=1 wd=wd1,sd=sd1,xfersize=16k,readpct=0,seekpct=100 rd=rd1,wd=wd1,iorate=max,elapsed=120,maxdata=5500g,interval=1,warmup=30
隨機讀:readpct=100,seekpct=100;隨機寫:readpct=0,seekpct=100;隨機讀寫各佔50%:readpct=50,seekpct=100;順序讀:readpct=100,seekpct=0;順序寫:readpct=0,seekpct=0;順序讀寫各佔50%:readpct=50,seekpct=0
測試本機兩塊磁盤(後面類推)
hd=default,vdbench=/var/www/html/vdbench504,user=root,shell=ssh sd=sd1,lun=/dev/vdc,openflags=o_direct,threads=1 sd=sd2,lun=/dev/vdb,openflags=o_direct,threads=1 wd=wd1,sd=sd*,xfersize=16k,readpct=0,seekpct=100 rd=rd1,wd=wd1,iorate=max,elapsed=120,maxdata=5500g,interval=1,warmup=30
若是多節點測試,則須要設置ssh通訊,而且每一個節點都安裝vdbench,路徑一致:
第一步:在本地機器上使用ssh-keygen產生公鑰私鑰對
第二步:用ssh-copy-id將公鑰複製到遠程機器中
# ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host
多臺能夠循環或者用ansible批量執行
#for i in {x..y};do ssh-copy-id -i ~/.ssh/id_rsa.pub 10.139.11.$i;done
#ansible test -m copy -a "src=/root/.ssh/id_rsa.pub dest=/root/.ssh/"
注意: ssh-copy-id 將key寫到遠程機器的 ~/ .ssh/authorized_key.文件中,通訊成功,ssh remote-host
hd=default,vdbench=/var/www/html/vdbench504,user=root,shell=ssh hd=hd1,system=10.139.11.118 hd=hd2,system=10.139.11.119 #hd=hd3,system=93.93.41.9 sd=sd1,hd=hd1,lun=/dev/vdc,openflags=o_direct,threads=1 sd=sd2,hd=hd2,lun=/dev/vdc,openflags=o_direct,threads=1 wd=wd1,sd=sd*,xfersize=16k,readpct=0,seekpct=100 rd=run1,wd=wd1,iorate=100,elapsed=120,interval=1
2)測試文件隨機寫
hd=default,vdbench=/var/www/html/vdbench504,user=root,shell=ssh fsd=fsd1,anchor=/mnt/1,depth=1,width=10,files=10,size=2m,shared=yes fwd=fwd1,fsd=fsd1,threads=6,xfersize=4k,fileio=random,fileselect=random,operation=write rd=rd1,fwd=fwd*,fwdrate=max,format=restart,elapsed=120,interval=1
fwd=format,表示fwd那行全部的參數設置都被覆蓋,不論設置rdpct爲多少,全爲read操做
進行數據一致性校驗:經過加-v或-j或Validate=yes
-v的數據校驗,校驗文件會輸出到內存中,可是一旦vdbench關閉或者系統重啓,校驗就會失敗。而-j能進行持續校驗,等下次重啓時,會恢復原始數據從新校驗。若是隻寫-j而不加-v,也會進行-v操做。
執行測試:./vdbench -f example -jn 其中-jn是爲了作數據校驗
每次運行後,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:報告間隔序號
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
Swat 使用 Create Replay File 選項建立和處理的軌跡文件會建立文件 flatfile.bin(flatfile.bin.gz 用於 vdbench403 和更高版本),其中包含 Swat 所識別的每一個 I/O 操做的一條記錄。
這些文件包含一個格式化的報告,可將該報告導入 Swat Performance Monitor (SPM) 中來建立性能圖表。
二、fio的安裝
直接下載安裝軟件,拷貝到虛機便可,經過本身寫腳本或者執行命令去測試,以下命令是測試隨機讀寫,讀寫比例爲7:3
fio --ioengine=libaio --direct=1 --group_reporting --norandommap --userspace_reap --thread --time_based --runtime=1800 --ramp_time=60 --randrepeat=0 --iodepth=16 --numjobs=4 --rw=randrw --rwmixread=70 --bs=4k --filename=/dev/vdb --size=200G --name=randrw1
2、二者的區別與共同之處
一、vdbench中的threads至關於fio的threads和depth
二、vdbench測試結果中的I/O至關於fio的iops;vdbench中的MB/sec至關於fio的BW帶寬;vdbench的rest time至關於fio的時延
三、vdbench測試的是整個集羣或者整個虛機或者全部磁盤的總性能,而fio須要寫腳本去測試多個磁盤或者多臺虛機
四、vdbench有數據一致性校驗的參數,進行數據校驗須要執行-v,也能夠在參數文件中寫入Validate=yes;fio沒有