国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

黃頁 網(wǎng)站模板微信營銷的方法7種

黃頁 網(wǎng)站模板,微信營銷的方法7種,商務(wù)網(wǎng)站開發(fā)方式,服裝微信商城網(wǎng)站建設(shè)磁盤性能指標(biāo)–IOPS、吞吐量(轉(zhuǎn)) 一、概念介紹: 磁盤性能指標(biāo)–IOPS IOPS (Input/Output Per Second)即每秒的輸入輸出量(或讀寫次數(shù)),是衡量磁盤性能的主要指標(biāo)之一。IOPS是指單位時(shí)間內(nèi)系統(tǒng)能處理的I/O請求數(shù)量,一…

磁盤性能指標(biāo)–IOPS、吞吐量(轉(zhuǎn))

一、概念介紹:

磁盤性能指標(biāo)–IOPS

IOPS (Input/Output Per Second)即每秒的輸入輸出量(或讀寫次數(shù)),是衡量磁盤性能的主要指標(biāo)之一。IOPS是指單位時(shí)間內(nèi)系統(tǒng)能處理的I/O請求數(shù)量,一般以每秒處理的I/O請求數(shù)量為單位,I/O請求通常為讀或?qū)憯?shù)據(jù)操作請求。
隨機(jī)讀寫頻繁的應(yīng)用,如小文件存儲(chǔ)(圖片)、OLTP數(shù)據(jù)庫、郵件服務(wù)器,關(guān)注隨機(jī)讀寫性能,IOPS是關(guān)鍵衡量指標(biāo)。
順序讀寫頻繁的應(yīng)用,傳輸大量連續(xù)數(shù)據(jù),如電視臺(tái)的視頻編輯,視頻點(diǎn)播VOD(Video On Demand),關(guān)注連續(xù)讀寫性能。數(shù)據(jù)吞吐量是關(guān)鍵衡量指標(biāo)。

IOPS和數(shù)據(jù)吞吐量適用于不同的場合:

讀取10000個(gè)1KB文件,用時(shí)10秒 Throught(吞吐量)=1MB/s ,IOPS=1000 追求IOPS
讀取1個(gè)10MB文件,用時(shí)0.2秒 Throught(吞吐量)=50MB/s, IOPS=5 追求吞吐量

磁盤服務(wù)時(shí)間
————————————–>普通
磁盤是機(jī)械裝置,如FC, SAS, SATA磁盤,轉(zhuǎn)速通常為5400/7200/10K/15K rpm不等。影響磁盤的關(guān)鍵因素是磁盤服務(wù)時(shí)間,即磁盤完成一個(gè)I/O請求所花費(fèi)的時(shí)間,它由尋道時(shí)間、旋轉(zhuǎn)延遲和數(shù)據(jù)傳輸時(shí)間三部分構(gòu)成。
尋道時(shí)間 Tseek是指將讀寫磁頭移動(dòng)至正確的磁道上所需要的時(shí)間。尋道時(shí)間越短,I/O操作越快,目前磁盤的平均尋道時(shí)間一般在3-15ms。
旋轉(zhuǎn)延遲 Trotation是指盤片旋轉(zhuǎn)將請求數(shù)據(jù)所在扇區(qū)移至讀寫磁頭下方所需要的時(shí)間。旋轉(zhuǎn)延遲取決于磁盤轉(zhuǎn)速,通常使用磁盤旋轉(zhuǎn)一周所需時(shí)間的1/2表示。比如,7200 rpm的磁盤平均旋轉(zhuǎn)延遲大約為60*1000/7200/2 = 4.17ms,而轉(zhuǎn)速為15000 rpm的磁盤其平均旋轉(zhuǎn)延遲為2ms。
數(shù)據(jù)傳輸時(shí)間 Ttransfer是指完成傳輸所請求的數(shù)據(jù)所需要的時(shí)間,它取決于數(shù)據(jù)傳輸率,其值等于數(shù)據(jù)大小除以數(shù)據(jù)傳輸率。目前IDE/ATA能達(dá)到133MB/s,SATA II可達(dá)到300MB/s的接口數(shù)據(jù)傳輸率,數(shù)據(jù)傳輸時(shí)間通常遠(yuǎn)小于前兩部分消耗時(shí)間。簡單計(jì)算時(shí)可忽略。

常見磁盤平均物理尋道時(shí)間為:

7200轉(zhuǎn)/分的STAT硬盤平均物理尋道時(shí)間是9ms
10000轉(zhuǎn)/分的STAT硬盤平均物理尋道時(shí)間是6ms
15000轉(zhuǎn)/分的SAS硬盤平均物理尋道時(shí)間是4ms

常見硬盤的旋轉(zhuǎn)延遲時(shí)間為:

7200 rpm的磁盤平均旋轉(zhuǎn)延遲大約為60*1000/7200/2 = 4.17ms
10000 rpm的磁盤平均旋轉(zhuǎn)延遲大約為60*1000/10000/2 = 3ms,
15000 rpm的磁盤其平均旋轉(zhuǎn)延遲約為60*1000/15000/2 = 2ms。

