當前位置:
首頁 > 新聞 > 清華計算機系舒繼武 CCF-ADL 講習班上篇:快閃記憶體存儲系統的軟體層優化

清華計算機系舒繼武 CCF-ADL 講習班上篇:快閃記憶體存儲系統的軟體層優化

雷鋒網註:舒繼武,現任清華大學教授、 博士生導師。近年來主要從事網路存儲、存儲安全、網路伺服器、並行演算法、並行處理技術及並行應用軟體技術等方面的研究工作。他還是清華大學計算機科學與技術系分學位委員會委員, SNIA China(全球網路存儲工業協會(中國))專家委員會委員,「高效能伺服器和存儲技術國家重點實驗室」(浪潮集團)學術委員會委員。國家863計劃信息技術領域「海量存儲系統關鍵技術」重大項目總體專家組副組長。

6月14-16日,中國計算機學會學科前沿講習班在北京開講。作為數據存儲方面的專家,清華大學計算機系教授舒繼武在CCF-ADL第79期講習班上為學術青年們帶來了現有存儲系統軟體層的一些研究進展。舒繼武教授本次的演講主題為《快閃記憶體存儲系統的軟體層優化》。

以下為舒繼武演講內容,雷鋒網進行了不改變原意的編輯。

磁碟自從2000年以來,帶寬100兆左右,沒有太大的變化,延時也沒有太大的變化,往後我覺得即使有優化也不會很大。

另外一個,IBM 2020年要構建一個大的存儲系統,它有2 GIOP/sec,需要500萬塊磁碟,佔地超2000平方米,能耗高達22兆瓦。

現在PCIe的帶寬,它的延遲有一個很大變化。如果基於這種來構建IBM2GIOP系統,用SCM存儲的話,只需要8000個模塊,佔地面積大幅縮減,能耗近1000瓦。

自從1984年日本東芝推出快閃記憶體這個東西以來,應該來說變化很大,從當時的盤到卡,到現在的各種陣列,再到各種大的分散式系統。

那我們來看看在結構上有什麼變化?另外一點我想說明,快閃記憶體來構建外存儲系統有哪些優勢?第一個是低延遲、高帶寬;另外一個是成本優勢,IOPS來構建的話本身因為它的高帶寬、低延遲,所以它得到的單位IOPS應該比磁碟大得多。它從成本上來講應該是比磁碟便宜的。

另外一個因為它是電子的,不是機械的,所以可靠性、能耗都不用說了。從早期Flash的擴展卡到現在應用的情況下,盤這個東西大家都知道,包括我們現在很多的小卡,那像這種東西它的介面問題,容量問題等得不到解決,所以這個肯定是一個基礎的問題。

後來就發展到卡,那就是說PCIe的這種快閃記憶體卡,把它插到這個主機上來構成一個系統,它的好處是什麼?利用這個本身強大計算能力和超大內存,所以這個卡能夠得到很大的發揮。

還有就是它的很多driver,在這些主機上,它能夠做到很多的異地更新,包括對於系統的開放,能夠做很好的一些針對性的開放。而且在這個發展過程當中也經歷過一個過程,從早期這種卡的應用,這種大的盤應用,要提供很多層,到後來卡的應用當中,它把很多層給跳過去了。

那當然它裡面很簡單的一個問題是它容量做不大,你一塊卡現在1T、2T,另外一個,這個卡的散熱非常成問題,我們有早期的,2013年、2014年從華為拿到的卡,可以達到七八十度,把雞蛋放在上面都能夠烤熟,所以這個都是它的一些問題。

那因為它的容量做不大嘛,它的可靠性也有問題。後來就發展到成為SSD的陣列,這樣它的容量就可以變得很大,可靠性也會做一些提升。那做陣列的話有兩種方式,像SSD這種規格,就像用磁碟一樣的模式,那這樣的話有很多問題,就是磁碟長大。從工業化的角度來看它不用做太多的事情,當然它肯定要SSD要做一些優化。

當然也存在會發生那種性能上突然下降等類似的問題,它只是對控制器做了優化,但是還遠沒有發揮SSD本身的一些特點。

