歡迎光臨
每天分享高質量文章

深入淺出: 如何做好系統效能評估?

     在上篇文章“深入淺出儲存效能評估方法論中,我們介紹了效能評估相關概念和原理,但是在專案實戰中,要根據業務真實訴求給出切合實際的效能配置,還需要針對業務模型進行最佳實踐分析和洞察,從主機埠、儲存系統、後端磁碟等端到端進行分析和評估,在本文中把常見的效能評估過程中的難點依次羅列,希望對大家有所幫助。

IO聚合成滿分條寫最佳化寫懲罰

 

     IO聚合成滿分條大小的情況下,無需做預讀操作,不會觸發RAID寫懲罰,RAID寫懲罰在不是滿分條寫的時候,才會觸發預讀的流程。以RAID5-5小寫為例,寫一個資料位,需要預讀兩次,寫校驗位一次。可以認為是一個IO被放大成了四個IO。

 

     

而滿分條寫的時候,同時寫四個資料位,不需要預讀,只需要額外寫一次校驗位,可以認為是四個IO被放大成了五個IO 。對比非滿分條寫,效率大大提高。

 

 

     儲存的IO合併能力對於資料庫業務是否各家都能做到IO合併呢?一般儲存針對不同型別的IO有不同的合併能力;資料庫業務主要是隨機IO,各廠商都做不到完全滿分條IO合併。儲存收到的IO是否能夠合併,主要取決於兩個方面。

 

     1、主機側發下來的業務IO模型:IO是否順序,是否連續,與主機業務軟體本身、主機側塊裝置、捲管理策略、HBA卡拆分策略等相關。主機下發的IO越順序、越連續,到達陣列後的合併效果越好。

 

     2、儲存側對IO的合併能力:IO路徑上的Cache、儲存塊裝置、硬碟等模組都會對IO進行排序與合併的操作,試圖盡可能將小IO合成大IO下盤。

 

     對於順序小IO而言,基本上能夠實現將IO都合併成滿分條後下盤。而對於IO隨機程度較高的資料庫業務,各廠商都無法確保所有IO都能夠合併,只能儘量透過排序和合併,將相鄰地址的小IO合成大IO,但合併程度由於演演算法實現和記憶體大小等因素可能會有所差異。

 

OLTP、OLAP、VDI和SPC-1業務模型

 

     OLTP、OLAP、VDI和SPC-1是當前效能評估中常見的三類業務場景。SPC-1是業界通用的隨機IOPS型的IO模型,在不清楚實際業務型別的條件下,常用此模型來進行效能評估。四種模型的簡單IO特徵如下表所示。

 

    

 下麵將分別介紹四種模型的業務特性與IO特徵:

一、OLTP業務模型和特徵:

 

     1、業務特徵:每個事務的讀,寫,更改涉及的資料量非常小,同時有很多使用者連線到資料庫,使用資料庫,要求資料庫有很快的響應時間,通常一個事務在幾秒內完成,時延要求一般在10-20ms。

     2、IO特徵:針對DATA LUN,隨機小IO,IO大小主要為8KB(IO大小與資料庫的Block塊大小一致),讀寫比約為3:2,讀全隨機,寫有一定合併。 針對LOG LUN,多路順序小IO,大小不定,幾乎都是寫IO。

二、OLAP業務模型和特徵:

 

     1、業務特徵:一般很少有資料修改,除非在批次載入資料時;系統呼叫非常複雜的查詢陳述句,同時掃描非常多的行;一個查詢將花費數小時,甚至數天;主要取決於查詢陳述句的複雜程度;查詢的輸出通常是一個統計值,由group by與order by得出;當讀取操作進行時,發生的寫操作通常在臨時表空間內;平常對線上日誌寫入很少,除非在批次載入資料時;分析型業務,一般對時延沒有要求。

     2、IO特徵:針對DATA LUN,多路順序大IO(可以近似認為是隨機大IO),IO大小與主機側設定的分條大小有關(如512KB),90%以上為讀業務,混合間斷讀寫。針對TMP LUN,隨機IO,讀寫混合(先寫後讀,計算時寫,讀臨時表時讀,大部分是寫,佔整個業務中很少部分的IO),IO大小基本為200KB以上大IO。

