日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Vdbench工具文件系统测试记录

發布時間:2023/12/31 windows 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Vdbench工具文件系统测试记录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Vdbench工具測試記錄

文件系統通用參數說明

HD
  • Host Definition的簡稱,即主機定義。只有在多臺主機聯機測試的場合,或者需要對單臺主機重新設置JVM數目的時候才有設置的必要。
hd=default #表明該行中后續設置的所有參數都會作為后續所有hd的默認參數。 hd=host_label #確定主機標簽,主要用于交叉引用和報告輸出中 system=IP/hostname #聯機測試時,表明系統IP地址或者網絡名稱。system=129.22.240.188表明IP為129.22.240.188的主;system=sysa表明網絡名稱為sysa的主機,還可以使用system=localhost來表示當前主機。 vdbench=PATH #確定遠程主機上vdbench的安裝目錄 shell=rsh|ssh|vdbench #聯機測試時,windows使用vdbench自帶遠程
FSD
  • Filesystem Storage Definition的簡稱,即文件系統存儲定義。這類參數是必須設置的,主要包含文件系統的掛載目錄,目錄結構,文件個數,文件大小等等。
fsd=name #用來唯一標識一個文件系統存儲定義,以便被fwd調用。 fsd=default #表明該行中后續設置的所有參數都會作為后續所有fsd的默認參數。 anchor=/dir/ #表明在哪個路徑下創建新的目錄結構并進行測試。 shared=yes/no #Vdbench不允許不同的slave之間共享同一個目錄結構下的所有文件,因為這樣會帶來很大的開銷,但是允許它們共享一個目錄結構。假如設置了shared=yes,那么不同的slave可以平分一個目錄下的所有文件來進行訪問,相當于每個slave有各自等分的訪問區域。 width=nn #確定需要創建的目錄結構的寬度。 depth=nn #確定需要創建的目錄結構的深度。 files=nn #最底層的單個目錄中創建多少個文件。 sizes=(nn,nn,……) #可以確定單個文件的大小,也可以確定多個文件的大小。當描述多個文件的大小時,采用了結對描述的方式。一個對中的第一個參數表示文件的大小,一個對中的第二個參數表示該大小的文件在所有文件中所占的比重。比如:sizes=(4k,25,8k,20,16k,55)就表示所有文件中25%的文件大小為4k,20%的文件大小為8k,55%的文件大小為16k。如果設置為sizes=(nnn,0),Vdbench將創建平均大小為nnn字節的文件,其規則如下:nnn>10m,實際創建的文件大小是1m的倍數;nnn>1m,實際創建的文件大小是100k的倍數;nnn>100k,實際創建的文件大小是10k的倍數;nnn<100k,實際創建的文件大小是1k的倍數。 openflags=(flag,..) "僅在Solaris下適用,可以傳遞標識給文件系統的open請求。目前支持的標識有:O_DSYNC,O_RSYNC,O_SYNC。 total_size=nnn #創建新文件時,如果占用的空間達到了該參數的設定值,就要及時停止文件創建。 "workingsetsize=nn (wss=nn)" 一般來說,depth,width,files和sizes等參數共同決定了文件系統的文件個數和大小。total_size會用來確定實際使用的文件系統空間,而workingsetsize參數可以設置這些文件中會用于實際測試的工作文件子集的大小。舉個例子,如果總文件占用了200g的空間,文件系統緩存的大小是32g,那么設置workingsetsize=32g就會保證在測試的熱身階段之后,工作子集中的文件都駐留在文件系統緩存中。 count=(nn,mm) #可以快速產生一系列順序的fsd,比如:fsd=fsd,anchor=/dir,count=(1,5)表示fsd1-fsd5,分別對應/dir1-/dir5 shared= 可選值為yes或no,默認值為no,一般只有在多主機聯機測試時指定 vdbench不允許不同的slave之間共享同一個目錄結構下的所有文件,因為這樣會帶來很大的開銷,但是它們允許共享同一個目錄結構。加入設置了shared=yes,那么不同的slave可以平分一個目錄下所有的文件來進行訪問,相當于每個slave有各自等分的訪問區域,因此不能測試多個客戶的對同一個文件的讀寫 --當多主機聯機測試時,寫入的根目錄anchor為同一個路徑時,需要指定參數值為yes
FWD
  • Filesystem Workload Definition的簡稱,即文件系統工作負載定義。這類參數是必須設置的,主要是描述需要對哪些fsd執行哪種文件訪問方式和哪種I/O負載類型的下發
