清華計算機系舒繼武 CCF-ADL 講習班下篇:持久性內存存儲系統的研究與挑戰
雷鋒網註:舒繼武,現任清華大學教授、 博士生導師。近年來主要從事網路存儲、存儲安全、網路伺服器、並行演算法、並行處理技術及並行應用軟體技術等方面的研究工作。他還是清華大學計算機科學與技術系分學位委員會委員, SNIA China(全球網路存儲工業協會(中國))專家委員會委員,「高效能伺服器和存儲技術國家重點實驗室」(浪潮集團)學術委員會委員。國家863計劃信息技術領域「海量存儲系統關鍵技術」重大項目總體專家組副組長。
雷鋒網消息,2017年6月14-16日,中國計算機學會學科前沿講習班在北京開講。作為數據存儲方面的專家,清華大學計算機系舒繼武教授在 CCF-ADL 第 79 期講習班上為廣大學術青年們帶來現有存儲系統軟體層的一些研究進展。舒繼武教授的演講主題為「基於非易失存儲器的存儲系統軟體層優化」。
快閃記憶體技術逐漸成熟並得到廣泛部署,且一些新型非易失存儲器件如3D XPoint、PCM等也得到相當的發展。然而,快閃記憶體及其他新型非易失存儲器件與傳統的磁碟和DRAM都有著相當大的差異,例如在易失性、壽命、讀寫性能、定址、存儲密度等方面表現出不相同的特徵。現有的存儲系統軟體層次均面向磁碟和DRAM設計,並不能充分發揮非易失存儲器件的特性,甚至可能嚴重影響非易失存儲器件的壽命與性能。
在這節課上,舒繼武教授和大家談到了持久性內存存儲系統目前的研究進展以及面臨的問題和挑戰。
以下是舒繼武教授演講內容,雷鋒網作了不改變原意的編輯
存儲系統成為計算機系統的性能瓶頸
快閃記憶體相對來說比較成熟一點,已經到了應用階段了,從盤到卡到陣列到現在構建分散式的快閃記憶體。內存我們現在用的是DRAM,現在新的器件,特別是一些電子材料的發展,它們有一些好的性能,這個對我們計算機做系統的人應該是一個很大的衝擊,那怎麼把它用上,所以我下面來談一談在這方面的一些研究和挑戰。
這是 IDC 2014年的預測圖,現在 DRAM 的存儲器性能的年增長率是7%,處理器的性能發展能夠達到52%,處理能力與存儲性能差距年平均增長50%,存儲系統成為計算機系統的性能瓶頸。
這個瓶頸使得新器件的產生。新器件的硬體變化了,軟體也要做一些變化。我個人認為應該是一個顛覆性的需求。現在我們大數據、雲存儲、雲計算等很多應用的並發的發展,怎麼構建一個存儲系統成為新的需求。另外一個就是新器件的發展怎麼能夠使得我們構建系統的時候把它的優點發揮出來。這是我們構建存儲系統要考慮的兩個問題:對上我們怎麼能夠滿足一些新的需求,對下我們要怎麼樣把它的特點給發揮出來。
新型非易失固態存儲器件的優點我想簡單地說一下,低功耗,這是一個。另外一個是它的高可靠、抗振動,掉電保護等等。
另外一個特點是潛在的高性能,為什麼說潛在的?因為它的性能現在畢竟還不如DRAM,相差一個數量級,這些晶元器件的發展應該來說還是很有優點的。這些優點一旦用到我們的系統當中,對我們的計算機發展還是有很大的變化,特別是克服我們已有的內存弱點和它的步驟,緩解內存性能的等等。
另外的特點是零功耗和集成度高,就是在相同面積的情況下,用DRAM來做的話,可能做到2G、4G,但是如果你用PCM做的話,能夠做到6G、8G,所以它的集成度能夠做到更大,這是它的優勢。
但是它的問題就是性能,這個性能還不均衡,所以這是它的一個挑戰。另外一個就是器件壽命的問題,它的器件包括它在裡面收到的一些其他干擾,都會對性能錯誤和壽命產生影響。
所以,傳統的面向磁碟和DRAM的存儲架構,應該說跟現在這種新的器件嚴重地不匹配,所以說軟體的各個層次都要設計,而這種設計要把它的優點發揮出來,避開這些弱點,這就是我們下面要解決的問題。
我們首先來看一下內存結構的變化,就是DRAM到後面的磁碟,這是2G的結構,那這個2G的結構一掉電就沒了。現在就是沒有外存,我專門構建一個大的內存,這個內存可以是混合的,也可以是不混合的。它是持久性的,所以它的邊界是在這個地方。這個簡單的邊界變化應該還是很大的,傳統文件系統的模式,內存裡面的數據格式,要把它寫到磁碟上,內存的格式要把它變化成外存文件的格式,這裡面涉及到頁的轉換,路徑的問題還有系統調用的開銷等等。但這個完全可以用store訪問內存的方式來訪問這個持久性的內存,所以這是一個變化。
這個紅色的是我們在這個內存的空間管理以及持久性的模型上做的一些工作。
持久性內存編程模型面臨的挑戰
編程模型挑戰性來自於幾個方面:
方面一:軟體介面,怎麼提供一個訪問的介面。介面是要考慮的,以訪問內存的方式訪問NVM。
方面二:指令集,既然是STORE的方式來訪問的話,就要保證它的一致性。
方面三:為了提供一個好的模型介面,肯定要把這些東西暴露給你,讓用戶來用這個東西。雖然現在有NVML,但是還沒有得到廣泛的承認。
另外我要提供一些編程模型,像易用性,要考慮這個編程模型的複雜度,要更安全不容易出錯,所以說在這個內存的編程模型上面,來自於這幾個方面的挑戰。
這裡面要解決的問題就是一致性的問題,裡面所有的操作、數據要很及時地持久化下去,持久化的順序要求對於一致性來說是一個很大的開銷。
為了提高性能,對數據進行重排,這個數據的順序就變化了,在磁碟上不存在這個問題,因為它的一致性沒問題,在這種NVM上一旦出了問題以後,恢復就存在問題了。所以像這種傳統的緩存模式在這種情況下是不適用的。當然為了保證它,可以用傳統的緩存再加上一些指令,像clflush等等指令來強制地做下去,來保證它儘快地得到持久化。
當然這個裡面也存在問題,我們前幾年做過測試,clflush指令的延遲能夠達到100納秒,如果加上mfence指令,延遲將達到250納秒,所以說這個開銷還是很大的。在這個方面就是怎麼在保證一致性的情況下減少開銷的問題。當然後面會提到節省開銷來自於兩個方面,它的開銷來自於順序化、持久化。
這是關於編程模型方面的一些挑戰。那麼內存空間管理的挑戰,首先就是內存管理,當然這裡能夠看得出一個很經典的DRAM結構,或者說加了面向NVM的一個編程模型的結構,這樣可以在這裡面類似於提供這種DRAM的內存的一些訪問介面,像PMack和Pfree這種情況,實際上對這種持久性內存可以做分配和回收。
另外一個就是內存,它可以做持久性內存,也可以不做持久性的內存,我也可以當做普通性的內存來用,那這裡面怎麼來對它做管理,這裡面就存在這幾個方面的挑戰。
挑戰一:NVM的內存分配操作需要考慮一致性,會帶來額外的持久化開銷,軟體延遲更顯突出。如何降低NVM分配器的分配開銷?
挑戰二:如何提供內存容量的擴展性,充分發揮DRAM性能和NVM持久性的優勢。如何設計混合主存的管理和數據分布?
我們現在來看看文件系統方面的一些問題。文件系統方面,跟剛才講的面向FlassSD的文件系統類似,就是說你原來針對的設計是基於SD或者說基於磁碟的,它的軟體開銷20%幾,現在達到90%幾,那這個東西就是軟體一個非常重要的瓶頸。所以軟體必須得做,這點不做好的話,最後將來這個系統的性能都被軟體給吃掉。
傳統的東西,在這個過程當中還需要這些內存和塊的拷貝嗎?到底需要哪些功能塊?還有哪些新增的東西,都是在你這個軟體的系統當中考慮的,否則DDR NVM 94.1%的軟體開銷是降不下來的,或者降得很少。還有一個就是要考慮NVM的耐久性,要考慮這個模型均衡,否則的話會加劇器件的磨損,影響它的壽命。
剛才講的問題以及挑戰,我下面分別講一講這幾個方面的一些相關的研究情況。
新型編程模型
編程模型有幾種:
第一種:提供一個編程介面,這個編程介面比較早的Mnemosyne 。當然他們要求的是一致性應該滿足ACID,就是可靠性裡面的東西。
第二種:一致性的協議就做得更多了,到現在的2017年有了Eurosys、ASPLOS這些文檔來解釋怎麼來節省一致性的開銷。
工業界也做了很多的一些事情,這是英特爾現在還一直在做的,提供非易失性編程庫NVML。這個庫裡面包含了很重要的幾個庫,當然這些庫是建立在一個持久性的庫的基礎上。那麼這個方面的話,它這個是構建在一個PMFS上,基於C當然也提供JAVA。
他這個東西也帶來很多好處、有很多的優點。英特爾也能夠支持一些廠商,所以說這些廠商它裡面CPU的一些指令能夠放進來保證持久化,例如像Cflash、Mface等等這些。
另外他本身就支持C/C++,它不需要提供一些編程的支持。另外相對來講,它的功能對比較全面,這是它的一些優勢。
它面臨的挑戰就是較為複雜的編程介面,一致性編程容易出錯。再一個是性能的問題,尤其在內存分配和事務原子性支持等方面。
剛才我們說編程模型裡面考慮一致性的問題,那一致性的問題考慮就是開銷的問題。開銷來自於哪方面?一個是順序化、一個是持續化。因為你要保證它的順序不亂的話,我要按照順序把它都寫清楚,順序錯了以後,寫進去的東西就帶來一致性的問題。這個順序性往往就是要求你這個東西只有一步步去做。
另外一個持久性,就是說你最後要把它挪到這個NVM上,在開銷上做一些事情,這裡面有幾個事務,這事務是緩存,這是持續性的。如果說按照要求性管理的話,首先這個事務完了以後再把它刷下來,這是很嚴格的一致性的關係,性能肯定高不到什麼地方去。
在這方面做的工作也很多,目前來說大概有這麼幾個緯度。一個是從軟體的角度去做,一個是從硬體的角度去做。另外一個角度就是說怎麼持久化和順序化,因為這來自於兩個方面:順序化的開銷,持續化的開銷。
怎麼把順序化和持久化的開銷減下來,還有就是從軟體和硬體的角度做。
我們來看看它的第一個工作,這個是英特爾2009年做的——在處理器緩存中增加新原語,由硬體保證寫入順序。將程序執行用持久化屏障分成多個執行單元;執行單元內部可以亂序執行、寫合併、執行單元之間有序持久化。
當然這個工作應該來說還是很不錯的一個工作,但它僅僅是順序化,持久化的開銷沒降低,那我們在這裡面也做了一定的工作,怎麼來持久化,怎麼把它亂序,怎麼把開銷降低。那在這個方面當然我們主要有兩個關鍵的技術:
技術一:提交協議,什麼時候來提交,對這個事務的提交狀態做一些延遲,減少提交時刻的等待。
技術二:主要是用固定的格式,來協商這個日誌數據。另外就是怎麼來預測持久化,在這裡面來維護多個版本,跟蹤事務的依賴關係。
這是另外一個工作,按照它的邏輯來講,首先要對它來做一個持久化,這就相當於一個串列的執行。這個工作相當於把沒有關聯的東西並行做。所以說就是把多個無依賴關係的I/O操作也可以並行寫回。相比於epoch Persistency,進一步放鬆順序約束,更降低了它的開銷。
這個是ASPLOS的2016年工作,它主要是利用了英特爾本身的一些指令集,因為在裡面擴展了很多的指令集,像CFLUSHOPT就是按照一定的弱的順序刷出操作。當然這個只是把它刷出來,沒有保證這個東西寫下去。雖然CLWB把它刷出來,而且是它裡面的版本不讓它失效,這樣的話有可能就存在多個版本,這樣使訪問也能夠提高性能。
前面的幾個工作都是基於硬體而且是在緩存這個界面來做的。這個工作相當於是在內存控制器級別來對順序化做一些減弱,或者說不讓他那麼嚴格。事務放在哪個地方,內存是很清楚的,它能夠做的更靈活。所以他在裡面提出了一些寬鬆的、一致性的模型來實現緩存的持續性,能夠在這裡面做到執行和逆執行和持久化,做一些分離,另外一個就是做到用戶的調度。
這是ASPLOS的2017年的工作,相當於在指令集裡面,對持久化和順序化做一個分離,在這裡面增加了一個持久化的Buffer,追蹤更新的數據。
剛才講的是如何降低一致性機制的順序化開銷,下面來談談怎麼來降低持久化的開銷。
降低一致性機制的持久化開銷
持久化的開銷就是需要數據能夠把它及時地寫回持久性的內存中,從硬體的角度需要做的兩個工作如下:
一種方法是通過後備電源等硬體技術提供系統掉電後的數據備份,避免了數據因一致性導致的寫回開銷。另外一個是賓州大學做的,緩存也有非易失的,這樣的話整個系統中沒有易失性的器件,就不存在易失和非易失的邊界,這樣就降低了它的持久化開銷。
從軟體的角度來說,目前主要是基於寫前日誌(WAL)來做好這個事情,為了保證它的一致性,數據要到執行池裡面,然後還要到日誌池裡面,最後再把它寫回等等,這裡面就存在多次刷clflush的命令。因為要保證它的持久化,這樣的話開銷就會很大,剛才講的需要增加250納秒的延遲。
那麼通過持續化的工作,我們提供了內存資料庫裡面的兩個指令,類似steal或no-force的緩存管理。這樣就使得處理的數據少了一次拷貝,通過這個來降低持久化的一些開銷。
當然這裡面我們用了兩個技術:
一個就是相當於是在日誌內來執行XIL,就是通過它的重組日誌,使得沒有提交的數據可以被寫回這個NVM中;
另外一個是對這個模糊邊界做一個輔助的持久化。那麼在這個裡面我們通過這個日誌中的持久化的版本來覆蓋寫一個東西,這樣的話來減少它的持久化開銷。
這是2017年的一個文章,他把這個持久化的過程分為三個階段:第一個是如何把易失的數據寫到易失的log裡面;然後再從易失的log寫到持久性內存裡面;從持久性內存裡面再寫到持久性的data裡面。
通過這三個階段,而且在這個裡面提供不同級別的持久化。盡量地避免undo log或redo log的一些操作,這是他的一個思想,來降低它的去耦合的持久化過程。
Eurosys 2017年的工作是說在這個過程當中要保證它的持久化,數據一要拷貝,而數據的拷貝都是發生在關鍵路徑上。這個工作就是把數據拷貝到後台非同步去做,即把它移出關鍵路徑,這是它的一個思想。所以說Kamino-Tx還是個不錯的方法。而且當然他也有其他的一些方法來保證這個事情,那這樣的話數據拷貝的存儲開銷以及其他的一些開銷也就降低了。
所以剛才講的這個工作就是,在辯證模型下,怎麼提供一個編程結構,給前面來用,那麼這裡面有幾個工作,一個工作是提供一個內存文件系統,這上面導出一個數據結構供上面用,這個上面用存在著問題,所以存在很多的系統調用,這些東西都是保證它的一致性的問題。
一致性的開銷來源於兩個方面:數據怎麼按照數順序把它寫進去,免得數據不一致;到比較的時候,這個數據一定要把它寫回持久性內存中。
所以說這兩方面的開銷怎麼來做,就是剛才講的從硬體的角度、軟體的角度考慮怎麼降低它的持久性,順序性的開銷的問題。
持久性內存空間管理優化
剛才講的編程模型,後面我再講一下持久性內存空間管理方面的事情,主要是要考慮幾個方面
怎麼考慮它的一致性的問題;
另外一個就是混合內存擴展的問題,因為混合內存的數據肯定要利用各方面的優缺點,那麼數據怎麼來判別、怎麼來存放這些東西
最後的目的就是怎麼能夠更高效地發揮它的混合儲存的優勢。
那麼這裡有幾個代表性的工作,2016年的Makalu,PVM,還有Thermostat這是ASPLOS2017年的工作,這三個工作簡單地說一下。
這個工作就是主要是提供一個高性能的內存分配器,在這個過程當中,就會盡量Root一個512的一個集合。所以所有的數據在這裡面寫,都在這個階段後面,都能夠從這個後面能夠訪問得到,這是它的思想。
當然這裡面主要是解決的兩個問題:
第一個,內存分配器的元數據修改;
第二個,需要持久化指針指向分配數據。
所以這是他的思想有四點:
相當於是用了512個ROOT的集合,使得都能夠找到元數據;
另外他通過NVM分配器來簡化了他的元數據設計,降低NVM分配的開銷;
快速的NVM分配器重建;
有效的內存垃圾收集模型。
這個工作(持久化虛擬內存管理)就相當於一個內存的擴展,也就是說這個DRAM可以有它的管理器。那這個持久性的內存,可以把它分為兩半,一部分是做持久性,一部分就是像DRAM一樣來使用。那像這樣的話,管理怎麼來做。所以在這個裡面,傳統的在這方面的話,CPU的緩存和TLB的列表利用率都不高,所以他提出了一種方法,來使得他做了這麼一個事情,實現了高效對象的介面。對於CPU的緩存和他的TLB利用率比較高,而且提供了一個自動擴展,就是我到這個不夠還能夠自動地來擴展它作為一個易失性的緩存。
那麼這是ASPLOS今年的一個新工作,他這個工作就是相當於是怎麼對用戶透明的2MB大頁設計和管理,就是考慮動態的冷熱頁區分技術,這是他的一個思想。
另外就是利用這兩個的優點,就是把不頻繁訪問的數據,放在NVM上。這是一個內存的空間的這麼一個優化的工作。
實際上來說,這上面僅僅是從某一個角度分別去解決,從你這個混合的管理,包括減少它的內存的分配的開銷等等這些角度去做,實際上應該還有一些事情可做。
持久性內存文件系統構建
剛才講的就是這個內存的空間管理的方面的一些現狀和已有的一些研究工作。那麼下面我簡單地說一下,就是內存穩定系統的構建。
應該來說這是一個很重要的事情。
因為傳統的文件系統有很多優點,所以能不能把傳統的系統梳理成一個塊,默認成一個塊的設備,這樣傳統的文件系統無需修改,照樣可以在上面能夠用起來。
它的好處是RAMDISK的形式使得傳統的文件系統快速受益於內存級的數據持久化,相比於外存性能有數量級的提升。
不足之處是軟體層的開銷巨大,無法充分利用持久性存儲介質的優勢。
這是一類,第二類是改造傳統的文件系統。那這個改造當然是要考慮到NVM的一些特點。因為傳統的文件系統是經過時間考慮的,是比較成熟的東西。這個是韓國做的工作,他們這邊做了有三點:
第一點,他在這個VFS上面做了一個輕量級的優化工作,對它的一致性做了一個處理,使得一致性的開銷儘可能低;
第二點,在Cache命令裡面,原來是同步更新,現在變成了非同步更新;
另外在這裡面也做了一個multi-versioning的區域,使得能夠在這裡面做一些非同步的處理。
當然這個工作有一個基本的假設,假設就是這個裡面的,全都是持久性的文件系統。
其實,無論第一種、第二種方式還都是遠遠不夠的。
那麼最理想化的就是,完全針對一個持久性的NVM,來設計一個位元組粒度的文件系統,在這方面的工作就很多。主要是怎麼來考慮它的這個細粒度的數據訪問,再一個就是把內外存做一個融合管理。
還有NVM本身的一些直寫的東西,可以直接訪問。不像傳統的這種我還要有雙層拷貝,還有塊層的開銷等等,來發揮NVM的一些優勢。
這裡面有幾個代表性的工作,第一個就是微軟的,他們在2009年提出的位元組定址的持久性內存文件系統。再就是英特爾曾經做了一個輕量級的持久化的內存文件系統PMFS等等。
持久性內存存儲系統展望
以上的報告主要講的就是,從編程模型、內存管理到文件系統,這三個方面。 那麼這三個方面,應該來說還有很多的工作來做。我們也做了不少的工作,當然要真正形成一個系統,應該來說還是任重道遠。
這裡我覺得有一些東西可以值得去討論和展望。
一、存儲結構的創新與優化方面,存在幾個問題:
如何在現有的存儲層次結構中選用合適的存儲器件、設計相應的管理方式?
以及如何優化或變革現有存儲層次,包括多級持久化存儲的設計?
同時,如何協同非易失性存儲與多核處理器的機制設計?
二、精細化軟體系統設計
持久性存儲硬體性能相比傳統磁碟存儲的性能提升極大。存儲系統中相應的軟體開銷顯得尤為突出。所以針對軟體的系統優化,採用軟硬體結合設計以及細粒度精細化軟體設計,將是未來存儲系統的研究方向之一。
三、新型分散式系統構建
新型高速存儲硬體和高速網路硬體動搖了傳統分散式系統中存儲與通信的條件假設,且這些硬體均提供了新的訪問特性和訪問模式。
例如結合RDMA與NVM訪問方式可以構建高效的分散式存儲系統。新型分散式存儲系統的構建需要重新思考分散式存儲協議的設計。


