清華計算機系舒繼武 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這個東西發展出來,那它肯定是要去做記憶體,它的效能應該更好,更能解決記憶體的一些特性,而怎麼來構建,應該來說也是一個很大的挑戰。
相關文章
- 計算機的硬體系統儲存器計算機
- 計算機作業系統——虛擬記憶體與實體記憶體計算機作業系統記憶體
- 浪潮儲存:以全快閃記憶體儲加速數字轉型記憶體
- 智慧、快閃記憶體、即服務 揭秘新華三儲存三駕馬車記憶體
- 全快閃記憶體交鑰匙系統:ObjectScale XF960記憶體Object
- 序列SPI NOR快閃記憶體VS並行NOR快閃記憶體記憶體並行
- 清華大學計算機系統課程筆記-第十一講和第十二講計算機筆記
- 清華大學-作業系統學習筆記(五)--- 虛擬記憶體技術作業系統筆記記憶體
- 十六、FLASH快閃記憶體記憶體
- 軟體設計師23-儲存器系統02
- 計算機硬體系統計算機
- 軟體設計師:計算機系統知識計算機
- 評測|HPE Nimble AF全快閃記憶體系列,詮釋真正的高階儲存記憶體
- 記憶體檔案系統的再學習記憶體
- 計算機輔助設計軟體AutoCAD 2024的系統要求計算機
- 快閃記憶體盤和普通u盤哪個好 快閃記憶體盤和u盤的區別記憶體
- 聚焦快閃記憶體核心部件,浪潮儲存重新定義SSD可靠性記憶體
- CMR:2018上半年印度消費者儲存快閃記憶體市場下降1%記憶體
- 曝光了,清華計算機系最牛的課!計算機
- Linux系統手動釋放記憶體快取Linux記憶體快取
- 記憶體中的資料儲存記憶體
- 手機記憶體卡大小的計算記憶體
- 作業系統——記憶體管理學習筆記作業系統記憶體筆記
- 虛擬記憶體系統——瞭解記憶體的工作原理記憶體
- 微機原理與系統設計筆記6 | 儲存器系統設計筆記
- 計算機記憶體管理介紹計算機記憶體
- Linux記憶體子系統——Locking Pages(記憶體鎖定)Linux記憶體
- <JVM上篇:記憶體與垃圾回收篇>02-類載入子系統JVM記憶體
- laravel redirect快閃記憶體blade讀取不到Laravel記憶體
- SAPGUI軟體裡做的設定,本地作業系統儲存的具體位置GUI作業系統
- 從儲存市場的“反差萌”,讀懂全快閃記憶體之風與企業智慧時代記憶體
- 作業系統-記憶體管理作業系統記憶體
- 作業系統——記憶體管理作業系統記憶體
- Sieve—Android 記憶體分析系統Android記憶體
- 如何檢視linux系統中空閒記憶體/實體記憶體使用/剩餘記憶體Linux記憶體
- Redis 記憶體優化神技,小記憶體儲存大資料Redis記憶體優化大資料
- 聊天室軟體原始碼開發,分散式儲存系統可靠性量化計算的實現原始碼分散式
- GPU體系架構(二):GPU儲存體系GPU架構
- 深入理解計算機系統基礎虛擬記憶體---端到端的地址翻譯計算機記憶體