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