後來有一個廠商就說,做一個全新的磁碟陣列控制器,重新設計這個控制器,完全是面向SSD的,那在這裡面要考慮很多東西,它的控制器得考慮到SSD本身的垃圾回收,包括新的一些操作,並發的一些操作,完全是一個全新的,不像這種只是優化的,因為這個還是在磁碟的基礎上做一些改進,像這種就是完全不考慮磁碟,面向SSD的,那它的性能應該來說有一個量級的變化。

你要構建一個大系統可能還是不夠。磁碟陣列達到幾十T也就了不起了,後來有一個分散式快閃記憶體陣列,這一個是CMU,它考慮角度不一樣,前面的磁碟陣列它是考慮IO子系統的性能和可靠性。

它一直考慮的是怎麼把性能做一個匹配,所以基本上用的是低主頻的CPU來構建分散式的快閃記憶體集成系統,所以在這方面做了很多的應用。

後來UCSD他們也構建了一個系統,但是這個系統跟前面的不一樣,它主要考慮的是性能和匹配的問題,這個考慮的是能耗問題,就是在單個板子上級成了256GB的Flash和2G的DRAM來構建這麼一個東西,做了很徹底的一個優化和一個重新設計。在這個重新設計主要是考慮並發的。

從結構來看,我們從盤到卡到陣列,到現在構建分散式的存儲系統,應該來說還是有一個很大的並發的,應該來說這個能夠在真正的大型卡上能夠用的東西。

當然這是從結構的並發來看,但是問題來看是軟體的問題。

我這裡舉一個例子,這個是大家都能夠看到UCSD曾經在2012年發布的這麼一個東西,我們早期的磁碟因為比較慢嘛,那你這個軟體的話慢一點它顯現不出來。我們認為現在用PCIE這種Flash的話,軟體開銷能夠達到21.9%。

那麼我們來看看在這方面,應該有很多應用,按照層次我簡單畫了一下,當然這不是一個很嚴謹的圖,就是我們做快閃記憶體系統,可能下面有一些快閃記憶體的硬體的東西,當然這個也可以是陣列,也可以是裸的。

在這之上可能有一些介面,還有包括FTL,當然有的FTL可能在這裡面不包含,把它合到上面去了等等,有一些新的轉化層,包括上層有一些文件系統還有一些資料庫,再上面有一些應用。

再一個就是文件系統,做得就更好了。再就是這個快閃記憶體的KV存儲等等,在這方面應該有很多的事情做。我們還在這方面做了一些事情,這個紅色的是我們團隊做的一些事情。

這是大概說一下,這是軟體層的一個變化,需要做一個很革新的變化。我們來看看要做哪些變化。

因為傳統的這種磁碟的模式很慢,CPU給一個信令,CPU就處理(還不能幹其他的事情),完了以後再來弄。但是現在你的硬體快了,你還用這種中斷方式的話,上下文切換就很耗時間,所以CPU這麼切換,它可以用其他的一些方式,。所以在這種情況下,傳統的這種終端方式代價很高。

另外一個就是存取路徑,那傳統的磁碟結構文件系統,包括內存拷貝了幾次,兩次拷貝過了等等,那在這個過程當中可能你的路徑要縮短,甚至要把一個層級合併。打個比方,文件系統,你的文件系統要做存儲管理,你的FTL也要做存儲管理,你認為就完全是一種重疊的,是不是可以把這一層給處理掉,這樣的話你的IO能夠大大縮短匹配這個命令時間。

另外一個就是軟體介面,因為磁碟和這個SD還是不一樣,包括它還有日誌等等這些東西,所以在這方面提出了很多的一些相關領域軟體介面,這是事務方面的事情。

下面我就談談這個事務方面處理,快閃記憶體的事務處理這方面有很多研究,它有利用快閃記憶體的異地更新特性在存儲設備中提供原子寫入介面,避免雙重寫入。

這裡面有幾個層,這個是PCIE上的一個文章,就是你這個事務,如果說我在這個過程中系統崩潰了,他會去掃描,如果這有一點事務寫完了,我這個就好弄。這是一種它的指針,我把這個事務串起來,我最後來解讀這些指針是否是閉環,當然這個是串列,這個可以同時掃描,可以並行來做,那它處理事務就快。

那按我們的方法就是,我用一個窗口,事務即使在窗口中崩潰了,也只是回到這個串口裡,所以通過這種模式,使得我們這個事務應該比傳統的要快一點。

那麼我們這個介面的話,在一致性考慮的情況下,我們這個性能提高20%多左右。

