<strike id="zl9n9"></strike>

    <form id="zl9n9"><nobr id="zl9n9"></nobr></form>

                中國數據存儲服務平臺

                ScaleFlux鄭寧:可計算型存儲的應用案例研究

                11月23日-25日,由百易傳媒(DOIT)主辦,中國計算機學會信息存儲專委會、中國計算機行業協會信息存儲與安全專委會、華中科技大學武漢光電國家研究中心、固態技術協會(JEDEC) 等機構支持,主題為“數據覺醒”的“2021(十七屆)中國數據與存儲峰會”盛大召開。

                此次峰會首次改為全程線上舉辦,活動為期三天,在第二天數據智能論壇上,ScaleFlux軟件系統負責人鄭寧發表了《可計算型存儲的應用案例研究》主題演講圍繞透明壓縮,專用硬件下的可計算存儲及通用硬件下的可計算存儲介紹可計算存儲在實際應用中的案例研究。

                以下內容根據速記整理,未經本人審定:

                可計算存儲是這幾年熱門討論的話題。通常IT系統主要功能部件包括三大部分——計算、網絡、存儲。計算部分,主要指CPU,隨著摩爾定律的失效,每年CPU的算力增長非常有限,無法滿足應用需求,因此才有了各種加速卡的出現,這些加速卡可能是基于FPGA或者基于GPU、TPU,為了在某個特定領域極大卸載CPU計算壓力,從而提升整個系統能效比。

                網絡也面臨同樣的問題,傳統網絡需要CPU運行一系列網絡協議實現網絡傳輸,但這一方面浪費CPU計算資源,另一方面也使網絡帶寬受限,智能網卡的出現大大緩解了這個問題,卸載CPU網絡相關功能,同時又把網絡傳輸帶寬提升了一個數量級。

                再看存儲,物聯網時代已經到來,每天都有海量數據產生,如何對這些數據進行存儲和訪問,對系統而言是非常重要的一環??上驳氖请S著高性能、大容量的SSD逐漸普及,現在的一臺機器上可以部署十幾張存儲卡,整體可提供幾十甚至上百TB存儲空間,存儲帶寬和訪問延遲相比HDD都得到了極大改善。

                隨之而來的問題就是如何對這些海量數據進行處理,這就對CPU提出非常大的挑戰,可計算存儲便應運而生。

                ScaleFlux作為可計算存儲領域的先驅廠商,一直致力于提升應用及基礎設施附加值,具體來說我們希望產品可以在以下三個方面達成一個目標。

                第一,擴展負載容量的同時,也能夠線性擴展性能;第二,優化基礎設施的成本;第三,能夠靈活適配應用,緊跟應用需求。

                可計算存儲設備本質上重新定義了存儲和計算的軟硬件邊界,在把可計算存儲推向實際應用的過程中,我們必須要解決以下幾個問題。

                第一,存儲設備內的計算能力到底有多少,因為我們本質上是想把主機端CPU的計算能力卸載到近存儲這一邊,所以說如果這個存儲設備沒有足夠算力,那么屬于無效卸載。

                第二,可計算存儲到底能給我們整個系統帶來多少性能收益,這與我們所卸載的計算緊密相關,我們希望卸載的計算對整個系統來講占有比較大的權重,這樣性能收益才會比較明顯。

                第三,我們使用可計算存儲設備所解決的這個問題,適用范圍到底有多廣。最后一點,ScaleFlux重新劃分了軟硬件的邊界,頂層底層需要協同設計,這個協同設計的復雜度到底有多高,如果復雜度高,很可能會成為可計算存儲設備落地的一個障礙。

                下面我們就具體的從幾個方面來介紹一下ScaleFlux在可計算存儲方面所做得一些嘗試。

                第一點,透明壓縮。此前實現壓縮功能最常見的辦法是軟件壓縮,就是使用CPU運行軟件代碼實現壓縮效果。通常我們可以看到應用中已經集成了多種多樣的壓縮算法,本質上是在壓縮率和壓縮吞吐之間做一個取舍,壓縮率很好的算法如ZLIB,GZIP壓縮復雜度比較高,所以說相對來說它的壓縮吞吐會比較低,還有壓縮比較快的那些算法,像SNAPPY,LZ4的壓縮效果又不太好。

                整體來講,這些軟件壓縮的缺點是占用CPU資源,如果我們想用壓縮效果比較好的壓縮算法,其速度就往往較慢,很可能會成為整個系統的瓶頸。既想達到比較好的壓縮效果,又能夠使壓縮帶寬較大,就需要壓縮加速卡。壓縮加速卡是把壓縮和解壓縮功能從CPU卸載到專門的壓縮卡上,以此實現壓縮率和壓縮吞吐間比較好的平衡。

                但單張壓縮加速卡的壓縮吞吐有上限,基本遠低于存儲系統所能夠提供的帶寬,因此為了進一步提升壓縮帶寬,我們需要在一臺機器里插入多張壓縮加速卡,占用額外的槽位,也就是要減少相應存儲設備數量,導致系統可能得不償失。

                為了解決這個問題,ScaleFlux提出了透明壓縮,把壓縮和解壓縮功能直接集成到SSD的主控里,當主機端向存儲設備寫入數據時,這些數據首先會在主控里進行壓縮,壓縮完再寫入NAND,當主機端需要讀取數據,主控首先會從NAND上讀取壓縮后的數據,經過解壓縮再返回到上層應用。

                所以從應用端來講,整個壓縮和解壓縮的過程,是完全透明的,這就是為什么我們叫它透明壓縮。當然透明壓縮已經具備了之前壓縮加速卡的一些特性,比如壓縮帶寬較高,其自身的額外優勢是不需要額外的槽位,因此在增加存儲設備時,其壓縮和解壓縮的能力,也就得到了相應的擴展,而真正落到NAND上的數據量減少,相對延長了SSD的使用壽命,另外還可以提升應用性能,后面我們會專門介紹到這一部分。

                使用透明壓縮,具體有什么效果,這張圖給了我們一個量化的說明,我們對比了具有透明壓縮功能的CSD 2000和市面上普通的PCIe SSD兩種產品,測試場景是2.5:1的數據壓縮比,8個jobs,32個隊列深度的4KB穩態性能下的對比,然后通過這個圖我們可以看到,圖中縱軸是IOPS,也就是每秒操作數,這個數值越高越好,橫軸代表讀寫操作中讀的比例,最左邊的100%對應的是純讀的場景,最右邊的0%對應的是純寫的場景。

                可以看出,使用了透明壓縮的CSD 2000,性能上具有很大的優勢,尤其是在讀寫混合的場景下,當我們的寫比例超過50%的時候,基本上CSD 2000在穩態下的性能是普通PCIeSSD的2倍左右,所以也希望借著透明壓縮可以給用戶提供更優秀的混合讀寫性能,更低的單位存儲價格以及更簡單的頂層應用集成。

                針對數據庫上的應用,我們對比了MySQL和PostgreSQL兩款最常見數據庫的場景,使用透明壓縮后可以節約50%以上的存儲空間,同時也可以提供更好的性能。

                我們還希望可計算存儲可以承擔一些其他的計算邏輯,這些計算邏輯可以由專用的硬件來完成,也可以由通用的硬件完成,專用硬件是面向特定領域專門設計而成,因此可以比較容易的實現更高的并行度和吞吐率,這里的以行存數據庫中間的數據過濾作為例子,對專用硬件下的可計算存儲做一個說明。

                這里專用硬件主要承擔的是列投影和行過濾的功能,列投影主要指是在掃描數據的時候,選擇出那些上層查詢感興趣的列,不敢去的列直接過濾掉,行過濾主要指當某一行不滿足上述的查詢條件直接過濾掉,如果有可能滿足,再選上。

                我們右邊通過了一個簡單的查詢語句,對列投影和行過濾的概念做一個說明,在查詢語句中,我們是選擇了三個列,ORDERKEY、EXTENDEDPRICE和DISCOUNT,上層只對這三個列感興趣,這三個列在可計算存儲內部就直接被過濾掉了,所以叫做列投影。

                同時我們查詢,還有一條額外的條件語句,也就是RETURNFLAG的值必須是52,如果不是52也就是不滿足上層的查詢條件,我們也會在掃描的時候,把這一行整個過濾掉,這個就叫做行過濾。

                那么通過列投影和行過濾,我們希望可計算存儲達到這樣一個效果,首先就是可以極大減少從可計算存儲內部傳輸到主機端的數據量,第二個就是減少PCIe帶寬和內存帶寬的占用,第三就是大大減輕主機端CPU在后續處理時的壓力。

                專用硬件雖然可以實現較好的計算卸載功能,但設計復雜度高,所以我們也要思考在通用硬件下是否能實現類似的近存儲計算。具體到可計算存儲設備,這里的通用硬件指的是ARM處理器或RISC-V處理器,但相對現有主機CPU計算力較弱。

                如果我們想通過計算卸載來獲得整個系統性能的提升,承擔計算卸載的計算單元,其計算能力一般是要大于主機端CPU計算能力,只有在這種情況下,才有可能使整個系統產生一個比較好的效率。但是現在我們所面臨的情況,我們可計算存儲設備內的計算單元,有可能它的計算能力是弱于主機端CPU的,在這種情況下,還有沒有可能實現一個比較有效的近存儲計算呢?

                這里我們以列存數據庫中的數據作為例子進行探討,列存數據庫,就是把數據按照列的形式,緊密的排列,進而進行存儲,通過這種方式,一是有利于數據壓縮,第二,當上層查詢需要訪問數據的時候,可以直接訪問感興趣的那些列,不感興趣的列不需要過濾,就直接不讀了。

                那么現在由于可計算存儲設備內部的計算單元計算能力比較弱,所以我們盡量需要避免對數據元素依次進行掃描,否則其計算邏輯與主機端的CPU相同,很可能導致整體性能不升反降。

                取而代之的,我們不對單個元素進行過濾,而是對數據段進行過濾,一個數據段包含多個數據元素,如果某個數據段內有滿足上層查詢條件,我們就把整個數據段進行選擇,如果不滿足上層的查詢條件,整個數據段就會被舍棄,如何快速對數據段進行一個判斷,這里所給出的一種方法,就是引入了國外的輔助元數據,這些輔助元數據在當初寫數據的時候,我們就已經嵌入到列存數據庫里,輔助元數據就包含數據段內數據分布的一個總結。

                通過這種方式,我們也可以達到像之前專用硬件下的數據過濾類似的效果,在可計算存儲設備內部進行一些預過濾,實現從存儲設備返回到主機端的數據量也會減少。

                本質上這種方法是在過濾的精確度或帶寬之間做了一個取舍,最終目的就使得我們雖然可計算存儲設備內的計算能力比較弱,但能夠提供的掃描吞吐依然可以匹配,甚至大于上層主機端的掃描速度。

                我們也對這種方法進行了一些評估,這里所使用的原始數據還是TPC-H Lineitem表,數據庫使用的是列存數據庫,當前比較熱的一款引擎Click House,處理器是ARM Cortex A53處理器。

                我們今天的分享到此結束,謝謝大家。

                未經允許不得轉載:存儲在線 » ScaleFlux鄭寧:可計算型存儲的應用案例研究
                分享到: 更多 (0)
                好紧紧的小嫩嫩,50i岁熟妇大白屁股真爽,女教师 裕美の放课后前篇
                <strike id="zl9n9"></strike>

                  <form id="zl9n9"><nobr id="zl9n9"></nobr></form>