三、VDI業務模型和特徵

 

     1、業務特性:可以分為啟動風暴、登入風暴和平穩狀態幾個常見場景,在不同的狀態下,業務壓力相差很大。啟動風暴,即大量虛擬機器同時啟動時的突髮狀態,是讀密集型操作,可以透過VSA(View Storage Accelerator 可以降低70%的讀負載)、分批錯峰等操作規避。登入風暴,即大量使用者同時登入到桌面,導致共享儲存產生大量爆發性負載的情況,是寫密集型的,很難透過技術方式避免。平穩狀態,即所有使用者在同時使用桌面時,產生負載波動較小的狀態。不同的使用者型別,平穩狀態的負載有所不同。時延要求一般在10ms左右。

 

     2、IO特徵:平穩狀態下,讀寫比例約為2:8,多路順序小IO,主要是寫,存在一定的合併,IO大小從512B到16KB都有;少量的讀IO,基本都是16KB,在負載穩定之後,Cache命中率在80%以上(採用連結克隆技術的情況下,如果是完整克隆的情況,命中率有所下降)。

四、SPC-1業務模型和特徵

 

     1、業務特性:SPC-1設計一個專門為測試儲存系統在典型業務應用場合下的負載模型,這個負載模型連續不斷地對業務系統併發的做查詢和更新的工作,因此其主要由隨機I/O組成。這些隨機I/O的操作主要涉及資料庫型的OLTP應用以及E-mail系統應用,能夠很好地衡量儲存系統的IOPS指標。

 

     2、IO特徵:它抽象的測試區域稱為ASU,包括ASU1臨時資料區域,ASU2使用者資料區域和ASU3日誌區域。對整體而言,讀寫比約為4:6,順序IO與隨機IO的比例約為3:7,IO大小主要為4KB,有較明顯的熱點訪問區域。

 

SSD、SAS、NL-SAS的效能特點、優勢對比

 


你知道FC鏈路頻寬是如何計算的呢?

 

     今天就跟你一起詳細解析一下。FC協議是主機伺服器與儲存系統連線傳輸的常用協議之一。在評估儲存系統整體頻寬時,FC鏈路的頻寬是計算前端頻寬的最重要的因素之一。8G FC鏈路的理論頻寬計算方法如下:

     8Gbps FC參考時鐘:8.5G Hz

     8Gbps FC協議編碼:8b/10b編碼

 

     協議幀的傳輸如上圖所示。8Gbps FC協議傳輸效率計算如下:

 

     ACK在FC協議中是class 1和class 2服務(面向連線)使用的,class 3服務不使用ACK幀,因此可以獲得更高的傳輸效率。通常使用的是class 3服務,按照class 3服務計算實際傳輸效率為97.15%。

 

     單向理論資料傳輸頻寬計算公式如下:

     鏈路時鐘*鏈路編碼效率* FC協議層傳輸效率/8 /1024 /1024,即8Gbps FC單向理論資料傳輸頻寬=(8.5*1000*1000*1000) * (8/10) * 97.15%/8 /1024 /1024 = 787.5MB/s

 

     由於傳輸命令請求也要開銷鏈路頻寬,幀與幀之間的傳輸還需要協議的原語開銷,故單向鏈路的資料頻寬無法超越理論值787.5MB/s。雙向頻寬理論上為單向鏈路的兩倍,但是由於光模組和上層模組的處理排程開銷等因素,實際測試時達不到兩倍的理論值。當前產品中常見的FC鏈路為8G FC和4G FC鏈路,它們的極限頻寬如下表所示:

 


 

    例如,某客戶採購了一臺陣列,此款產品能夠提供的最大讀頻寬為3000MB,客戶規劃配置48塊600GB 15k SAS盤(推薦單盤讀頻寬為40MB),前端雙控各配置1張8G FC卡,分別連線了1根光纖到A、B控,估算當前場景下能夠提供的最大讀頻寬。

 

     硬碟提供的有效讀頻寬 = 單盤順序讀頻寬 * 硬碟數量 = 40MB * 48 = 1920 MB。

     前端鏈路提供的最大讀頻寬 = 780MB * 2 = 1560 MB。

     該場景能提供的最大讀頻寬 = MIN(產品能提供的最大讀頻寬,硬碟提供的有效寫頻寬,前端鏈路提供的最大讀頻寬)= MIN(3000MB,1920MB , 1560MB)= 1560 MB。

 

頻寬計算中如何考慮校驗的影響

 

     對於順序寫業務,IO經過cache的IO合併後下發到RAID層,基本能夠確保都是滿分條寫。對於RAID5-5(4D+1P)這種配置來說,每4個資料IO(D)下盤同時會有一個校驗IO(P)需要下盤。

 

校驗IO下盤所佔的硬碟頻寬用於保障資料的可靠性,而對於使用者上層業務來說並沒有提供可用頻寬,因此需要扣除掉校驗位下盤所佔的頻寬開銷。

 

 

    對於順序讀業務,在滿分條的情況下,在每個分條內部只需要讀資料位所在的磁碟,不需要讀校驗位所在的磁碟。

 

 

    例如,某一款產品,能夠提供的最大寫頻寬為3200MB,規劃配置96塊600GB 15k SAS盤(推薦單盤寫頻寬為30MB),部署RAID6-6(4D+2P),估算這款產品能夠提供的有效寫頻寬。

 

     硬碟提供的有效寫頻寬 = 單盤順序寫頻寬 * 硬碟數量 * (RAID資料盤數量/RAID總盤數)= 30MB * 96 * (4/6)= 1920 MB

     產品能提供的有效寫頻寬 = MIN(產品能提供的最大寫頻寬,硬碟提供的有效寫頻寬)= MIN(3200MB,1920MB)= 1920 MB