在這個基礎上我們也進一步做了優化,對這些做一個差異事務處理,當然在這裡面我們考慮了一些事情,就是說異地更新,在這裡面有最早的這種東西,日誌管理到事務本身的一些特性。

那麼再就是講一下文件系統,剛才講文件系統的問題很大,第一個我剛才講了,文件系統要管理,到了這個FTL,你要在上面做優化根本很難,這不是你想像的,是一個很大的危害。

另外就是哪怕它是一個邏輯的東西,你沒有那麼容易,所以你在上面做一些優化的話很難。

再一個就是我們所有這些東西,都是這個特性的考慮。因為它是異地更新,異地更新既有它不好的地方,好的地方是能夠在這個磁碟上有兩個版本。

我們來看看從FTL,包括單層開始,怎麼來用它,實際上FTL這個東西是一個很好的東西,Flash構建這種磁碟在系統中用。

那後來就把它用到我們的伺服器上,那伺服器上就相當於用了一個FTL像磁碟來用,那這樣用起來很好、很方便的。但是這個事情我就說存在著幾個問題。

這裡面很重要的一個事情就是冷熱(數據)分組,這是個很關鍵的基礎。那麼在這裡面有一個NAT的表,因為在這裡面會有不停地更新,這個很耗性能,也是產生很大的一系列延遲型問題。

另外一個就是有地址對齊的這麼一個方式,使得它對這個效率能夠得到更高,而且能夠保證它的一致性。那這個現在已經開源了,大家可以在上面拓展一下。在這個方面它有一定的性能上的提高,比如說F2FS上面,在SATASD的環境下,能夠提高2.5倍,在PCIESD的環境下能夠達到1.8倍的提高。

那這個工作雖然是在這方面,三星做了一些優化,但是依舊還有很多問題沒有解決,而剛才說的文件系統那些都還沒有考慮。後來FusionIO做了一個事情,說你現在FTR是在這個磁碟上,後來就有人把這個FTR放到伺服器主機上來做,這還是有差別的。

你想想一個磁碟陣列,它陣列上的內存很小,FTRSD上面的內存很小,它的計算能力雖然有晶元,但是計算能力很弱。如果我們把FTR放到伺服器上的話,它可以利用主機強大的計算功能和大內存,使得這個FTR的能力變得很強,這樣的話,它的性能、很多功能也能夠提升很高。

而其他的設備,你沒辦法做很多的優化,它上面把裸的東西挪上去了,能夠在上面知道下層的一些分布,以及對應的通道都能夠識別得出來,包括角度都能夠在這上面做,所以這應該來說是一個很大的改進。FusionIO和普林斯頓做了這麼一個文件系統,就是這個文件系統和和你的FTR功能有一些冗餘。另外一個就是它對FTR做了一些簡化。

我們來看看FISHIO提出了DFS這麼一個文件系統,這裡面主要是提到了這麼一個介面,使它能夠提供一些原子性。另外一個有底層的log機制,使得不要做額外log機制。另外這個文件系統的塊分配操作,就是文件系統的管理全部交給地層完成,這是FusionIO的一個思想,就是把FTR拿到上層來做,主機層和文件系統融合在一起,這樣的話性能提升還是很明顯的,這使得EST3它的直接讀寫性能夠提高20%左右,緩存性能能力提高1倍多。

但是這個思想的話也存在一定問題,它上面是沒有考慮快閃記憶體文件系統壽命。那麼我們在這方面曾經做了一些工作,包括這三個方面,我們提出了一個對象,就是把每個系統分為兩塊兒,一個是命名空間管理,一個是存儲管理,那這個存儲管理就是像把FTR也拿上來,和文件系統的存儲管理合在一起,提出來一個對象式FTR,是一個對象存儲管理。另外一個對這個文件系統命名空間也做了一些管理,裡面一些消息,一些目錄的頻繁更新,我們做了很大一些優化。

另外一個我們對這個快閃記憶體底層晶元並發處理我們也做了一些優化,這個發表在FAST13和FAST14,以及ATC16上面做了一些事情,包括怎麼考慮它的耐久性,怎麼根據快閃記憶體的特徵對它設計新目錄樹管理來做優化。