fwd=name #用來唯一標識一個文件系統工作負載定義,以便被rd調用 fwd=default #表明該行中后續設置的所有參數都會作為后續所有fwd的默認參數。測試文件系統生成文件時默認配置 threads=8,xfersize=128k fwd=format #按照指定的參數生成文件,需要在該參數后面指定threads和xfersize參數 fsd=(xx,…) #該參數確定該文件系統工作負載定義會作用于哪些文件系統存儲定義,比如fsd=(fsd1,fsd2) fileio=random/sequential #確定每個文件中I/O操作的類型,順序或者是隨機。一個隨機的LBA地址會在傳輸的數據塊大小的邊界上產生。fileio=random表示隨機I/O,fileI/O=sequential表示順序I/O,fileio=(seq,delete)表示寫前先刪除文件。 rdpct=nn #設置混合讀寫時讀I/O的比例,只用于隨機讀寫時。Fileio為順序時,兩個參數互斥 fileselect=random/sequential #確定選擇目錄和文件的方式是順序的還是隨機的。 xfersizes=nn #確定I/O讀寫操作傳輸的數據塊大小。可以確定一種大小,也可以確定多種大小。當描述多種數據塊大小時,采用了結對描述的方式。一個對中的第一個參數表示數據塊的大小,一個對中的第二個參數表示該大小的數據塊在所有I/O中所占的比重。比如:xfersizes=(8k,50,16k,30,2k,20)就表示所有文件中50%的I/O的塊大小為8k,30%的I/O的塊大小為16k,20%的I/O的塊大小為2k。 operation=xxxx #確定一種文件系統的操作,包括:mkdir,rmdir,create,delete,open,close,read,write,getattr和setattr。如果想要設定多種操作方式,則需在rd中設置operations參數。 threads=nn #確定有多少并行的線程來執行該工作負載,每個線程只處理一個文件,而不能多個線程同時處理一個文件。但是就算是不同的線程處理不同的文件,還是會遇到很多尷尬的場景,比如:在父目錄和當前目錄不存在的時候需要在當前目錄下創建文件;讀寫一個還不存在的文件;讀一個空文件;刪除一個正在被讀寫的文件;當這些情況發生的時候Vdbench會自動分析和處理。比如想要寫一個還不存在的文件,Vdbench會檢查在本次運行中是否有新的文件會被創建,如果有,當前線程會睡眠200ms,讓下一個操作繼續。如果沒有文件創建請求在排隊的話就直接終止本次運行。在運行結束后,各種與該問題相關的統計數據都在logfile.html中報告出來。為了防止死鎖,如果有10000個連續的線程睡眠而該期間沒有一個操作被成功處理,Vdbench會自動終止。一般情況下,最好讓線程數超過需要處理的文件的總數。 skew=nn #確定分配給該工作負載的I/O占所有I/O總數的比例。 stopafter=nn% 和 stopafter=nn #該參數可以設置對每個文件讀多少數據寫多少數據。可以設置stopafter=nn來表示對一個文件進行nn個I/O操作后停止對該文件的訪問,可以設置stopafter=nn%來表示對一個文件進行文件大小的nn%操作后停止對該文件的訪問。對于隨機I/O,默認情況下,Vdbench會在100個I/O操作之后或者整個文件被訪問完之后關閉該文件,然后訪問其它文件。對于順序I/O,Vdbench默認會訪問完整個文件,設置該參數后會根據需要停止對該文件的訪問,但是下次訪問該文件時會從上次的結束點開始,對于寫來說,就相當于是Append操作。
RD
  • Run Definition的簡稱,即運行定義。這類參數是必須設置的,主要是描述需要執行哪些fwd,需要產生多少操作數等等
