您當前的位置:首頁 > 收藏

西數黑科技:把SSD當記憶體用

作者:由 奉孝翼德 發表于 收藏時間:2018-12-08

西部資料最近推出了一種把SSD變成虛擬記憶體的黑科技,用來替代DRAM,這就是Ultrastar DC ME200,這與英特爾傲騰持久記憶體技術有異曲同工之處。

一個使用NAND SSD,一個是用3D Xpoint SSD,都拿來做記憶體。

先來看看西數的黑科技

Ultrastar DC ME200是一款基於Ultrastar SN200 SSD改進的SSD,採用的是15nm MLC NAND,用的時候也需要軟體協助,來組成這套黑科技系統。

這套技術提供一套類似於記憶體管理單元(MMU)的功能,而且將SSD和DRAM虛擬化成一個虛擬記憶體池。

西數黑科技:把SSD當記憶體用

Ultastar_DC_ME200,既有2。5寸U。2盤,也有半高半長的卡

記憶體管理單元(MMU)是幹什麼的呢?

記憶體管理單元有時也稱作分頁記憶體管理單元(英語:paged memory management unit,縮寫為PMMU)。它是一種負責處理中央處理器(CPU)的記憶體訪問請求的計算機硬體。它的功能包括虛擬地址到物理地址的轉換(即虛擬記憶體管理)、記憶體保護、中央處理器快取記憶體的控制,在較為簡單的計算機體系結構中,負責匯流排的仲裁以及儲存體切換。

簡單而言,MMU就是將虛擬記憶體地址轉換到物理記憶體地址,虛擬地址空間比實際可用的DRAM要大,所需的塊(block)和頁(page)資料從SSD或者磁碟傳到記憶體裡。

所以,相比之下,當請求的資料恰巧在DRAM裡的話,CPU很快拿到資料,延遲會低一點,西數軟體實現的MMU能被用來擴充套件DRAM記憶體。

Ultrastar DC ME200對應的軟體非常底層,在裸金屬之上的hypervisor層,無需應用軟體做任何修改就能用到虛擬記憶體池。

在西數虛擬記憶體技術的幫助下,應用程式在虛擬記憶體中執行,這比單單用DRAM記憶體,從SSD或者磁碟中讀取資料效果要好的多。透過比較好的預測演算法,可以得到近似於DRAM的效能表現。

比如:

跑在DRAM下的Memcached的效能與(4-8倍於DRAM容量的)ME200擴充套件記憶體的效能相當(相當於前者的85%-91%);

跑在DRAM下的Redis資料庫的效能與(4倍於DRAM容量的)的擴充套件記憶體的效能相當(相當於前者的86%-94%);

跑在DRAM下的MySQL的效能與(4-8倍於DRAM容量的)擴充套件記憶體效能相當(相當於前者的93%);

西部資料的一位專家表示,用了ME200之後,1U或者2U的伺服器能將記憶體從原來的1。5TB擴充套件到12TB(DRAM+NAND),記憶體容量相當於原來的8U伺服器。實際情況可能會因人而異,不過,DRAM和NAND 1:8的配比應該還不錯。

西數的這一產品叫ME200,其中ME是Memory Expansion的縮寫,ME200的容量有三個規格1TiB,2TiB和4TiB。(注意記憶體裡計算的是TiB不是TB,1TB大約等於953GiB)

西數虛擬記憶體 vs. 英特爾傲騰持久記憶體

說到這裡實在忍不住想說,西數的這個黑科技做的事兒跟英特爾傲騰太像了,西數的ME200的目標應用是Redis,Memcached,Apache Spark以及一些大規模的資料庫等等佔記憶體的應用。

西數表示,與傲騰相比,西數的產品的容量比基於3D Xpoint的傲騰要高三倍。西數的這位專家表示,還沒有看到傲騰特別明顯的效能優勢。

中立觀點

有第三方分析人士指出,西數的新技術是否會取得市場上的成功還有待觀察。並且指出兩大關鍵點:一個是軟體的整合程度,在實際應用中可能會帶來的複雜性和可用性問題,另一個則是阿姆達爾定律(阿姆達爾定律指的是系統一個部分最佳化之後獲得的效能提升的效果,如果系統某部分的效能沒有提升,則主要受制於系統沒改進的部分)。

前者是所有系統軟體(驅動、補丁之類的)產品都要解決的問題,後者是所有快取產品都面臨的問題。

從技術的角度來看,利用非易失性儲存的密度和經濟性是提升直接記憶體訪問效能的最好的辦法,另外,同時增加每個插槽通道的數量也可改善記憶體的訪問效能。

從市場發展來看,西部資料在NVMe SSD市場的表現已經明顯落後於三星和英特爾,希望用NVMMe SSD來挽回一些局面。

譯者看法

無論是傲騰的持久記憶體儲存還是西數基於ME200的SSD虛擬記憶體技術,都是在NAND SSD(或者說磁碟)和DRAM之間加了一個儲存層,它比DRAM要慢,比SSD NAND(或者說磁碟)要快,將記憶體可能會用到的資料快取到這裡,以供記憶體使用,而不是讓記憶體直接讀SSD(磁碟)裡的資料,以此降低延遲,提升效能,提升記憶體密集型應用的體驗,用相對廉價的SSD替代真正的昂貴的記憶體。

比較有挑戰性的是決定資料放到哪兒的這套演算法。就像作業系統和程式語言的記憶體管理系統一樣,有的程式語言提供了自動化的記憶體處理比如Java,垃圾回收機制決定記憶體什麼時候被回收,而介於記憶體和硬碟之間的這一層決定什麼資料放在記憶體,什麼資料放在兩者之間。

在做法上,這其實跟Linux的swap分割槽,Windows的虛擬記憶體的定位也有些相似,都是因為記憶體不夠用,用硬碟來頂。Linux為了提高讀寫效率,用swap去快取記憶體中放不下的資料,Windows也是類似的道理,這一部分就是swap區。

不得不說,實現原理上無論是西數的黑科技還是英特爾的傲騰,都有幾分類似,英特爾的持久記憶體儲存插在記憶體條上的,西數的實現則是走NVMe協議,英特爾基於獨有(美光也有類似)的3D Xpoint技術的實現對原有硬體架構的顛覆性更大,相對而言,西數的實現更平滑,基於MLC的實現總歸比DRAM要便宜。

從實現路徑來看,一個在SSD側下手,一個在記憶體槽側下手,殊途同歸,究竟是處理器霸主能獲得更多支援,還是硬碟巨頭能建立生態呢?抑或兩者共存?

其實,相對而言,西數的實現更容易獲得支援,沒有門檻和壁壘,相比之下,英特爾自成一派的做法能否成功還有待觀察。

標簽: 記憶體  DRAM  SSD  西數  虛擬記憶體