vdbench和fio測試磁盤性能的對比總結

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

  • 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) 中來建立性能圖表。

二、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沒有                           

相關文章
相關標籤/搜索