什麼是讀寫比和對效能影響

 

     讀寫比(Read/Write):指的是上層應用下發的讀IO和寫IO的比例分佈。此資料是儲存規劃的重要參考依據。讀業務與寫業務消耗的儲存資源差異很大。下麵是一些典型業務模型的常見讀寫比例

 

     確切瞭解上層應用的讀寫比例直接影響到對cache策略、RAID級別和LUN配置的選擇。寫業務比讀業務會消耗更多的儲存系統資源:

 

     1、在回寫的場景下,寫IO下發到cache之後需要透過交換通道“映象”到對端控制器,IO路徑更長,並需要佔用交換通道的頻寬;

     2、為保證寫資料的可靠性和一致性,智慧儲存通常會採用一些可靠性技術,例如writehole方案,需要將寫資料額外儲存一份在cache或磁碟上;

     3、對於不同的RAID級別而言,寫懲罰的存在會造成更大的時延和資源的開銷;此外,對於磁碟(包括SSD盤)而言,寫速度低於讀速度。

 

     而對於讀業務來說,通常消耗較少的系統資源。例如,讀業務不需要生成額外的資料來保證資料一致。此外,絕大部分儲存裝置的讀速度都比寫速度要快。當讀IO發現它所需讀取的資料已經在Cache中(讀命中)時,可以直接傳回而不需要再下盤讀取。在讀命中的情況下,通常意味著最短的響應時延。

 

     同樣數量的主機IO,如果讀寫比例不同,最終需要下盤的IO數量不同,意味著需要提供的磁碟能力不同。

 

     例如,RAID6單次寫入需要分別對資料位和校驗位進行3次讀和3次寫,即寫懲罰是6。在RAID6的場景下,如果有1000個隨機的主機IO,讀寫比為2:8,則需要下盤的IO數量為1000*0.2 + 1000*0.8*6 = 5000;而如果讀寫比例為8:2的話,則需要下盤的IO數量為1000*0.8 + 1000*0.2*6 = 2000。

 

不同RAID級別對效能和容量影響

 

     由於各RAID級別的寫懲罰不同,對於相同的業務型別、同樣數量的硬碟而言,選擇不同的RAID演演算法,能夠提供給主機的效能是不相等的。

 

     針對各種典型場景的RAID10、RAID5和RAID6的效能對比,其中假設某儲存裝置上所有硬碟能夠提供的效能為100%,按照各個應用場景的讀寫比例,經過寫懲罰繫數的折算,得到配置成各個RAID級別後能提供給使用者的實際效能。

 

 

    從資料中也可以看出,對於不同的業務型別、同樣數量的硬碟、相同的RAID演演算法,寫比例越大,效能越差。以SPC-1場景配置RAID6為例,假設使用者實際效能為x(0.4x + 0.6x * 6 = 100%),實際效能只是磁碟能提供的x = 25%。

 

     由於RAID演演算法的實現原理不同(RAID10的映象、RAID5/6的校驗盤),對於同樣大小的裸容量來說,選擇不同的RAID演演算法,可提供給使用者的可用容量是不同的(不考慮熱備空間和系統預留的影響)。

 

 

    從可靠性的層面來看,RAID6的可靠性最佳,RAID10次之,RAID5最差。RAID6和RAID10都支援同時壞2塊盤不丟資料,但是RAID10對壞的2塊盤是有條件要求的。

 

如何區分順序IO和隨機IO

 

     IO的定址方式是IO特性的一個重要方面,分為順序、隨機或混合,這取決於上層應用程式獲取資料的方式。例如,資料庫OLTP業務是典型的隨機讀寫,影片監控業務是典型的順序讀,SPC-1模型是混合讀寫。

 

     在通常情況下,如果資料的讀寫是在連續的磁碟空間上,可以認為是順序IO;如果應用讀取的資料分佈在不連續的磁碟空間,且無固定的順序,則視為隨機IO;如果一部分資料是順序讀寫,一部分資料是隨機讀寫,則視為混合型別IO。

順序/隨機特性對效能的影響

 

     在磁碟層面,順序IO的效能優於隨機IO。這是由於傳統的機械磁碟讀寫資料需要碟片轉動和磁頭移動,使得隨機讀寫的碟片旋轉和磁頭尋道時間要遠大於順序讀寫。

 

     在智慧儲存系統層面,通常情況下,順序IO的效能同樣大大優於隨機IO,特別是對於小IO的IOPS效能而言:

 

     1、小IO讀:透過順序流識別和預取演演算法,系統提前在磁碟上讀取大塊的連續資料存放在cache中,後續的大量順序小IO在cache中命中,無需下盤處理。而隨機小IO在cache中命中率極低,只能逐個下盤讀。

 

     2、小IO寫:透過IO合併,系統將多個順序小IO合併成一個較大的IO下盤。如果在RAID5或RAID6場景,IO聚合成滿分條大小的情況下,無需做預讀操作,不會觸發RAID寫懲罰,效率很高。而隨機小IO無法合併,只能逐個下盤寫,且會觸發寫懲罰,導致效能更為低下。典型業務場景的順序/隨機特性,以下是一些典型業務場景的順序/隨機特性。

 

如何區分大IO和小IO

 

     在做效能評估和討論IO模型時,經常會遇到是大IO還是小IO的問題。我們通常把<=16KB的IO認為是小IO(典型的如512bytes、4KB),而>=32KB的IO認為是大IO(典型的如256KB、1MB),處於16K和32K間的IO也認為是小IO。例如,典型的OLTP資料業務是小IO,而資料倉庫業務是大IO。典型業務場景的IO大小,以下是一些典型業務場景的IO大小。

IO大小對效能的影響

 

     IO的大小取決於上層應用程式本身。對效能而言,小IO一般用IOPS來衡量,大IO一般用頻寬來衡量。例如我們熟悉的SPC-1,主要衡量儲存系統在隨機小IO負荷下的IOPS,而SPC-2則主要衡量在各種高負荷連續讀寫應用場合下儲存系統的頻寬。

 

     就單個IO而言,大IO從微觀角度相比小IO會需要更多的處理資源。對於隨機IO而言,隨著隨機IO塊大小的增加,IOPS會隨之降低。例如,當隨機IO大小大於16KB時,機械硬碟的IOPS會呈線性下降。因此,我們通常SPC-1測試的IOPS值很高,但因為使用者業務模型不同,IO大小不同,效能值也是變化的。

 

     不過對於智慧儲存系統來說,會盡可能透過排序、合併、填充等方法對IO進行整合,將多個小IO組合成單個大IO。例如,典型的Web Server Log業務,一般是8KB大小的順序小IO,在分條大小設定為128KB的儲存裝置上,最終會將16個8KB大小的小IO合併成一個128KB的大IO下發到硬碟上。在這種情況下,對比處理多個小IO,處理單個大IO的速度更快、開銷更小。

 

     IO的大小,影響到磁碟選型,快取、RAID型別、LUN的一些屬性和策略的調優。例如,隨機小IO的場景,由於SSD盤具有快速隨機讀寫的特性,選用SSD盤對比SAS盤能夠大幅提升效能;但如果是隨機大IO,選用頻寬效能相當、價錢便宜的SAS盤更有優勢。

Cache加速的原理

 

     Cache是儲存中最重要的模組之一,對於IOPS效能而言,CACHE的主要作用是加速。

 

     對於寫業務,CACHE加速體現在三個方面:

     1、回寫情況下,主機側下到陣列側的資料只需要下到CACHE處而不需要真正寫到磁碟即可以傳回通知主機寫完成,當寫CACHE的資料積累到一定程度(水位),陣列才把資料刷到磁碟。由此可以將速度較差的“同步單個寫”轉為“非同步批次寫”,在通常情況下,回寫的效能約是透寫效能的兩倍以上。

     2、寫命中。回寫條件下,新寫到CACHE中的資料發現在CACHE中已經有準備寫到相同地址但還沒有刷盤的資料。在這種情況下,只需要將新寫入的資料下盤即可。

     3、寫合併。例如小IO下到CACHE中,CACHE會盡可能對IO進行排序與合併,將多個小IO合成單個大IO再下盤。

 

     對於讀業務,CACHE加速主要體現在讀命中。例如智慧預取策略,CACHE會主動識別IO流的特徵,如果發現是順序IO流,CACHE會在下盤讀IO的同時,主動讀取相鄰區域的大塊資料放到CACHE中。當順序IO下發到CACHE時,發現CACHE中已存放了需要的資料,則直接將此資料傳回即可,不需要再下盤讀。其中的一個特例是“全命中”。

 

在全命中條件下,業務需要讀取的資料已經全部儲存到CACHE中,完全不需要再下盤處理,即所有IO到CACHE層就傳回了,路徑和時延最短。全命中讀的IOPS值,往往是一款儲存產品能夠提供的最大IOPS值。

贊(0)

分享創造快樂