fwd=(xx,yy,..) #確定本次運行中,哪些文件系統工作負載定義會被執行。可以執行單個工作負載,如fwd=fwd1;也可以執行多個工作負載,比如fwd=(fwd1,fwd2,fwd3),或者fwd=(fwd1-fwd3),或者fwd=fwd* fwdrate=nn #表示每秒鐘的操作數 fwdrate=100 #表示運行每秒100操作數的工作負載 fwdrate=(100,200,…) #表示運行每秒100操作數的負載,再運行每秒200操作數的負載,依次下去 fwdrate=(100-1000,100) #表示運行每秒從100到1000的操作數負載,增量為100 fwdrate=curve #表示運行每秒操作數為梯度形態的工作負載 fwdrate=max #表示運行每秒最大操作數的工作負載,不對操作數進行限制" format=xxxx #該參數將確定是否需要在本次運行之前對目錄和文件進行預處理。format=no表示不需要對目錄和文件進行任何改變,前提是文件結構與fsd中的需求一致;format=yes表示會刪除當前文件結構并且按當前fsd的要求生成新的文件結構;format=restart表示只創建那些不夠的文件以及擴展那些文件大小不足的文件;format=only,與yes類似,但Vdbench不會執行當前rd;format=dir,與yes類似,但Vdbench只創建目錄;format=clean,表示刪除當前文件結構但不會執行當前rd operations=xx #確定一個或多個文件系統操作,該參數會覆蓋文件系統工作負載定義中的operation參數。舉個例子,如果fsd中沒有定義好文件結構,那么想要進行讀文件測試的話,就需要設置operations=(mkdir,create,write,read),因為首先需要創建目錄結構,再創建文件,再寫文件,最后才能讀文件。 foroperations=xx #該參數覆蓋所有與operation有關的參數,允許以各種方式自動執行文件系統的各種操作。 foroperations=(read,write,delete,rmdir) #執行一次運行,首先是讀取所有文件,再寫所有文件,再刪除所有文件,最后刪除所有目錄。" fordepth=xx "該參數覆蓋所有與depth有關的參數,允許以各種方式自動遍歷文件系統的各種目錄深度fordepth=5表示只運行depth=5的情況;fordepth=(5-10,1)表示執行一次運行,目錄深度從5遍歷到10,增量為1;forwidth=xx 該參數覆蓋所有與width有關的參數,允許以各種方式自動遍歷文件系統的各種目錄寬度;forwidth=5表示只運行depth=5的情況;forwidth=(5-10,1)表示執行一次運行,目錄寬度從5遍歷到10,增量為1"; forfiles=xx "該參數覆蓋所有與files有關的參數,允許以各種方式自動遍歷文件系統的各種文件數目forfiles=5表示只運行files=5的情況;forfiles=(5-10,1)表示執行一次運行,文件數目從5遍歷到10,增量為1"; forsizes=xx "該參數覆蓋所有與sizes有關的參數,允許以各種方式自動遍歷文件系統的各種大小的文件;forsizes=5k表示只運行sizes=5的情況;forsizes=(5k-10k,1k)表示執行一次運行,文件大小從5KB遍歷到10KB,增量為1KB"; fortotal=xx "該參數覆蓋所有與files有關的參數,允許創建文件來填充總的文件空間。fortotal=(10g,20g)表示執行一次運行,首先文件空間為10g,然后文件空間為20g,確保總的文件空間是一個遞增的過程。" forwss=xx "該參數覆蓋所有與wss有關的參數,允許以各種方式自動遍歷文件系統的各種大小的文件工作子集;forwss=16g表示只運行wss=16g的情況 forsizes=(16g,32g)表示執行一次wss=16g的運行,再執行一次wss=32g的運行。 maxdata= 讀寫數據大小,通常情況下,當運行elapsed時間后測試結束;當同時指定elapsed和maxdata參數值時,以最快運行完的參數為準(即maxdata測試時間小于elapsed時,程序寫完elapsed數據量后結束) --當參數值為100以下時,表示讀寫數據量為總存儲定義大小的倍數(如maxdata=2,2個存儲定義(每個存儲定義數據量為100G),則實際讀寫數據大小為400G) --當參數值為100以上時,表示數據量為實際讀寫數據量(可以使用單位M、G、T等)

單機測試-文件系統