我們來看看這三個步驟里的第一個步驟,就是做了一個對象式的FTL這麼一個穩定性,把它拿到文件系統裡面的管理來,那麼在這個裡面有一些相關技術,提出來一個介面,能夠獲得上層更多信息。另外一個我們在這裡面做了一些壓縮,能夠減少它的一些寫入量和壽命;還有就是在這個理論的管理上也做了一些優化。

我們做了一個測試,在同步的情況下,這個寫入量, OFSS平均寫入數據量為ext3的15.1%,ext3的52.6%,btrfs的10.6%;在非同步情況下,OFSS平均寫入數據量為ext36%,而et2的80.2%,btrfs的15.1%。

那麼下一步的工作就是我們怎麼來利用優化Flash的命名空間管理,在這個裡面講這個目錄樹有時候更新一頁或者一塊,這個過程的話很多它都是小寫,也是很頻繁。那麼在這裡面就是說目錄樹怎麼來構建,把它做了一個分離,當然這個過程當中為了維護它的一致性,我們用了嵌入式的反向指針。另外一個在這裡面做了一些壓縮,使得它能夠很快速地持久化,就是優化它的命名空間。那麼這個工作的效果是這樣,從性能和壽命跟已有的做了一個比較,在性能、壽命上也得到了一定的提升。

那麼下面一個是我們的第三個工作,怎麼來感知內存內部的並發,因為FLASH系統有很多帶、有很多block等等,實際上這些東西都可以並發的,當然在這方面也做了一些相關的工作。

另外一個就是我在這個裡面考慮到與固定協同的垃圾回收,就是相當於這裡面的並發感知請求調度,而且是在這裡面做分配的時候,我可以對它做一些調度,而且能夠優化這些調度,甚至並發感知來做這麼一個事情,這是我們做這個事情的三個思想。

那這個思想的話,我們也做了一些測試,效果還不錯,能夠取得達到1到2倍的最好性能,而且跟三星公司也做了比較性能比較。

好,剛才講的就是文件系統,文件系統還不止這些。只是現在我個人認為還沒有說哪個文件系統把這些問題都徹底解決,或者說很成熟地在用,所以在這個方面應該還有一些事情在做。

另外一個就是在上面的話,還有一些做KV資料庫的一些事情。這個是北大他們做的一個系統,能夠給你提供來繞開這個文件系統,這樣你的IOlogging就明顯地縮短。另外一個就是它這個是一個基於裸快閃記憶體的KV資料庫。

那麼,這是2016年威斯康星做的一個KV系統,它就是把K和V分離出來,傳統的K和V是存在一起的,但是要是K很小,就是4個位元組,那你這個東西如果要做一個排期的話,那把KV都這麼導進來,一個性能慢,一個是還要裡面有壽命的問題,所以就要把K和V來做一些分離,來解決它寫放大的問題。

但是它這種思想就很好地能夠發揮到快閃記憶體隨機讀的特性,而且它的這個效果也不錯。這是它的一個比較,就是傳統的LSM-tree構建的KV系統,它一般的帶寬也就是2兆到4兆,但是它這種分離了之後,它的性能呈這麼一個顯示,1KB它能夠達到100多,所以說這個性能應該是有一個很大的變化,威斯康星提出來這個key value還是一個很了不起的一個工作。

ATC有一個工作,就是對快閃記憶體的介面來做一些擴展,,傳統的KV系統中有這些東西,你要做這個logging,你甚至還要mapping,還要在這裡面做一些垃圾回收、做一些處理,那你的FTR不是也有這些東西嗎?它就把這裡面的兩塊兒有重疊的做了一些簡化,做了一個合併,同時還提供了一個介面,使得它的FTR得到一個可擴展的介面,把這個移植到FTR中,這是它的一個思想。

那這也是一個很重要的思想,它的結構是這樣的,所以說這裡面的KV的logging就短了很多。那像這種情況下可以看到它結果的比較,叫做NVMKV的系統,它的性能明顯有一個大的變化。

所以這是剛才講的軟體存儲系統裡面的工作,主要講的就是裡面的這個介面,就是通過這個機制傳到終端,那你現在還能用終端嗎?還是會用更好的方式。再一個就是它的IO logging的層次,再就是介面問題,它的事務處理問題,主動說了一下它的文件系統和KV系統,所以說它的這個軟體還是有很多的優化。只是現在來說應該還是一個熱點,還有在做。