最大IOPS的理論計(jì)算方法

IOPS = 1000 ms/ (尋道時(shí)間 + 旋轉(zhuǎn)延遲)??梢院雎詳?shù)據(jù)傳輸時(shí)間。
7200 rpm的磁盤IOPS = 1000 / (9 + 4.17) = 76 IOPS
10000 rpm的磁盤IOPS = 1000 / (6+ 3) = 111 IOPS
15000 rpm的磁盤IOPS = 1000 / (4 + 2) = 166 IOPS

影響測試的因素

測量中,IOPS數(shù)值會(huì)受到很多因素的影響,包括I/O負(fù)載特征(讀寫比例,順序和隨機(jī),工作線程數(shù),隊(duì)列深度,數(shù)據(jù)記錄大小)、系統(tǒng)配置、操作系統(tǒng)、磁盤驅(qū)動(dòng)等等。因此對比測量磁盤IOPS時(shí),必須在同樣的測試基準(zhǔn)下進(jìn)行,即便如此也會(huì)產(chǎn)生一定的隨機(jī)不確定性。

隊(duì)列深度說明

NCQ、SCSI TCQ、PATA TCQ和SATA TCQ技術(shù)解析

是一種命令排序技術(shù),一把喂給設(shè)備更多的IO請求,讓電梯算法和設(shè)備有機(jī)會(huì)來安排合并以及內(nèi)部并行處理,提高總體效率。
SCSI TCQ的隊(duì)列深度支持256級
ATA TCQ的隊(duì)列深度支持32級 (需要8M以上的緩存)
NCQ最高可以支持命令深度級數(shù)為32級,NCQ可以最多對32個(gè)命令指令進(jìn)行排序。
大多數(shù)的軟件都是屬于同步I/O軟件,也就是說程序的一次I/O要等到上次I/O操作的完成后才進(jìn)行,這樣在硬盤中同時(shí)可能僅只有一個(gè)命令,也是無法發(fā)揮這個(gè)技術(shù)的優(yōu)勢,這時(shí)隊(duì)列深度為1。
隨著Intel的超線程技術(shù)的普及和應(yīng)用環(huán)境的多任務(wù)化,以及異步I/O軟件的大量涌現(xiàn)。這項(xiàng)技術(shù)可以被應(yīng)用到了,實(shí)際隊(duì)列深度的增加代表著性能的提高。
在測試時(shí),隊(duì)列深度為1是主要指標(biāo),大多數(shù)時(shí)候都參考1就可以。實(shí)際運(yùn)行時(shí)隊(duì)列深度也一般不會(huì)超過4.

IOPS可細(xì)分為如下幾個(gè)指標(biāo):

數(shù)據(jù)量為n字節(jié),隊(duì)列深度為k時(shí),隨機(jī)讀取的IOPS
數(shù)據(jù)量為n字節(jié),隊(duì)列深度為k時(shí),隨機(jī)寫入的IOPS

二、舉例測試:
UOS公有云開放以來,一些用戶反應(yīng)用dd命令測試出來的1TB云硬盤的吞吐率(MBPS)只有128MB/s,而不是我們SLA保證的170MB /s ,這是為什么?下面我會(huì)簡單介紹如何測試硬盤,RAID,SAN,SSD,云硬盤等,然后再來回答上面的問題。
測試前提
我們在進(jìn)行測試時(shí),都會(huì)分清楚:
測試對象:要區(qū)分硬盤、SSD、RAID、SAN、云硬盤等,因?yàn)樗鼈冇胁煌奶攸c(diǎn)
測試指標(biāo):IOPS和MBPS(吞吐率),下面會(huì)具體闡述
測試工具:Linux下常用Fio、dd工具, Windows下常用IOMeter,
測試參數(shù): IO大小,尋址空間,隊(duì)列深度,讀寫模式,隨機(jī)/順序模式
測試方法:也就是測試步驟。
測試是為了對比,所以需要定性和定量。在宣布自己的測試結(jié)果時(shí),需要說明這次測試的工具、參數(shù)、方法,以便于比較。

測試工具 fio:
順序讀
測試命令:fio -name iops -rw=read -bs=4k -runtime=60 -iodepth 32 -filename /dev/sda6 -ioengine libaio -direct=1

SATA
Jobs: 1 (f=1): [R] [16.4% done] [124.1M/0K /s] [31.3K/0 iops] [eta 00m:51s]
SAS
Jobs: 1 (f=1): [R] [16.4% done] [190M/0K /s] [41.3K/0 iops] [eta 00m:51s]
SSD
Jobs: 1 (f=1): [R] [100.0% done] [404M/0K /s] [103K /0 iops] [eta 00m:00s]
可以看到 在對4KB數(shù)據(jù)包進(jìn)行連續(xù)讀的情況下:

SSD其速度可以達(dá)到404MB/S,IOPS達(dá)到103K/S

SAS其速度可以達(dá)到190MB/S,IOPS達(dá)到41K/S

SATA其速度可以達(dá)到124MB/S,IOPS達(dá)到31K/S

順序讀,SAS總體表現(xiàn)是SATA硬盤的1.3倍,SSD總體表現(xiàn)是sata硬盤的4倍。

隨機(jī)讀
測試命令 fio -name iops -rw=randread -bs=4k -runtime=60 -iodepth 32 -filename /dev/sda6 -ioengine libaio -direct=1

SATA
Jobs: 1 (f=1): [r] [41.0% done] [466K/0K /s] [114 /0 iops] [eta 00m:36s]
SAS
Jobs: 1 (f=1): [r] [41.0% done] [1784K/0K /s] [456 /0 iops] [eta 00m:36s]
SSD
Jobs: 1 (f=1): [R] [100.0% done] [505M/0K /s] [129K /0 iops] [eta 00m:00s]
隨機(jī)讀,SAS總體表現(xiàn)是SATA硬盤的4倍,SSD總體表現(xiàn)是sata硬盤的一千多倍。
順序?qū)?
測試命令:fio -name iops -rw=write -bs=4k -runtime=60 -iodepth 32 -filename /dev/sda6 -ioengine libaio -direct=1

SATA
Jobs: 1 (f=1): [W] [21.3% done] [0K/124.9M /s] [0 /31.3K iops] [eta 00m:48s]
SAS
Jobs: 1 (f=1): [W] [21.3% done] [0K/190M /s] [0 /36.3K iops] [eta 00m:48s]
SSD
Jobs: 1 (f=1): [W] [100.0% done] [0K/592M /s] [0 /152K iops] [eta 00m:00s]
同樣的4KB數(shù)據(jù)包順序?qū)懙那闆r下,SSD卡的成績?yōu)?92MB/S,IOPS為152K。而本地硬盤僅為118MB/S,IOPS僅為30290。
隨機(jī)寫
測試命令: fio -name iops -rw=randwrite -bs=4k -runtime=60 -iodepth 32 -filename /dev/sda6 -ioengine libaio -direct=1

SATA
Jobs: 1 (f=1): [w] [100.0% done] [0K/548K /s] [0 /134 iops] [eta 00m:00s]
SAS
Jobs: 1 (f=1): [w] [100.0% done] [0K/2000K /s] [0 /512 iops] [eta 00m:00s]
SSD
Jobs: 1 (f=1): [W] [100.0% done] [0K/549M /s] [0 /140K iops] [eta 00m:00s]
在接下來的4KB數(shù)據(jù)包隨機(jī)寫操作中,SSD卡再次展示了其高超的IO性能,高達(dá)549MB/S的隨機(jī)寫速率,IOPS高達(dá)140K。相比之下,本地硬盤的隨機(jī)讀寫僅為548KB/S,IOPS為134。
存儲(chǔ)系統(tǒng)模型
為了更好的測試,我們需要先了解存儲(chǔ)系統(tǒng),塊存儲(chǔ)系統(tǒng)本質(zhì)是一個(gè)排隊(duì)模型,我們可以拿銀行作為比喻。還記得你去銀行辦事時(shí)的流程嗎?
去前臺(tái)取單號
等待排在你之前的人辦完業(yè)務(wù)
輪到你去某個(gè)柜臺(tái)
柜臺(tái)職員幫你辦完手續(xù)1
柜臺(tái)職員幫你辦完手續(xù)2
柜臺(tái)職員幫你辦完手續(xù)3
辦完業(yè)務(wù),從柜臺(tái)離開
如何評估銀行的效率呢:
服務(wù)時(shí)間 = 手續(xù)1 + 手續(xù)2 + 手續(xù)3
響應(yīng)時(shí)間 = 服務(wù)時(shí)間 + 等待時(shí)間
性能 = 單位時(shí)間內(nèi)處理業(yè)務(wù)數(shù)量
那銀行如何提高效率呢:
增加柜臺(tái)數(shù)
降低服務(wù)時(shí)間
因此,排隊(duì)系統(tǒng)或存儲(chǔ)系統(tǒng)的優(yōu)化方法是
增加并行度
降低服務(wù)時(shí)間
硬盤測試
硬盤原理
我們應(yīng)該如何測試SATA/SAS硬盤呢?
每個(gè)硬盤都有一個(gè)磁頭(相當(dāng)于銀行的柜臺(tái)),硬盤的工作方式是:
收到IO請求,得到地址和數(shù)據(jù)大小
移動(dòng)磁頭(尋址)
找到相應(yīng)的磁道(尋址)
讀取數(shù)據(jù)
傳輸數(shù)據(jù)
則磁盤的隨機(jī)IO服務(wù)時(shí)間:
服務(wù)時(shí)間 = 尋道時(shí)間 + 旋轉(zhuǎn)時(shí)間 + 傳輸時(shí)間
對于10000轉(zhuǎn)速的SATA硬盤來說,一般尋道時(shí)間是7 ms,旋轉(zhuǎn)時(shí)間是3 ms, 64KB的傳輸時(shí)間是 0.8 ms, 則SATA硬盤每秒可以進(jìn)行隨機(jī)IO操作是 1000/(7 + 3 + 0.8) = 93,所以我們估算SATA硬盤64KB隨機(jī)寫的IOPS是93。一般的硬盤廠商都會(huì)標(biāo)明順序讀寫的MBPS。
我們在列出IOPS時(shí),需要說明IO大小,尋址空間,讀寫模式,順序/隨機(jī),隊(duì)列深度。我們一般常用的IO大小是4KB,這是因?yàn)槲募到y(tǒng)常用的塊大小是4KB。
使用dd測試硬盤
雖然硬盤的性能是可以估算出來的,但是怎么才能讓應(yīng)用獲得這些性能呢?對于測試工具來說,就是如何得到IOPS和MBPS峰值。我們先用dd測試一下SATA硬盤的MBPS(吞吐量)。

d if=/dev/zero of=/dev/sdd bs=4k count=300000 oflag=direct
記錄了300000+0 的讀入 記錄了300000+0 的寫出 1228800000字節(jié)(1.2 GB)已復(fù)制,17.958 秒,68.4 MB/秒
iostat -x sdd 5 10

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sdd 0.00 0.00 0.00 16794.80 0.00 134358.40 8.00 0.79 0.05 0.05 78.82…
為什么這塊硬盤的MBPS只有68MB/s? 這是因?yàn)榇疟P利用率是78%,沒有到達(dá)95%以上,還有部分時(shí)間是空閑的。當(dāng)dd在前一個(gè)IO響應(yīng)之后,在準(zhǔn)備發(fā)起下一個(gè)IO時(shí),SATA硬盤是空閑的。那么如何才能提高利用率,讓磁盤不空閑呢?只有一個(gè)辦法,那就是增加硬盤的隊(duì)列深度。相對于CPU來說,硬盤屬于慢速設(shè)備,所有操作系統(tǒng)會(huì)有給每個(gè)硬盤分配一個(gè)專門的隊(duì)列用于緩沖IO請求。
隊(duì)列深度
什么是磁盤的隊(duì)列深度?
在某個(gè)時(shí)刻,有N個(gè)inflight的IO請求,包括在隊(duì)列中的IO請求、磁盤正在處理的IO請求。N就是隊(duì)列深度。
加大硬盤隊(duì)列深度就是讓硬盤不斷工作,減少硬盤的空閑時(shí)間。
加大隊(duì)列深度 -> 提高利用率 -> 獲得IOPS和MBPS峰值 -> 注意響應(yīng)時(shí)間在可接受的范圍內(nèi)
增加隊(duì)列深度的辦法有很多
使用異步IO,同時(shí)發(fā)起多個(gè)IO請求,相當(dāng)于隊(duì)列中有多個(gè)IO請求
多線程發(fā)起同步IO請求,相當(dāng)于隊(duì)列中有多個(gè)IO請求
增大應(yīng)用IO大小,到達(dá)底層之后,會(huì)變成多個(gè)IO請求,相當(dāng)于隊(duì)列中有多個(gè)IO請求 隊(duì)列深度增加了。
隊(duì)列深度增加了,IO在隊(duì)列的等待時(shí)間也會(huì)增加,導(dǎo)致IO響應(yīng)時(shí)間變大,這需要權(quán)衡。讓我們通過增加IO大小來增加dd的隊(duì)列深度,看有沒有效果:
dd if=/dev/zero of=/dev/sdd bs=2M count=1000 oflag=direct
記錄了1000+0 的讀入 記錄了1000+0 的寫出 2097152000字節(jié)(2.1 GB)已復(fù)制,10.6663 秒,197 MB/秒
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sdd 0.00 0.00 0.00 380.60 0.00 389734.40 1024.00 2.39 6.28 2.56 97.42
可以看到2MB的IO到達(dá)底層之后,會(huì)變成多個(gè)512KB的IO,平均隊(duì)列長度為2.39,這個(gè)硬盤的利用率是97%,MBPS達(dá)到了197MB/s。(為什么會(huì)變成512KB的IO,你可以去使用Google去查一下內(nèi)核參數(shù) max_sectors_kb的意義和使用方法 )
也就是說增加隊(duì)列深度,是可以測試出硬盤的峰值的。
使用fio測試硬盤
現(xiàn)在,我們來測試下SATA硬盤的4KB隨機(jī)寫的IOPS。因?yàn)槲业沫h(huán)境是Linux,所以我使用FIO來測試。
$fio -ioengine=libaio -bs=4k -direct=1 -thread -rw=randwrite -size=1000G -filename=/dev/vdb
-name=”EBS 4K randwrite test” -iodepth=64 -runtime=60
簡單介紹fio的參數(shù)
ioengine: 負(fù)載引擎,我們一般使用libaio,發(fā)起異步IO請求。
bs: IO大小
direct: 直寫,繞過操作系統(tǒng)Cache。因?yàn)槲覀儨y試的是硬盤,而不是操作系統(tǒng)的Cache,所以設(shè)置為1。
rw: 讀寫模式,有順序?qū)憌rite、順序讀read、隨機(jī)寫randwrite、隨機(jī)讀randread等。
size: 尋址空間,IO會(huì)落在 [0, size)這個(gè)區(qū)間的硬盤空間上。這是一個(gè)可以影響IOPS的參數(shù)。一般設(shè)置為硬盤的大小。
filename: 測試對象
iodepth: 隊(duì)列深度,只有使用libaio時(shí)才有意義。這是一個(gè)可以影響IOPS的參數(shù)。
runtime: 測試時(shí)長
下面我們做兩次測試,分別 iodepth = 1和iodepth = 4的情況。下面是iodepth = 1的測試結(jié)果。
圖一

上圖中藍(lán)色方框里面的是測出的IOPS 230, 綠色方框里面是每個(gè)IO請求的平均響應(yīng)時(shí)間,大約是4.3ms。*黃色框表示95%的IO請求的響應(yīng)時(shí)間是小于等于 9.920 ms。橙色方框表示該硬盤的利用率已經(jīng)達(dá)到了98.58%。
下面是 iodepth = 4 的測試:
圖2
我們發(fā)現(xiàn)這次測試的IOPS沒有提高,反而IO平均響應(yīng)時(shí)間變大了,是17ms。
為什么這里提高隊(duì)列深度沒有作用呢,原因當(dāng)隊(duì)列深度為1時(shí),硬盤的利用率已經(jīng)達(dá)到了98%,說明硬盤已經(jīng)沒有多少空閑時(shí)間可以壓榨了。而且響應(yīng)時(shí)間為 4ms。 對于SATA硬盤,當(dāng)增加隊(duì)列深度時(shí),并不會(huì)增加IOPS,只會(huì)增加響應(yīng)時(shí)間。這是因?yàn)橛脖P只有一個(gè)磁頭,并行度是1, 所以當(dāng)IO請求隊(duì)列變長時(shí),每個(gè)IO請求的等待時(shí)間都會(huì)變長,導(dǎo)致響應(yīng)時(shí)間也變長。
這是以前用IOMeter測試一塊SATA硬盤的4K隨機(jī)寫性能,可以看到IOPS不會(huì)隨著隊(duì)列深度的增加而增加,反而是平均響應(yīng)時(shí)間在倍增。

隊(duì)列深度IOPS平均響應(yīng)時(shí)間
1332.9315253.002217
2333.9850745.986528
4332.59465312.025060
8336.56801223.766359
16329.78560648.513477
32332.05459096.353934
64331.041063193.200815
128331.309109385.163111
256327.442963774.401781

尋址空間對IOPS的影響
我們繼續(xù)測試SATA硬盤,前面我們提到尋址空間參數(shù)也會(huì)對IOPS產(chǎn)生影響,下面我們就測試當(dāng)size=1GB時(shí)的情況。
T3
我們發(fā)現(xiàn),當(dāng)設(shè)置size=1GB時(shí),IOPS會(huì)顯著提高到568,IO平均響應(yīng)時(shí)間會(huì)降到7ms(隊(duì)列深度為4)。這是因?yàn)楫?dāng)尋址空間為1GB時(shí),磁頭需要移動(dòng)的距離變小了,每次IO請求的服務(wù)時(shí)間就降低了,這就是空間局部性原理。假如我們測試的RAID卡或者是磁盤陣列(SAN),它們可能會(huì)用Cache把這1GB的數(shù)據(jù)全部緩存,極大降低了IO請求的服務(wù)時(shí)間(內(nèi)存的寫操作比硬盤的寫操作快很1000倍)。所以設(shè)置尋址空間為1GB的意義不大,因?yàn)槲覀兪且獪y試硬盤的全盤性能,而不是Cache的性能。
硬盤優(yōu)化
硬盤廠商提高硬盤性能的方法主要是降低服務(wù)時(shí)間(延遲):
提高轉(zhuǎn)速(降低旋轉(zhuǎn)時(shí)間和傳輸時(shí)間)
增加Cache(降低寫延遲,但不會(huì)提高IOPS)
提高單磁道密度(變相提高傳輸時(shí)間)
RAID測試
RAID0/RAID5/RAID6的多塊磁盤可以同時(shí)服務(wù),其實(shí)就是提高并行度,這樣極大提高了性能(相當(dāng)于銀行有多個(gè)柜臺(tái))。
以前測試過12塊RAID0,100GB的尋址空間,4KB隨機(jī)寫,逐步提高隊(duì)列深度,IOPS會(huì)提高,因?yàn)樗?2塊磁盤(12個(gè)磁頭同時(shí)工作),并行度是12。

隊(duì)列深度IOPS平均響應(yīng)時(shí)間
11215.9958420.820917
24657.0613170.428420
45369.3269700.744060
85377.3873031.486629
165487.9116602.914048
325470.9726635.846616
645520.23401511.585251
1285542.73981623.085843
2565513.99461146.401606

RAID卡廠商優(yōu)化的方法也是降低服務(wù)時(shí)間:
使用大內(nèi)存Cache
使用IO處理器,降低XOR操作的延遲。
使用更大帶寬的硬盤接口

SAN測試
對于低端磁盤陣列,使用單機(jī)IOmeter就可以測試出它的IOPS和MBPS的峰值,但是對于高端磁盤陣列,就需要多機(jī)并行測試才能得到IOPS和MBPS的峰值(IOmeter支持多機(jī)并行測試)。

磁盤陣列廠商通過以下手段降低服務(wù)時(shí)間:
更快的存儲(chǔ)網(wǎng)絡(luò),比如FC和IB,延時(shí)更低。
讀寫Cache。寫數(shù)據(jù)到Cache之后就馬上返回,不需要落盤。 而且磁盤陣列有更多的控制器和硬盤,大大提高了并行度。
現(xiàn)在的存儲(chǔ)廠商會(huì)找SPC幫忙測試自己的磁盤陣列產(chǎn)品(或全閃存陣列), 并給SPC支付費(fèi)用,這就是赤裸裸的標(biāo)準(zhǔn)壟斷。國內(nèi)也有做存儲(chǔ)系統(tǒng)測試的,假如你要測試磁盤陣列,可以找NSTC (廣告時(shí)間)。
SSD測試
SSD的延時(shí)很低,并行度很高(多個(gè)nand塊同時(shí)工作),缺點(diǎn)是壽命和GC造成的響應(yīng)時(shí)間不穩(wěn)定。
推薦用IOMeter進(jìn)行測試,使用大隊(duì)列深度,并進(jìn)行長時(shí)間測試,這樣可以測試出SSD的真實(shí)性能。
下圖是storagereview對一些SSD硬盤做的4KB隨機(jī)寫的長時(shí)間測試,可以看出有些SSD硬盤的最大響應(yīng)時(shí)間很不穩(wěn)定,會(huì)飆高到幾百ms,這是不可接受的。
T6
云硬盤測試
我們通過兩方面來提高云硬盤的性能的:
降低延遲(使用SSD,使用萬兆網(wǎng)絡(luò),優(yōu)化代碼,減少瓶頸)
提高并行度(數(shù)據(jù)分片,同時(shí)使用整個(gè)集群的所有SSD)
在Linux下測試云硬盤
在Linux下,你可以使用FIO來測試
操作系統(tǒng):Ubuntu 14.04
CPU: 2
Memory: 2GB
云硬盤大小: 1TB(SLA: 6000 IOPS, 170MB/s吞吐率 )
安裝fio:

sudo apt-get install fio

再次介紹一下FIO的測試參數(shù):
ioengine: 負(fù)載引擎,我們一般使用libaio,發(fā)起異步IO請求。
bs: IO大小
direct: 直寫,繞過操作系統(tǒng)Cache。因?yàn)槲覀儨y試的是硬盤,而不是操作系統(tǒng)的Cache,所以設(shè)置為1。
rw: 讀寫模式,有順序?qū)憌rite、順序讀read、隨機(jī)寫randwrite、隨機(jī)讀randread等。
size: 尋址空間,IO會(huì)落在 [0, size)這個(gè)區(qū)間的硬盤空間上。這是一個(gè)可以影響IOPS的參數(shù)。一般設(shè)置為硬盤的大小。
filename: 測試對象
iodepth: 隊(duì)列深度,只有使用libaio時(shí)才有意義。這是一個(gè)可以影響IOPS的參數(shù)。
runtime: 測試時(shí)長
4K隨機(jī)寫測試
我們首先進(jìn)行4K隨機(jī)寫測試,測試參數(shù)和測試結(jié)果如下所示:

fio -ioengine=libaio -bs=4k -direct=1 -thread -rw=randwrite -size=100G -filename=/dev/vdb
-name=”EBS 4KB randwrite test” -iodepth=32 -runtime=60

T7
藍(lán)色方框表示IOPS是5900,在正常的誤差范圍內(nèi)。綠色方框表示IO請求的平均響應(yīng)時(shí)間為5.42ms, 黃色方框表示95%的IO請求的響應(yīng)時(shí)間是小于等于 6.24 ms的。
4K隨機(jī)讀測試
我們再來進(jìn)行4K隨機(jī)讀測試,測試參數(shù)和測試結(jié)果如下所示:

fio -ioengine=libaio -bs=4k -direct=1 -thread -rw=randread -size=100G -filename=/dev/vdb
-name=”EBS 4KB randread test” -iodepth=8 -runtime=60

t8
512KB順序?qū)憸y試
最后我們來測試512KB順序?qū)?#xff0c;看看云硬盤的最大MBPS(吞吐率)是多少,測試參數(shù)和測試結(jié)果如下所示:

fio -ioengine=libaio -bs=512k -direct=1 -thread -rw=write -size=100G -filename=/dev/vdb
-name=”EBS 512KB seqwrite test” -iodepth=64 -runtime=60

t9
藍(lán)色方框表示MBPS為174226KB/s,約為170MB/s。
使用dd測試吞吐率
其實(shí)使用dd命令也可以測試出170MB/s的吞吐率,不過需要設(shè)置一下內(nèi)核參數(shù),詳細(xì)介紹在 128MB/s VS 170MB/s 章節(jié)中。
在Windows下測試云硬盤
在Windows下,我們一般使用IOMeter測試磁盤的性能,IOMeter不僅功能強(qiáng)大,而且很專業(yè),是測試磁盤性能的首選工具。
IOMeter是圖形化界面(濃濃的MFC框架的味道),非常方便操作,下面我將使用IOMeter測試我們UOS上1TB的云硬盤。
操作系統(tǒng):Window Server 2012 R2 64
CPU: 4
Memory: 8GB
云硬盤大小: 1TB
當(dāng)你把云硬盤掛載到Windows主機(jī)之后,你還需要在windows操作系統(tǒng)里面設(shè)置硬盤為聯(lián)機(jī)狀態(tài)。
t10
4K隨機(jī)寫測試
打開IOMeter(你需要先下載),你會(huì)看到IOMeter的主界面。在右邊,你回發(fā)現(xiàn)4個(gè)worker(數(shù)量和CPU個(gè)數(shù)相同),因?yàn)槲覀儸F(xiàn)在只需要1個(gè)worker,所以你需要把其他3個(gè)worker移除掉。
t11
現(xiàn)在讓我們來測試硬盤的4K隨機(jī)寫,我們選擇好硬盤(Red Hat VirtIO 0001),設(shè)置尋址空間(Maximum Disk Size)為50GB(每個(gè)硬盤扇區(qū)大小是512B,所以一共是 50*1024*1024*1024/512 = 104857600),設(shè)置隊(duì)列深度(Outstanding I/Os)為64。
t12
然后在測試集中選擇”4KiB ALIGNED; 0% Read; 100% random(4KB對齊,100%隨機(jī)寫操作)” 測試
t13
然后設(shè)置測試時(shí)間,我們設(shè)置測試時(shí)長為60秒,測試之前的預(yù)熱時(shí)間為10秒(IOMeter會(huì)發(fā)起負(fù)載,但是不統(tǒng)計(jì)這段時(shí)間的結(jié)果)。
t14
在最后測試之前,你可以設(shè)置查看實(shí)時(shí)結(jié)果,設(shè)置實(shí)時(shí)結(jié)果的更新頻率是5秒鐘。最后點(diǎn)擊綠色旗子開始測試。
t15
在測試過程中,我們可以看到實(shí)時(shí)的測試結(jié)果,當(dāng)前的IOPS是6042,平均IO請求響應(yīng)時(shí)間是10.56ms,這個(gè)測試還需要跑38秒,這個(gè)測試輪回只有這個(gè)測試。
t16
我們可以看到IOMeter自動(dòng)化程度很高,極大解放測試人員的勞動(dòng)力,而且可以導(dǎo)出CSV格式的測試結(jié)果。
順序讀寫測試
我們再按照上面的步驟,進(jìn)行了順序讀/寫測試。下面是測試結(jié)果:

IO大小讀寫模式隊(duì)列深度MBPS
順序?qū)懲掏聹y試512KB順序?qū)?/td>64
順序讀吞吐測試256KB順序讀64

云硬盤的響應(yīng)時(shí)間
當(dāng)前云硬盤寫操作的主要延遲是
網(wǎng)絡(luò)傳輸
多副本,寫三份(數(shù)據(jù)強(qiáng)一致性)
三份數(shù)據(jù)都落盤(數(shù)據(jù)持久化)之后,才返回
IO處理邏輯
我們當(dāng)前主要是優(yōu)化IO處理邏輯,并沒有去優(yōu)化2和3,這是因?yàn)槲覀兪前延脩魯?shù)據(jù)的安全性放在第一位。
128MB/s VS 170MB/s
回到最開始的問題 “為什么使用dd命令測試云硬盤只有128MB/s”, 這是因?yàn)槟壳霸朴脖P在處理超大IO請求時(shí)的延遲比SSD高(我們會(huì)不斷進(jìn)行優(yōu)化),現(xiàn)在我們有兩種方法來獲得更高的MBPS:
設(shè)置max_sectors_kb為256 (系統(tǒng)默認(rèn)為512),降低延遲
使用fio來測試,加大隊(duì)列深度
通過設(shè)置max_sectors_kb這個(gè)參數(shù),使用dd也可以測出170MB/s的吞吐量

cat /sys/block/vdb/queue/max_sectors_kb
512
root@ustack:~# echo “256” > /sys/block/vdb/queue/max_sectors_kb
root@ustack:~#
root@ustack:~# dd if=/dev/zero of=/dev/vdb bs=32M count=40 oflag=direct
40+0 records in
40+0 records out
1342177280 bytes (1.3 GB) copied, 7.51685 s, 179 MB/s
root@ustack:~#

同時(shí)查看IO請求的延遲:

iostat -x vdb 5 100

Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
vdb 0.00 0.00 0.00 688.00 0.00 176128.00 512.00 54.59 93.47 0.00 93.47 1.40 96.56
下面是使用fio工具的測試結(jié)果,也可以得到170MB/s的吞吐率。

t16
不可測試的指標(biāo)
IOPS和MBPS是用戶可以使用工具測試的指標(biāo),云硬盤還有一些用戶不可測量的指標(biāo)
數(shù)據(jù)一致性
數(shù)據(jù)持久性
數(shù)據(jù)可用性
這些指標(biāo)我們只能通過根據(jù)系統(tǒng)架構(gòu)和約束條件計(jì)算得到,然后轉(zhuǎn)告給用戶。這些指標(biāo)衡量著公有云廠商的良心,有機(jī)會(huì)會(huì)專門進(jìn)行介紹。
總結(jié)
測試需要定性和定量
了解存儲(chǔ)模型可以幫助你更好的進(jìn)行測試
增加隊(duì)列深度可以有效測試出IOPS和MBPS的峰值

http://aloenet.com.cn/news/40933.html

相關(guān)文章:

  • nba網(wǎng)站開發(fā)畢業(yè)論文廣州seo外包
  • 哪個(gè)網(wǎng)站可以免費(fèi)看小說不收費(fèi)百度網(wǎng)絡(luò)營銷推廣
  • 寧波網(wǎng)站建設(shè)模板下載免費(fèi)宣傳軟文模板
  • 萬戶網(wǎng)絡(luò)網(wǎng)站建設(shè)軟文營銷的經(jīng)典案例
  • 網(wǎng)站建設(shè)方案書 備案最近發(fā)生的熱點(diǎn)新聞事件
  • 大型門戶網(wǎng)站建設(shè)一般多少錢北京云無限優(yōu)化
  • 武漢建設(shè)局網(wǎng)站南寧百度seo排名公司
  • 深圳網(wǎng)站設(shè)計(jì)興田德潤放心百度關(guān)鍵詞優(yōu)化多少錢一年
  • 環(huán)球網(wǎng)今日疫情消息網(wǎng)站優(yōu)化招聘
  • 網(wǎng)站建設(shè)與管理教案電商數(shù)據(jù)統(tǒng)計(jì)網(wǎng)站
  • 做網(wǎng)站的公司術(shù)語國際新聞最新消息中國
  • wordpress網(wǎng)站搭建教程視頻山東濰坊疫情最新消息
  • 長沙網(wǎng)站制作電話百度seo新算法
  • 做抖音風(fēng)的網(wǎng)站怎么優(yōu)化關(guān)鍵詞排名優(yōu)化
  • 專門做家教的網(wǎng)站營銷網(wǎng)站搭建
  • 怎么做谷歌這樣的網(wǎng)站網(wǎng)站如何做seo排名
  • 免費(fèi)推廣網(wǎng)站大全網(wǎng)如何做線上銷售和推廣
  • 如何為網(wǎng)站做優(yōu)化培訓(xùn)機(jī)構(gòu)招生方案
  • 網(wǎng)站開發(fā)創(chuàng)新點(diǎn)網(wǎng)站推廣優(yōu)化方案
  • 做logo網(wǎng)站的公司做網(wǎng)站找哪家好
  • 怎么用dw做響應(yīng)式網(wǎng)站seo教程免費(fèi)分享
  • 保定企業(yè)自助建站搜索關(guān)鍵詞優(yōu)化排名
  • 做網(wǎng)頁設(shè)計(jì)可以參考哪些網(wǎng)站長沙網(wǎng)站外包公司
  • 東莞網(wǎng)站排名優(yōu)化報(bào)價(jià)電腦培訓(xùn)學(xué)校課程
  • 相親網(wǎng)站怎么做企業(yè)線上培訓(xùn)平臺(tái)有哪些
  • 企業(yè)信息管理系統(tǒng)的發(fā)展歷程網(wǎng)站seo優(yōu)化方法
  • 網(wǎng)站建設(shè) 珠海營銷培訓(xùn)課程有哪些
  • 城關(guān)區(qū)建設(shè)局網(wǎng)站百度廣告費(fèi)一般多少錢
  • 手機(jī)網(wǎng)站開發(fā) pdf最新旅游熱點(diǎn)
  • 王妃貌美還狠兇搜索引擎優(yōu)化的作用