※勁爆!實測目前最火的人臉識別技術
※Kaggle求生:亞馬遜熱帶雨林篇
※ACL 正會在即,哪兩位重量級嘉賓將出席做主題演講?
TAG:雷鋒網 |
※詳解Dell EMC發布的PowerMax存儲和R系列計算系統
※AI和機器學習運算 儲存系統需「給力」
※日系輕MOBA《COMPASS 戰鬥天賦解析系統》開測
※是時候把分散式存儲系統的理論指導從CAP轉到PACELC
※WiMAX、LTE和WLAN技術對軍用寬頻無線通信系統的適用性研究
※OFDM系統自適應同步研究與DSP實現
※基於LabVIEW的PEMFC單電池電壓巡檢系統設計
※CAP@NTU 大規模圖計算系統研究進展
※智能製造的鑰匙——CatMDC系統簡介
※捷豹I-PACE搭載「智能設置系統」
※SPARC系統在基於GaN的塊體和納米結構LED研究中的應用
※HashCache:低內存緩存存儲系統
※CAE模擬技術在空調系統設計中的應用
※分散式存儲系統中DHT演算法改進
※ELMIA系統配置需求一覽
※開放系統的直連附加存儲——DAS
※3V3 MOBA手游 《#COMPASS 戰鬥天賦解析系統》英雄必殺技能
※nOS ICO評測——NEO的虛擬操作系統
※傳統EHR容易幫倒忙?梅奧診所採用AWARE智能決策系統解決ICU難題
※基於科室管控的院內智慧物流HPD系統的設計與實現