就我了解,真正的大快閃記憶體,在很多的應用中還沒有說真的把它用上,這也是作為一個磁碟陣列或者說作為一個緩存,作為它的一個部分,它還真正沒用上,這是因為這些軟體還是不成熟。

那麼我們這剛才講了,這些軟體要做,你要構成分散式的這種快閃記憶體系統,分散式的協議是很重要的。這應該是微軟他們提出來的叫做CORFU的這麼一個協議,它把那些快閃記憶體作為一個裸快閃記憶體,當然這個快閃記憶體是經過定製的,它有網口介面。

為什麼說它有網卡的介面,它不是說把一個陣列或者說一個伺服器弄到網上,一般就是把伺服器上有很多的快閃記憶體卡或者說磁碟陣列構建這麼一個分散式系統,它把這些快閃記憶體直接放在網上,用一個網連成一個大的存儲池,在這個過程當中它的協議就不一樣了。那傳統的要經過伺服器那些層次,它是將快閃記憶體直接連到網路上。

另外一個為了保證它的強一致性,在裡面也做了一些工作,這是它的一個構建,當然優點就是很節能,就是卡嘛,但是你一個伺服器的話達到250瓦。

這是另外一個低延遲,它讀寫延遲低於1ms,而且故障恢復也很快,它保證了一些性能的事情。當然問題就是因為你這個卡是要掛在網上,它做了一些定製,有網卡在這個裡面。

當然用起來還是比較受限,它的這個協議還是性能的問題,所以微軟在這個基礎上又進一步地做了優化,那麼這種情況下提出了一個in memory的數據結構,這個結構主要是提供一個介面,使得你這個快閃記憶體中間能夠發揮它,而且底層協議能夠得到進一步的簡化,它這個就是利用樹結構做了很多的抽象。所以這個協議開銷是相對於剛才的CORFU來說有一個大的降低,而且他這裡面也做了一致性、持久性、原子性、隔離性。

那麼,它的問題就是可擴展性的問題,還要受環境的一些制約,特別是在裡面做checkpoint的時候,這個客戶開銷比較大。

實際上在協議上面我們也做了一定的工作,我在這裡面因為做得比較簡單,就沒有放在這裡面講。實際上我個人認為,真正的將來要用上,這個協議應該來說是一個很大的變革,現在這個東西應該是基本上都認可了它的低延遲。怎麼來跟它結合,我會在下一階段提到這一點,它應該來說還有一些值得研究的事情。

剛才講的就是怎麼來構建外層,我再講一點構建外層的一個展望,就是我個人的定義。

第一個就是軟體管理,軟體的問題應該來說是裡面一個很重要的問題,接入PCIE的SFlash,下面就是磁碟的0.31%,軟體開銷不得不重視,它包括很多方面的內容。另外一個,我們傳統磁碟的這種系統,軟體經歷了幾十年的發展,有很豐富的一些功能,那這個功能應該來說也希望在這種面向快閃記憶體的存儲中也應該得以保留,而這些功能又存在一些衝突和矛盾,怎麼來處理這些東西,然後希望能夠把發展幾十年的功能在新構建的環境下用得上,在這裡面應該是一個很大的挑戰。

這裡面存在一個軟體的低開銷和這些管理功能之間的矛盾,這是一個值得考慮的事情。

此外,這種系統的變革應該來說是顛覆式的,外層的系統怎麼來重新審議。那麼內層的系統,現在新的存儲系統除了快閃記憶體之外,應該發展了有十多年了。現在像新的PCM這個東西發展出來,那它肯定是要去做內存,它的性能應該更好,更能解決內存的一些特性,而怎麼來構建,應該來說也是一個很大的挑戰。

雷鋒網後續還將發布後續演講內容,敬請期待。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

PRO 7發布,魅族的三觀已經被刷新
中國安全圈真實薪資曝光
車聯網合縱連橫:博泰應宜倫談未來3 - 5年的挑戰和服務機會
車聯網合縱連橫:博泰應宜倫談未來3-5年的挑戰和服務機會
德國老司機賓士 S 級,終於克服了讓無數美國人驚慌失措的環形交叉路口

TAG:雷鋒網 |

您可能感興趣

網易有道吳迎暉:AI技術還停留在軟體層,實體化的案例並不多
我國在步行運動方面很有心,各種計步軟體層出不窮!