范例腳本
#4KB場景100%寫 fsd=fsd1,anchor=/testdir_1,depth=3,width=8,files=1000,size=4K,openflags=o_direct fwd=fwd1,fsd=fsd*,operation=write,xfersize=4K,fileio=random,fileselect=random,threads=32 rd=rd1,fwd=fwd1,fwdrate=max,format=yes,elapsed=600,interval=1 #4KB場景100%讀 fsd=fsd1,anchor=/testdir_1,depth=3,width=8,files=1000,size=4K,openflags=o_direct fwd=fwd1,fsd=fsd*,operation=read,xfersize=4K,fileio=random,fileselect=random,threads=32 rd=rd1,fwd=fwd1,fwdrate=max,format=no,elapsed=600,interval=1 #4KB場景70%讀30%寫 fsd=fsd1,anchor=/testdir_1,depth=3,width=8,files=1000,size=4K,openflags=o_direct fwd=fwd1,fsd=fsd*,rdpct=70,xfersize=4K,fileio=random,fileselect=random,threads=32 rd=rd1,fwd=fwd1,fwdrate=max,format=restart,elapsed=600,interval=1
測試注意點
1.在負載參數文件中,必須要按照FSD->FWD->RD的順序進行參數設置經常使用到的參數; 2.測試時需注意預埋文件即先執行寫腳本format=yes,讀腳本使用format=restart或者no,避免無意義的時間消耗; 3.批量執行fsd時可以使用fsd*或(fdsXX-fsdXX)的方式; 4.openfilags=o_direct可以繞過文件緩存,測試出的性能更加貼近真實讀寫; 5.在執行sh vdbench -f xxx.sh -jn時,jn參數是對文件校驗,會有read值和open值; 6.在執行vdbench時最終輸出的summary文件會被上次的數據覆蓋,最好是添加-o參數指定存放位置; 7.如果有多個場景測試且目錄容量足夠的情況下,請先執行預埋腳本,先預埋所有場景數據在將后續寫相關腳本的format改為restart,讀相關腳本format改為no;這樣可以提升測試效率

聯機測試-文件系統

