ceph io性能測試


vdbench測試

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:不受控制的工作負載。

·        apsed= 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 會創建一個包含以下文件的輸出文件夾:當為測試啟用了數據驗證時,它可包含一些數據塊中的錯誤的相關信息:    

  • 無效的密鑰讀取
  • 無效的 lba 讀取(一個扇區的邏輯字節地址)
  • 無效的 SD 或 FSD 名稱讀取
  • 數據損壞,即使在使用錯誤的 lba 或密鑰時
  • 數據損壞
  • 壞扇區

包含 vdbench 生成的一種逐列的 ASCII 格式的信息。一種包含報告柱狀圖的響應時間、文本格式的文件。包含 Java 代碼寫入控制台窗口的每行信息的副本。l 主要用於調試用途顯示已包含用於測試的每項內容的最終結果

l、l、resourcel

  • 摘要報告
  • stdout/stderr 報告
  • 主機 N 的摘要報告
  • 最后 “nn” 行文件 /var/adm/messages 和 /var/adm/messages。每個 M 個 JVM/Slave 的目標主機 N 和主機 N 上為 0。

sdl、

每個 N 存儲定義的柱狀圖和存儲定義 “N” 報告。主要報告文件,顯示為在每個報告間隔的每次運行生成的總工作負載,以及除第一個間隔外的所有間隔的加權平均值。    

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

基准測試和結果

  我們運行了 3 個不同的測試。

測試 1

  在第一個測試中,使用一個 parmfile 定義對單個原始磁盤的單次運行測試。

  名為 sd1 的存儲指向大小為 4MB 的設備 /dev/rdsk/c0t0d0s0。

  定義了工作負載 wd1 來在存儲 sd1 上運行,其中讀取操作占 100%,每個操作涉及到一個 4KB 數據塊。

  定義了運行,以 100 個操作/秒的速度使用工作負載 wd1 10 秒。

清單 5. 定義了對單個原始磁盤的一次運行測試的 Parmfile

*SD: StorageDefinition *WD: Workload Definition *RD: Run Definition *sd=sd1,lun=/dev/rdsk/c0t0d0s0,size=4m wd=wd1,sd=sd1,xfersize=4096,readpct=100rd=run1,wd=wd1,iorate=100,elapsed=10,interval=1 *Single raw disk, 100% randomread of 4KB blocks at I/O rate of 100 for 10 seconds

測試 2

  在此測試期間,parmfile 定義了對一個文件系統和對遠程主機 129.35.213.249 的一次測試。HD 包含安裝在遠程主機上的 vdbench 的完整路徑,以及用於通信的 shell(ssh 或 own rsh)。

  在本例中,vdbench 表示 rsh。User=root 是擁有遠程主機上的進程的用戶。文件系統的定義支持創建一個包含 3 個級別的結構,每個級別包含兩個目錄和兩個文件(借助於選項 distribution=all)。工作負載包含 80% 的讀取操作(20% 的寫入操作)、一個隨機文件選擇操作和隨機文件I/O。操作涉及到 4KB 的數據塊。

  該運行以最大速率使用此工作負載 600 秒,每秒抽樣一次並在啟動時格式化文件系統。
清單 6. 定義對一個文件系統和一個遠程主機的一次測試的 Parmfile

hd=resource1,system=129.35.213.249,vdbench=/var/www/html/vdbench,shell=vdbench,user=rootfsd=fsd1,anchor=/fs,width=2,depth=3,files=2,distribution=all,size=4m,openflags=(o_dsync,o_rsync)fwd=fwd1,fsd=fsd1,host=resource1,xfersize=4096,operation=read,rdpct=80,fileselect=random,fileio=random,threads=1 rd=run1,fwd=fwd1,fwdrate=max,format=yes,elapsed=600,interval=3

測試 3

  在此測試中,parmfile 定義一個要在其中執行測試的 SmartCloud 主機。存儲是一個臨時創建的 1GB 大的虛擬塊設備,稱為 disk1.raw。

  所有設置都以再現最壞的情形(沒有任何命中區域)為導向,以加快響應速度,使用 open-flags 來打開文件或設備以避免使用緩沖區緩存(o_direct)。

  工作負載定義強化了同時避免讀取和寫入命中 (rhpct=0whpct=0) 的概念,隨機尋道百分比為 100%。該測試執行 11 次,每次按照一條定義的曲線執行 1500 秒。第一次運行嘗試發現最大的 i/o 速率。其他運行將 I/O 速率增加 10%,一直從 10 增加到 100。每次運行生成一個具有指數分布的工作負載。

  清單 7. 定義要在其上執行測試的 SmartCloud 主機的 Parmfile

hd=resource1,system=129.35.209.189,vdbench=/var/www/html/vdbench503,shell=vdbench,user=root sd=sd1,lun=/home/idcuser/disk1.raw,hitarea=0m,offset=32256,openflags=o_directwd=wd1,sd=sd1,host=resource1,xfersize=4096,rdpct=40,rhpct=0,whpct=0,seekpct=100rd=run1,wd=wd1,iorate=curve,curve=(10-100,10),format=yes,elapsed=1500,warmup=18,distribution=exponential,pause=60,interval=6,threads=1

 

示例Demo:

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。就能達到效果了。

vdbench工具的測試命令可以如下書寫:

vdbench -fsd=sd1,lun=/dev/sdb1,size=100g,align=8192,threads=64,openflags=o_dsync,openflag=o_rsync,openflag=o_direct

wd=wd1,sd=sd1,xfersize=8k,seekpct=random,rdpct=100

rd=run1,wd=wd1,iorate=max,warmup=30,elapsed=60,interval=1

-o wm

其中,lun指出待測試設備名稱,threads數為線程數,xfersize為緩存空間,seekpct為測試類型,warmup為預熱時間(在最后統計時會去除),elapsed指命令運行時間

 

fio測試
fio --name=test1 --filename=/dev/rbd0 --ioengine=libaio --numjobs=1 --iodepth=32 --rw=randwrite --blocksize=16k --size=100G --direct=1 --output=ranr100G.txt

二、FIO用法:
隨機讀:
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=16k -size=200G -numjobs=10 -runtime=1000 -group_reporting -name=mytest
說明:
filename=/dev/sdb1 測試文件名稱,通常選擇需要測試的盤的data目錄。
direct=1 測試過程繞過機器自帶的buffer。使測試結果更真實。
rw=randwrite 測試隨機寫的I/O
rw=randrw 測試隨機寫和讀的I/O
bs=16k 單次io的塊文件大小為16k
bsrange=512-2048 同上,提定數據塊的大小范圍
size=5g 本次的測試文件大小為5g,以每次4k的io進行測試。
numjobs=30 本次的測試線程為30.
runtime=1000 測試時間為1000秒,如果不寫則一直將5g文件分4k每次寫完為止。
ioengine=psync io引擎使用pync方式
rwmixwrite=30 在混合讀寫的模式下,寫占30%
group_reporting 關於顯示結果的,匯總每個進程的信息。
此外
lockmem=1g 只使用1g內存進行測試。
zero_buffers 用0初始化系統buffer。
nrfiles=8 每個進程生成文件的數量。
順序讀:
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
隨機寫:
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
順序寫:
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
混合隨機讀寫:
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=100 -group_reporting -name=mytest -ioscheduler=noop


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM