說(shuō)
起存儲(chǔ)產(chǎn)品的評(píng)價(jià),性能永遠(yuǎn)是第一重要的問(wèn)題。關(guān)于性能的各種指標(biāo)實(shí)在五花八門(mén):帶寬(Bandwidth)、IOPS、順序(Sequential)讀
寫(xiě)、隨機(jī)(Random)讀寫(xiě)、持續(xù)吞吐(Sustained Throughput)、突發(fā)處理能力(Burst
I/O)等等看似甚為專(zhuān)業(yè)的名詞充斥著解決方案和技術(shù)分析報(bào)告。存儲(chǔ)產(chǎn)品的性能似乎被量化得格外清晰,作為用戶(hù),只需要簡(jiǎn)單的比較兩個(gè)數(shù)字,就可以清楚的
得出孰優(yōu)孰劣的結(jié)論。然而,事實(shí)果真如此嗎?
就讓我們走進(jìn)那些五花八門(mén)的指數(shù)背后,去看看性能的真實(shí)面目。
1、帶寬與I/O
這是兩個(gè)衡量存儲(chǔ)設(shè)備性能最基本的概念,明確的區(qū)分兩者也是對(duì)存儲(chǔ)產(chǎn)品性能了解的第一步。如
果我們把存儲(chǔ)設(shè)備比做一間會(huì)議室,被存取的數(shù)據(jù)就是前來(lái)參加會(huì)議或從會(huì)議中離開(kāi)的人,那么帶寬性能就是指這間會(huì)議室大門(mén)的寬度,大門(mén)越寬,可以同時(shí)進(jìn)出的
人也就越多,而I/O性能是指房門(mén)開(kāi)合的頻繁程度,迎來(lái)一批前來(lái)參加會(huì)議的人,就需要打開(kāi)一次大門(mén),送走一批人也是一樣,哪怕這“一批人”其實(shí)只是一個(gè)
人。由此可見(jiàn),當(dāng)我們考察會(huì)議室的門(mén)設(shè)計(jì)得是否合理時(shí),必須結(jié)合會(huì)議本身的性質(zhì)。
對(duì)紀(jì)律嚴(yán)明的會(huì)議來(lái)
說(shuō),與會(huì)者輕易不會(huì)凌亂的進(jìn)出會(huì)場(chǎng),人們?cè)跁?huì)議開(kāi)始時(shí)統(tǒng)一進(jìn)入,結(jié)束時(shí)再統(tǒng)一離開(kāi)。對(duì)這種情況,門(mén)的寬度就十分重要,而是否易于開(kāi)合則顯得不那么關(guān)鍵,反
正這扇門(mén)在整個(gè)會(huì)議中只需要開(kāi)合兩次而已。相反的,對(duì)于聯(lián)歡性質(zhì)的聚會(huì)而言,門(mén)設(shè)計(jì)得太寬除了顯得氣派之外,并沒(méi)有什么實(shí)際的意義,但是門(mén)開(kāi)合的頻率卻很
重要,因?yàn)闀?huì)有客人頻繁的進(jìn)進(jìn)出出。
對(duì)應(yīng)到存儲(chǔ)設(shè)備上,道理也是一樣。大文件持續(xù)傳輸型的應(yīng)用需要的是充分的帶寬性能,而小文件隨機(jī)讀寫(xiě)的應(yīng)用則要求足夠的I/O能力。那
么多大的文件算“大文件”呢?一般而言,超過(guò)1MB大小的文件就可以算做“大文件”了。如果您的應(yīng)用系統(tǒng)處理的資料中,最小的文件也有4~5MB甚至幾十
MB,就需要重點(diǎn)考察存儲(chǔ)系統(tǒng)的帶寬性能了。如果您的應(yīng)用是數(shù)據(jù)庫(kù)形式,或是電子郵件系統(tǒng),系統(tǒng)中有大量KB級(jí)大小的文件,那么就可以忽略掉產(chǎn)品介紹中
xxx MB/s的字樣,重點(diǎn)關(guān)心xxx IOPS就可以了。
2、影響性能的因素
當(dāng)然,僅看產(chǎn)品彩頁(yè)中的簡(jiǎn)單數(shù)字還是遠(yuǎn)遠(yuǎn)不夠的。存儲(chǔ)設(shè)備的標(biāo)稱(chēng)指數(shù)只是其最最理想情況下的表現(xiàn),而實(shí)際應(yīng)用中,存儲(chǔ)設(shè)備表現(xiàn)出的處理能力往往與其標(biāo)稱(chēng)指數(shù)相去甚遠(yuǎn)。為了反映更多的細(xì)節(jié),會(huì)議室的比喻不足以說(shuō)明問(wèn)題。所以我們前面的例子再改進(jìn)一下,把存儲(chǔ)設(shè)備看作一棟有很多房間的大廈。人們從門(mén)口進(jìn)入大廈,先來(lái)到大堂,經(jīng)過(guò)走廊,最后到達(dá)房間。人們進(jìn)大廈的方式也分為兩種:一種是所有人按房間號(hào)碼順序排好隊(duì),一起進(jìn)入大廈,我們稱(chēng)之為“順序進(jìn)入”;另一種是他們無(wú)規(guī)律的自由進(jìn)入,我們稱(chēng)為“隨即進(jìn)入”。
顯而易見(jiàn),“順序進(jìn)
入”的效率要大大高于“隨即進(jìn)入”。這就說(shuō)明,一般情況下,順序讀寫(xiě)的性能要遠(yuǎn)高于隨即讀寫(xiě)的性能。還有一個(gè)結(jié)論也不難得出,一個(gè)寬敞的大堂更有利于偶然
性較大的“隨機(jī)進(jìn)入”,而對(duì)“順序進(jìn)入”的人群而言,經(jīng)過(guò)大堂基本屬于浪費(fèi)時(shí)間。存儲(chǔ)設(shè)備中的“大堂”就是高速緩存。也就是說(shuō),大容量高速緩存可以提高隨機(jī)讀寫(xiě)性能,而對(duì)順序讀寫(xiě)的性能改進(jìn)則不明顯。
還記得前面討論的帶寬
和I/O的差別嗎?帶寬考察的是單位時(shí)間進(jìn)入大廈的人數(shù),而I/O關(guān)心的是單位時(shí)間進(jìn)出大廈的批次。從次可見(jiàn),如果走廊沒(méi)有任何變化,那么大堂只要不是太
小,就不會(huì)影響帶寬性能。相對(duì)的,對(duì)I/O性能而言,大堂顯然是越大越好。總之,影響帶寬的因素主要是前端控制器(大門(mén))和后端磁盤(pán)通道(走廊)的帶寬;
而影響I/O的因素主要是控制器(大門(mén))處理能力和高速緩存(大堂)容量。
當(dāng)然,前面的討論都基
于一個(gè)假設(shè)前提:磁盤(pán)(房間)足夠多。如若只配置寥寥幾個(gè)磁盤(pán),它們就會(huì)成為整個(gè)系統(tǒng)的性能瓶頸。任憑其他配置如何奢華,也于事無(wú)補(bǔ)。那么,“足夠多”又
是多少呢?對(duì)光纖通道存儲(chǔ)設(shè)備來(lái)說(shuō),每個(gè)光纖通道上的磁盤(pán)數(shù)量達(dá)到50~60個(gè)的時(shí)候性能達(dá)到最佳。所以一般中高端存儲(chǔ)設(shè)備都把每通道50~60個(gè)磁盤(pán)設(shè)
計(jì)為擴(kuò)展極限,而不是光纖通道技術(shù)規(guī)定的126個(gè)。

圖1. 磁盤(pán)數(shù)量影響光纖環(huán)路性能
這
樣設(shè)計(jì)存儲(chǔ)產(chǎn)品,可以讓系統(tǒng)的性能隨著容量的增加而增長(zhǎng)。但是同時(shí),用戶(hù)必須明白,在容量沒(méi)有配置到最大值的時(shí)候,性能就無(wú)法達(dá)到廠商所宣稱(chēng)的指標(biāo)。一些
廠商還聲明其產(chǎn)品的性能可以隨著容量的增長(zhǎng)而線(xiàn)性增長(zhǎng),按這樣講,當(dāng)你的存儲(chǔ)設(shè)備只配置了最大容量的一半時(shí),你得到的性能也只有系統(tǒng)最佳性能的一半。
3、性能曲線(xiàn)
這里所說(shuō)的“最佳性能”就是廠商所宣稱(chēng)的指數(shù)嗎?很遺憾,答案是不一定,一般都不是,而且可能會(huì)相差很遠(yuǎn)!我已經(jīng)聽(tīng)到有人在叫“天?。∧菑S商公布的數(shù)字到底有什么意義啊。”別急,看到下面兩個(gè)圖示就清楚了。

圖2. IOPS性能曲線(xiàn)示例

圖3. 帶寬性能示例
這
兩個(gè)圖示是典型的存儲(chǔ)設(shè)備性能實(shí)測(cè)曲線(xiàn),所有曲線(xiàn)來(lái)自同一個(gè)存儲(chǔ)設(shè)備的同一個(gè)配置。不同產(chǎn)品在縱向指標(biāo)上表現(xiàn)各異,但曲線(xiàn)的形狀都大體相同。從圖上可以看
出,用戶(hù)環(huán)境中存儲(chǔ)設(shè)備的性能表現(xiàn)嚴(yán)重依賴(lài)數(shù)據(jù)塊的大小。以順序讀取操作為例,如果應(yīng)用產(chǎn)生的數(shù)據(jù)塊大小在8KB左右,那么帶寬性能和I/O性能最多也只
能達(dá)到峰值性能的一半左右。如果希望得到更好的I/O性能,就需要盡量將數(shù)據(jù)塊調(diào)整得更小。但不幸的是,如果希望帶寬性能更好,就需要想辦法把數(shù)據(jù)塊設(shè)置得更大??磥?lái),帶寬與I/O性能是魚(yú)與熊掌,難以兼得啦。
不
過(guò)沒(méi)關(guān)系,如我們前面提到的,幸好大多數(shù)用戶(hù)其實(shí)只需要其中一種性能。要么是大文件類(lèi)型的應(yīng)用,需要帶寬性能;抑或是小文件類(lèi)型應(yīng)用,需要I/O能力。需
要帶寬的用戶(hù)相對(duì)容易得到滿(mǎn)足。從圖3可以看出,只要數(shù)據(jù)塊大于128KB,順序讀的性能就基本可以達(dá)到系統(tǒng)飽和值。對(duì)順序?qū)懀柡蛿?shù)據(jù)塊略大一些,但
256KB也不算難以達(dá)到的尺寸。
得
到最佳的I/O性能似乎就沒(méi)那么容易了。從圖2的曲線(xiàn)來(lái)看,I/O性能并沒(méi)有一個(gè)飽和狀態(tài),這就要求數(shù)據(jù)塊無(wú)窮盡的盡量小。然而所有應(yīng)用都不可能支持無(wú)窮
小的數(shù)據(jù)塊。實(shí)際上,大多數(shù)的數(shù)據(jù)庫(kù)應(yīng)用產(chǎn)生的數(shù)據(jù)塊都在2KB或4KB左右。在這個(gè)尺度上,應(yīng)用得到的性能距離最高性能還有至少20~30%的空間呢。
4、持續(xù)和突發(fā)
回到我們那個(gè)關(guān)于大廈
的例子。如果大廈臨時(shí)發(fā)生緊急情況,比如火災(zāi),人們爭(zhēng)先恐后的蜂擁在門(mén)口,景象一定是一片混亂。在實(shí)際應(yīng)用中,存儲(chǔ)系統(tǒng)也可能遭遇類(lèi)似的情況,一時(shí)間大量
數(shù)據(jù)同時(shí)被訪問(wèn),造成系統(tǒng)嚴(yán)重堵塞。這就像存儲(chǔ)系統(tǒng)內(nèi)的交通高峰,往往需要類(lèi)似交通管制的手段才能提高系統(tǒng)效率。一些廠商會(huì)宣稱(chēng)他們的產(chǎn)品在這種情況下的
“交通管制”能力有多強(qiáng),以致可以從容應(yīng)付大規(guī)模的突發(fā)訪問(wèn)。諸如“全交換結(jié)構(gòu)”、“直接矩陣結(jié)構(gòu)”等技術(shù)均屬此類(lèi)。究其本質(zhì),這些“交通管制”都是在大堂(高速緩存)的設(shè)計(jì)上做文章,將原本一個(gè)公共大堂的結(jié)構(gòu)變成若干獨(dú)立大堂的結(jié)構(gòu)。以此來(lái)避免火災(zāi)發(fā)生時(shí),所有人都擁擠到一個(gè)大堂里。
這樣設(shè)計(jì)的確可在訪問(wèn)突然爆發(fā)時(shí)緩解系統(tǒng)壓力,但是需要注意,這樣設(shè)計(jì)的大廈內(nèi)部一定布滿(mǎn)了各種指示牌和路標(biāo),對(duì)任何一個(gè)進(jìn)入大廈的人而言,進(jìn)入房間的過(guò)程都將變得更復(fù)雜。其結(jié)果就是,非突發(fā)狀態(tài)下,系統(tǒng)的持續(xù)讀寫(xiě)能力往往還不如同等計(jì)算能力的簡(jiǎn)單結(jié)構(gòu)存儲(chǔ)。
5、其他影響
除了前面所談到諸多方
面外,還有很多因素都會(huì)影響到存儲(chǔ)設(shè)備在實(shí)際運(yùn)行中的性能。例如RAID級(jí)別的設(shè)置、磁盤(pán)類(lèi)型甚至型號(hào)批次的匹配、緩存的鏡像、SCSI指令隊(duì)列深度的設(shè)
置,這些方面都與性能結(jié)果直接相關(guān)。而且,為了能夠得到最好的性能指數(shù),幾乎所有的廠商在測(cè)試自己產(chǎn)品性能的時(shí)候都會(huì)采用無(wú)冗余的RAID0、選用15k
rpm的高速磁盤(pán)、將寫(xiě)緩存鏡像保護(hù)關(guān)閉或者干脆關(guān)閉寫(xiě)緩存、將指令隊(duì)列深度設(shè)置為最大。如此配置方式相信不是每個(gè)用戶(hù)都可以接受的。
另外,所有存儲(chǔ)設(shè)備在運(yùn)行快照或遠(yuǎn)程鏡像等附加功能之后,性能都會(huì)明顯下降,有些情況甚至?xí)陆?0%之多。如果用戶(hù)的應(yīng)用恰巧需要這些附加功能,就需要在選用存儲(chǔ)設(shè)備之前認(rèn)真的實(shí)地測(cè)量一下真實(shí)性能。免得滿(mǎn)懷希望的買(mǎi)回家,使用起來(lái)卻失望至極。
結(jié)論和建議
想要知道梨子的滋味,最好的辦法就是親自嘗一嘗。對(duì)存儲(chǔ)設(shè)備,這個(gè)道理尤其重要。只有在用戶(hù)需要的配置方式下,在實(shí)際的應(yīng)用系統(tǒng)中,實(shí)實(shí)在在的運(yùn)行之后,用戶(hù)才能真正清楚的感知存儲(chǔ)設(shè)備的真實(shí)性能表現(xiàn)。紙上談兵只怕會(huì)使用戶(hù)在各種數(shù)據(jù)中迷失方向,難以做出正確結(jié)論。