先來看看西數(shù)的黑科技
Ultrastar DC ME200是一款基于Ultrastar SN200 SSD改進(jìn)的SSD,采用的是15nm MLC NAND,用的時(shí)候也需要軟件協(xié)助,來組成這套黑科技系統(tǒng)。
這套技術(shù)提供一套類似于內(nèi)存管理單元(MMU)的功能,而且將SSD和DRAM虛擬化成一個(gè)虛擬內(nèi)存池。
Ultastar_DC_ME200,既有2.5寸U.2盤,也有半高半長的卡
內(nèi)存管理單元(MMU)是干什么的呢?
內(nèi)存管理單元有時(shí)也稱作分頁內(nèi)存管理單元(英語:paged memory management unit,縮寫為PMMU)。它是一種負(fù)責(zé)處理中央處理器(CPU)的內(nèi)存訪問請(qǐng)求的計(jì)算機(jī)硬件。它的功能包括虛擬地址到物理地址的轉(zhuǎn)換(即虛擬內(nèi)存管理)、內(nèi)存保護(hù)、中央處理器高速緩存的控制,在較為簡單的計(jì)算機(jī)體系結(jié)構(gòu)中,負(fù)責(zé)總線的仲裁以及存儲(chǔ)體切換。
簡單而言,MMU就是將虛擬內(nèi)存地址轉(zhuǎn)換到物理內(nèi)存地址,虛擬地址空間比實(shí)際可用的DRAM要大,所需的塊(block)和頁(page)數(shù)據(jù)從SSD或者磁盤傳到內(nèi)存里。
所以,相比之下,當(dāng)請(qǐng)求的數(shù)據(jù)恰巧在DRAM里的話,CPU很快拿到數(shù)據(jù),延遲會(huì)低一點(diǎn),西數(shù)軟件實(shí)現(xiàn)的MMU能被用來擴(kuò)展DRAM內(nèi)存。
Ultrastar DC ME200對(duì)應(yīng)的軟件非常底層,在裸金屬之上的hypervisor層,無需應(yīng)用軟件做任何修改就能用到虛擬內(nèi)存池。
在西數(shù)虛擬內(nèi)存技術(shù)的幫助下,應(yīng)用程序在虛擬內(nèi)存中執(zhí)行,這比單單用DRAM內(nèi)存,從SSD或者磁盤中讀取數(shù)據(jù)效果要好的多。通過比較好的預(yù)測(cè)算法,可以得到近似于DRAM的性能表現(xiàn)。
比如:
跑在DRAM下的Memcached的性能與(4-8倍于DRAM容量的)ME200擴(kuò)展內(nèi)存的性能相當(dāng)(相當(dāng)于前者的85%-91%);
跑在DRAM下的Redis數(shù)據(jù)庫的性能與(4倍于DRAM容量的)的擴(kuò)展內(nèi)存的性能相當(dāng)(相當(dāng)于前者的86%-94%);
跑在DRAM下的MySQL的性能與(4-8倍于DRAM容量的)擴(kuò)展內(nèi)存性能相當(dāng)(相當(dāng)于前者的93%);
西部數(shù)據(jù)的一位專家表示,用了ME200之后,1U或者2U的服務(wù)器能將內(nèi)存從原來的1.5TB擴(kuò)展到12TB(DRAM+NAND),內(nèi)存容量相當(dāng)于原來的8U服務(wù)器。實(shí)際情況可能會(huì)因人而異,不過,DRAM和NAND 1:8的配比應(yīng)該還不錯(cuò)。
西數(shù)的這一產(chǎn)品叫ME200,其中ME是Memory Expansion的縮寫,ME200的容量有三個(gè)規(guī)格1TiB,2TiB和4TiB。(注意內(nèi)存里計(jì)算的是TiB不是TB,1TB大約等于953GiB)
西數(shù)虛擬內(nèi)存 vs. 英特爾傲騰持久內(nèi)存
說到這里實(shí)在忍不住想說,西數(shù)的這個(gè)黑科技做的事兒跟英特爾傲騰太像了,西數(shù)的ME200的目標(biāo)應(yīng)用是Redis,Memcached,Apache Spark以及一些大規(guī)模的數(shù)據(jù)庫等等占內(nèi)存的應(yīng)用。
西數(shù)表示,與傲騰相比,西數(shù)的產(chǎn)品的容量比基于3D Xpoint的傲騰要高三倍。西數(shù)的這位專家表示,還沒有看到傲騰特別明顯的性能優(yōu)勢(shì)。
中立觀點(diǎn)
有第三方分析人士指出,西數(shù)的新技術(shù)是否會(huì)取得市場上的成功還有待觀察。并且指出兩大關(guān)鍵點(diǎn):一個(gè)是軟件的集成程度,在實(shí)際應(yīng)用中可能會(huì)帶來的復(fù)雜性和可用性問題,另一個(gè)則是阿姆達(dá)爾定律(阿姆達(dá)爾定律指的是系統(tǒng)一個(gè)部分優(yōu)化之后獲得的性能提升的效果,如果系統(tǒng)某部分的性能沒有提升,則主要受制于系統(tǒng)沒改進(jìn)的部分)。
前者是所有系統(tǒng)軟件(驅(qū)動(dòng)、補(bǔ)丁之類的)產(chǎn)品都要解決的問題,后者是所有緩存產(chǎn)品都面臨的問題。
從技術(shù)的角度來看,利用非易失性存儲(chǔ)的密度和經(jīng)濟(jì)性是提升直接內(nèi)存訪問性能的最好的辦法,另外,同時(shí)增加每個(gè)插槽通道的數(shù)量也可改善內(nèi)存的訪問性能。
從市場發(fā)展來看,西部數(shù)據(jù)在NVMe SSD市場的表現(xiàn)已經(jīng)明顯落后于三星和英特爾,希望用NVMMe SSD來挽回一些局面。
譯者看法
無論是傲騰的持久內(nèi)存存儲(chǔ)還是西數(shù)基于ME200的SSD虛擬內(nèi)存技術(shù),都是在NAND SSD(或者說磁盤)和DRAM之間加了一個(gè)存儲(chǔ)層,它比DRAM要慢,比SSD NAND(或者說磁盤)要快,將內(nèi)存可能會(huì)用到的數(shù)據(jù)緩存到這里,以供內(nèi)存使用,而不是讓內(nèi)存直接讀SSD(磁盤)里的數(shù)據(jù),以此降低延遲,提升性能,提升內(nèi)存密集型應(yīng)用的體驗(yàn),用相對(duì)廉價(jià)的SSD替代真正的昂貴的內(nèi)存。
比較有挑戰(zhàn)性的是決定數(shù)據(jù)放到哪兒的這套算法。就像操作系統(tǒng)和編程語言的內(nèi)存管理系統(tǒng)一樣,有的編程語言提供了自動(dòng)化的內(nèi)存處理比如Java,垃圾回收機(jī)制決定內(nèi)存什么時(shí)候被回收,而介于內(nèi)存和硬盤之間的這一層決定什么數(shù)據(jù)放在內(nèi)存,什么數(shù)據(jù)放在兩者之間。
在做法上,這其實(shí)跟Linux的swap分區(qū),Windows的虛擬內(nèi)存的定位也有些相似,都是因?yàn)閮?nèi)存不夠用,用硬盤來頂。Linux為了提高讀寫效率,用swap去緩存內(nèi)存中放不下的數(shù)據(jù),Windows也是類似的道理,這一部分就是swap區(qū)。
不得不說,實(shí)現(xiàn)原理上無論是西數(shù)的黑科技還是英特爾的傲騰,都有幾分類似,英特爾的持久內(nèi)存存儲(chǔ)插在內(nèi)存條上的,西數(shù)的實(shí)現(xiàn)則是走NVMe協(xié)議,英特爾基于獨(dú)有(美光也有類似)的3D Xpoint技術(shù)的實(shí)現(xiàn)對(duì)原有硬件架構(gòu)的顛覆性更大,相對(duì)而言,西數(shù)的實(shí)現(xiàn)更平滑,基于MLC的實(shí)現(xiàn)總歸比DRAM要便宜。
從實(shí)現(xiàn)路徑來看,一個(gè)在SSD側(cè)下手,一個(gè)在內(nèi)存槽側(cè)下手,殊途同歸,究竟是處理器霸主能獲得更多支持,還是硬盤巨頭能建立生態(tài)呢?抑或兩者共存?
其實(shí),相對(duì)而言,西數(shù)的實(shí)現(xiàn)更容易獲得支持,沒有門檻和壁壘,相比之下,英特爾自成一派的做法能否成功還有待觀察。