ssh互信說明與手動執行
#互信注意點 1.只需要將主控端的公鑰發送至從端即可 2.從端需全部掛載對應的目錄 3.放置vdbench的目錄路徑需一致 #手動互信方式 ssh-keygen -f /root/.ssh/id_rsa -t rsa -P '' ssh-copy-id -i /root/.ssh/id_rsa.pub <host1_name> ssh-copy-id -i /root/.ssh/id_rsa.pub <host2_name>
ssh互信腳本腳本
#!/bin/bash #較多node場景使用;注意:依賴sshpass包 PASS="redhat" #設置網段最后的地址 END="160" NET_name="eth0" IP="$(ip a s "$NET_name" | awk -F'[ /]+' 'NR==3{print $3}')" Segment=${IP%.*}.#環境清理 rm -rf /root/.ssh/id_rsa #生成可連通的主機列表 [ -e /root/SCANIP.log ] && echo "" > /root/SCANIP.log || touch /root/SCANIP.log for((i=140;i<="$END";i++));do ping -c1 -w1 "$Segment""$i" &>/dev/null && echo "$Segment""$i" >/root/SCANIP.log & done #刪除空行 sed -Ei "/^$/d" /root/SCANIP.log #生成ssh_key的rsa文件 ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa #拷貝公鑰 while read -a line ;dosshpass -p "$PASS" ssh-copy-id -i root@"$line"done</root/SCANIP.log #!/bin/bash #較少node場景下使用,注意:依賴sshpass包 PASS="Huawei12#$" IP_list=( 10.0.0.150 10.0.0.152 ) #環境清理 rm -rf /root/.ssh/id_rsa #生成ssh_key的rsa文件 ssh-keygen -f /root/.ssh/id_rsa -t rsa -P '' #拷貝公鑰 for i in "${IP_list[@]}";do sshpass -p "$PASS" ssh-copy-id -i root@"$i" done
范例腳本
#聯機測試16K場景100%寫 hd=default,vdbench=/root/vdbench,user=root,shell=ssh hd=hd1,system=XX hd=hd2,system=XX fsd=fsd1,anchor=/testdir_1,depth=3,width=8,files=1000,size=16K,openflags=o_direct,shared=yes fsd=fsd2,anchor=/testdir_2,depth=3,width=8,files=1000,size=16K,openflags=o_direct,shared=yes fsd=fsd3,anchor=/testdir_3,depth=3,width=8,files=1000,size=16K,openflags=o_direct,shared=yes fsd=fsd4,anchor=/testdir_4,depth=3,width=8,files=1000,size=16K,openflags=o_direct,shared=yes fwd=format,xfersize=16k,threads=64 fwd=fwd1,fsd=fsd*,host=(hd1,hd2),operation=write,xfersize=16k,fileio=random,fileselect=random,threads=64 rd=rd1,fwd=fwd*,fwdrate=max,format=yes,elapsed=300,interval=1 #聯機測試16K場景100%讀 hd=default,vdbench=/root/vdbench,user=root,shell=ssh hd=hd1,system=XX hd=hd2,system=XX fsd=fsd1,anchor=/testdir_1,depth=3,width=8,files=1000,size=16K,openflags=o_direct,shared=yes fsd=fsd2,anchor=/testdir_2,depth=3,width=8,files=1000,size=16K,openflags=o_direct,shared=yes fsd=fsd3,anchor=/testdir_3,depth=3,width=8,files=1000,size=16K,openflags=o_direct,shared=yes fsd=fsd4,anchor=/testdir_4,depth=3,width=8,files=1000,size=16K,openflags=o_direct,shared=yes fwd=format,xfersize=16k,threads=64 fwd=fwd1,fsd=fsd*,host=(hd1,hd2),operation=read,xfersize=16k,fileio=random,fileselect=random,threads=64 rd=rd1,fwd=fwd*,fwdrate=max,format=no,elapsed=300,interval=1 #聯機測試16K場景70%讀30%寫 hd=default,vdbench=/root/vdbench,user=root,shell=ssh hd=hd1,system=XX hd=hd2,system=XX fsd=fsd1,anchor=/testdir_1,depth=3,width=8,files=1000,size=16K,openflags=o_direct,shared=yes fsd=fsd2,anchor=/testdir_2,depth=3,width=8,files=1000,size=16K,openflags=o_direct,shared=yes fsd=fsd3,anchor=/testdir_3,depth=3,width=8,files=1000,size=16K,openflags=o_direct,shared=yes fsd=fsd4,anchor=/testdir_4,depth=3,width=8,files=1000,size=16K,openflags=o_direct,shared=yes fwd=format,xfersize=16k,threads=64 fwd=fwd1,fsd=fsd*,host=(hd1,hd2),rdpct=70,xfersize=16k,fileio=random,fileselect=random,threads=64 rd=rd1,fwd=fwd*,fwdrate=max,format=restart,elapsed=300,interval=1
測試注意點
1.shared=yes,會增加互信時目錄檢測次數,但如果設置為NO,vdbench就不會對相同文件進行讀寫,如果希望更貼近真實讀寫數據時請設置為YES; 2.host參數不可以類似fsd使用通配符"*|-",只可以使用"(fsd1,fds2)”的方式增加; 3.掛載選項推薦增加 vers=3,wsize=XXX,rsize=XXX 這些參數; 4.啟動進程后可以到從端執行ps -ef|grep java查看是否有java-clent進程啟動; 5.shared=yes與format=yes不可共存;當shared=yes時,format只可以選擇no或restart 6.如果有多個場景測試且目錄容量足夠的情況下,請先執行預埋腳本,先預埋所有場景數據在將后續寫相關腳本的format改為restart,讀相關腳本format改為no;這樣可以提升測試效率

輸出結果

界面參數說明
interval:報告間隔序號 ReqstdOps是指每秒讀的次數(一次讀的大小是配置文件配置的xfersize=8k) 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:處理器利用率:系統時間 open :打開文件數 close :關閉文件數 rmdir:刪除文件夾數 create:創建文件數 mkdir:創建文件夾數 delete:刪除文件數
日志存放路徑
在沒有使用`-o`參數時,默認路徑為../vdbench/output/summary.html下存放 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)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) 中來創建性能圖表。

總結

以上是生活随笔為你收集整理的Vdbench工具文件系统测试记录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。