MemVerge成立于2017年,創(chuàng)立之初就提出了“大內(nèi)存”的技術(shù)愿景,隨后一直致力于基于這種內(nèi)存的虛擬化技術(shù),來設(shè)計一款面向未來的大內(nèi)存管理軟件。

所謂的大內(nèi)存愿景,面向的是各種通用的或者異構(gòu)的內(nèi)存硬件,通過一種內(nèi)存虛擬化軟件技術(shù)對內(nèi)存硬件進行抽象,從而讓上層的應(yīng)用看到主機中有更大容量的內(nèi)存資源。

在傳統(tǒng)的計算機體系結(jié)構(gòu)里面,主機中有CPU、內(nèi)存、磁盤等部件。CPU做計算,內(nèi)存和磁盤保存數(shù)據(jù),內(nèi)存的性能高但容量小,而且缺乏數(shù)據(jù)持久化能力,所以,大量數(shù)據(jù)都存放在磁盤上。

磁盤系統(tǒng)本質(zhì)上是一種主機的外部設(shè)備,它離CPU比較遠,無法很好地釋放CPU的算力,而大內(nèi)存技術(shù)就是要擴展內(nèi)存,讓更多數(shù)據(jù)的訪問和處理發(fā)生在內(nèi)存中,從而來提升應(yīng)用的效率。

大內(nèi)存技術(shù)的三個內(nèi)涵

分解來看,大內(nèi)存技術(shù)主要有三個內(nèi)涵:

第一,讓上層的應(yīng)用能看到更多的內(nèi)存空間。讓應(yīng)用程序有更多數(shù)據(jù)能夠駐留在內(nèi)存資源中,使得數(shù)據(jù)離算力更近,以提高數(shù)據(jù)的處理性能。

第二,讓駐留在大內(nèi)存里的數(shù)據(jù)具備一定的可靠性。磁盤具有持久化,磁盤系統(tǒng)也有數(shù)據(jù)高可靠的方案,如果要讓內(nèi)存中存下更多數(shù)據(jù),也需要讓數(shù)據(jù)具備高可靠的特點,以確保數(shù)據(jù)能正常地恢復(fù)和重構(gòu)。

第三,駐留在大內(nèi)存里面的數(shù)據(jù)需要通過軟件帶來高級的數(shù)據(jù)功能和特性?;诖疟P的存儲系統(tǒng)已經(jīng)有非常多的軟件功能,比如,,快照、克隆、遠程復(fù)制、多機冗余、容災(zāi)等等。

然而,如今的內(nèi)存通常作為緩存來使用,如果讓內(nèi)存的數(shù)據(jù)中也具備高級功能,用戶才會把數(shù)據(jù)長期穩(wěn)定地存放在內(nèi)存系統(tǒng)里。這需要一個軟硬一體的,能存取數(shù)據(jù),具備各種高級數(shù)據(jù)服務(wù)的一個內(nèi)存系統(tǒng)。

在這樣一個系統(tǒng)中,軟件功能是至關(guān)重要的,軟件對于大內(nèi)存的愿景是必不可少的。在這樣的內(nèi)存系統(tǒng)之上,用戶就能夠在更高效,更高性能,更高可靠性,各種優(yōu)化的數(shù)據(jù)能力之上,來存取內(nèi)存中的數(shù)據(jù)。

總的來說,大內(nèi)存技術(shù)的愿景就是,未來各行各業(yè)的數(shù)據(jù)中心里,內(nèi)存作為承載數(shù)據(jù)的主要方案,作為數(shù)據(jù)中心的主存儲,而磁盤將會跟磁帶一樣,用來保存冷數(shù)據(jù)。新的CXL協(xié)議就是實現(xiàn)這種愿景重要的契機。

CXL使得這種大內(nèi)存技術(shù)不僅能在單機上實現(xiàn),還能夠跨異構(gòu)硬件,跨主機節(jié)點,跨網(wǎng)絡(luò)來實現(xiàn),這極大地促進了內(nèi)存資源池化發(fā)展的步伐。

大內(nèi)存的技術(shù)演進

從2019年發(fā)布CXL 1.0開始,MemVerge就在構(gòu)思如何用CXL來研發(fā)大內(nèi)存的軟件產(chǎn)品。

2017年成立之初,MemVerge就跟英特爾合作,基于英特爾傲騰持久內(nèi)存開發(fā)了第一版MemVerge大內(nèi)存軟件Memory Machine,通過內(nèi)存虛擬化將主機中的DRAM內(nèi)存和傲騰的持久內(nèi)存融合,向用戶提供一套軟硬件配合本地內(nèi)存擴展方案。

該方案為用戶提供大量的具備持久化能力的內(nèi)存資源,該版本產(chǎn)品目前正在被國內(nèi)外很多金融、高校、超算、大企業(yè)用戶使用,幫助大量的用戶擴展單機主機內(nèi)存的容量,提高并發(fā)性能,縮短應(yīng)用任務(wù)的運行時間。

從2021年開始到2022年上半年,MemVerge開發(fā)了第二代方案——Memory Machine Cloud Edition,這是一種面向云環(huán)境的大內(nèi)存軟件版本,在本地內(nèi)存擴展的基礎(chǔ)上增加了本地內(nèi)存高可靠的特性。

眾所周知,上層應(yīng)用保存在磁盤中的數(shù)據(jù),往往是一些需要分析或者處理的原始數(shù)據(jù)集,或者是數(shù)據(jù)處理完后得到的結(jié)果。而那些在應(yīng)用程序運行過程中的運行時狀態(tài),都是保存在內(nèi)存空間中的。

對于很多用戶而言,只是確保磁盤里的數(shù)據(jù)不丟已經(jīng)很難滿足對業(yè)務(wù)可靠性的要求了,因為,用戶還有很多需要長時間運行,有狀態(tài)的任務(wù),對運行時的狀態(tài)的保護是非常有必要的,對于提高可靠性非常重要。

MemVerge的大內(nèi)存軟件支持持久化能力,可以為每一個應(yīng)用的運行狀態(tài)進行保護,在主機發(fā)生掉電或者重啟,或者是云主機被搶占的時候,運行時狀態(tài)也不會丟失,在主機正?;蛘哔Y源恢復(fù)后,能進行斷點續(xù)算。

不僅如此,MemVerge的大內(nèi)存軟件甚至可以支持用戶主動地將應(yīng)用狀態(tài)調(diào)到過去某個時間??傊軐?yīng)用的CPU緩存和內(nèi)存中的任何時刻的信息進行保護。

2022年,隨著CXL 3.0標(biāo)準(zhǔn)的發(fā)布,MemVerge的Memory Machine的能力將得到強化,它將向分布式的內(nèi)存資源池進行擴展。

它將使得第一個版本中對本地內(nèi)存擴容的Scale up能力 ,能發(fā)展成一種橫向擴展的Scale out能力 ,從而構(gòu)建出一種邏輯上可遠端共享的內(nèi)存資源池。

它將使得第二版本中的內(nèi)存高可靠的能力,發(fā)展為面向分布式計算集群的,集群一致性的高可靠能力,并且通過本地和遠端的內(nèi)存,去開發(fā)更多的高級的數(shù)據(jù)功能,比如內(nèi)存數(shù)據(jù)流動或者內(nèi)存的數(shù)據(jù)高可用技術(shù)等。

CXL 3.0標(biāo)準(zhǔn)的發(fā)布,使得這一切成為可能。

基于CXL的大內(nèi)存系統(tǒng)有哪些典型應(yīng)用場景?

以下提到的幾個具體的技術(shù)場景和行業(yè)應(yīng)用場景,都基于MemVerge自己或者同行的實踐而來,其中穿插著很多深度調(diào)研工作,意在探究大內(nèi)存技術(shù)對用戶的真正價值。

第一個場景,動態(tài)內(nèi)存擴展

該場景主要是消除孤置的內(nèi)存,所謂孤置的內(nèi)存(Stranded Memory),這個概念源于微軟的一篇論文。

論文里調(diào)研了微軟公有云數(shù)據(jù)中心里上百萬臺服務(wù)器上的內(nèi)存使用狀況,調(diào)查發(fā)現(xiàn),有50%以上的服務(wù)器中,實際使用的內(nèi)存不到一半,有一多半是被浪費了。

根本原因在于,內(nèi)存是在主機內(nèi)部與主機是綁定,通常服務(wù)器都會配置足夠多的內(nèi)存來滿足最高峰值業(yè)務(wù)時的需求,這就使得每個機器的內(nèi)存配置都比偏高。然而,大多數(shù)時間里,服務(wù)器并不是處于高峰狀態(tài),也就不可避免地造成了浪費。

如上圖,第一個機器里正在使用的內(nèi)存大約只有一半,第二個機器里有大約70%的內(nèi)存在使用,第三個利用率只有20%,內(nèi)存空閑的比例還是非常高的??紤]到一臺主機里內(nèi)存成本的占比比較高,其實浪費的資源還挺多的。

有了CXL架構(gòu)后,首先,每臺服務(wù)器配置的內(nèi)存就少了很多,內(nèi)存的浪費會大大減少,當(dāng)內(nèi)存不夠用的時候,可以從外置的CXL內(nèi)存資源池里調(diào)用內(nèi)存資源,這樣一來,既滿足負載高峰的內(nèi)存需求,同時大大減少了內(nèi)存的浪費。

CXL讓多臺服務(wù)器可以共同使用遠端池化的內(nèi)存邏輯資源池,由管理軟件來分配和調(diào)整內(nèi)存的資源。資源池化提高了資源的利用率,CXL的動態(tài)內(nèi)存擴展通過減少孤置的內(nèi)存來提高內(nèi)存資源的利用率,可以降低成本支出。

這對于大規(guī)模的數(shù)據(jù)中心,特別是云服務(wù)廠商非常有吸引力,對于有大量服務(wù)器資源的大型企業(yè),也非常有價值。

第二個場景,內(nèi)存數(shù)據(jù)自愈。

這里指的是內(nèi)存的自動修復(fù),也可以叫內(nèi)存的自愈。

眾所周知,SSD是有寫入壽命限制的,很多人不知道的是,其實內(nèi)存也有壽命限制。當(dāng)內(nèi)存的損耗達到一定程度后,內(nèi)存的器件也會逐漸達到一個容錯極限,此時,內(nèi)存的數(shù)據(jù)錯誤率機率就會變大,最后,內(nèi)存就完全不能再用了。

技術(shù)上可以有一種機制來對內(nèi)存條的健康度進行監(jiān)控,如果一個內(nèi)存的錯誤率上升了,可以用監(jiān)控來發(fā)現(xiàn)問題,當(dāng)它的錯誤率達到一定的閾值就觸發(fā)一系列的管理手段,在遠端的內(nèi)存資源池上找到新的資源來補位。

大內(nèi)存軟件技術(shù)可以無縫地把健康程度不好的內(nèi)存條上的數(shù)據(jù),重新分配到新的資源池里,數(shù)據(jù)遷移完成后,原來不健康的內(nèi)存部件會被標(biāo)記為不健康,同時,系統(tǒng)會報警提示數(shù)據(jù)中心管理員來換成新的內(nèi)存部件。

整個過程中,從監(jiān)控狀態(tài),到遷移數(shù)據(jù),到標(biāo)記和替換不可用內(nèi)存,整個過程應(yīng)用都不需要中斷,整個過程可以在應(yīng)用無感知的情況下完成,這就是所謂的“內(nèi)存自愈”或者叫“內(nèi)存自修復(fù)”。

在這種場景下,大內(nèi)存作為一個備用的資源池,相當(dāng)于磁盤系統(tǒng)里的熱備盤一樣,它作為熱備空間來對健康程度不太好的內(nèi)存進行更換和修復(fù)。

第三個場景,提高大規(guī)模數(shù)據(jù)處理應(yīng)用的效率。

常見的Spark、Hadoop和機器學(xué)習(xí)都需要分布式的數(shù)據(jù)處理框架,框架內(nèi)的各節(jié)點間的數(shù)據(jù)協(xié)作有兩種方式,第一種是通過shared storage來共享,通過共享的存儲系統(tǒng)來進行數(shù)據(jù)的共享和協(xié)作,這種方式比較常見。

第二種采用的是Share nothing架構(gòu),每個機器有自己的本地存儲,沒有共享的存儲空間。但計算過程也是需要數(shù)據(jù)交互的,需要把中間結(jié)果進行交換,交換過程非常耗時,會占用很多運行時間,從而會降低整個系統(tǒng)的性能。

如果能打造一種新的共享內(nèi)存池,讓多臺主機訪問同一個內(nèi)存池的話,就可以大大提高數(shù)據(jù)交換的效率。

以上圖里的Spark集群為例,需要交互的數(shù)據(jù)直接寫到共享的內(nèi)存資源池里,各個節(jié)點可以訪問其他節(jié)點所寫下來的數(shù)據(jù)。由于數(shù)據(jù)交換就發(fā)生在內(nèi)存資源池里面,完全省去了各個節(jié)點之間的數(shù)據(jù)交換,所以,整個進程的速度便大大提升。

共享的內(nèi)存資源池的應(yīng)用場景還有很多。比如,一些大型分布式關(guān)系型數(shù)據(jù)庫也可以通過共享的內(nèi)存資源池來提高大Table的查詢速度,總之,一種基于內(nèi)存資源池的數(shù)據(jù)交換的區(qū)域可以顯著提升系統(tǒng)的運行效率。

垂直行業(yè)的使用場景

根據(jù)過去幾年的實踐,MemVerge的大內(nèi)存方案在垂直行業(yè)內(nèi)也有了一些實際使用案例。

行業(yè)場景一:金融證券領(lǐng)域用大內(nèi)存技術(shù)來推送行情消息數(shù)據(jù)。

眾所周知,證券行業(yè)的IT系統(tǒng)追求極致低時延,消息數(shù)據(jù)的訂閱的技術(shù)描述叫Pub/Sub,這是一個非常典型的低時延場景。

如上圖所示是三臺主機節(jié)點,上方的這臺主機有Publisher進程,它負責(zé)發(fā)送證券行情的消息數(shù)據(jù)。下方兩臺主機有Subscriber進程,負責(zé)接收Publisher發(fā)布的消息,每臺主機都有負責(zé)處理和響應(yīng)數(shù)據(jù)的Consumer的進程。

這套系統(tǒng)的關(guān)鍵指標(biāo)是時延,指的是從發(fā)送到處理完數(shù)據(jù)耗費的時間,時間越短,證券交易系統(tǒng)對于行情變化的反應(yīng)速度越快,就能搶先一步來進行交易,如果誰能讓消息更快地處理,誰就得到更大價值。

通常,時延都不高于10個微秒,都是通過RDMA進行交互,隨著CXL大內(nèi)存系統(tǒng)的出現(xiàn),它可以用大內(nèi)存資源池來進一步壓縮延遲,讓跨節(jié)點的消息數(shù)據(jù)的交互通過CXL協(xié)議來完成。

目前,MemVerge已經(jīng)在跟一些證券公司和交易所進行一些探索,在接觸中發(fā)現(xiàn),這些企業(yè)經(jīng)常有非常多的異構(gòu)硬件,在異構(gòu)計算環(huán)境里,CXL的協(xié)議也能發(fā)揮很大價值,它能縮小異構(gòu)計算平臺之間的數(shù)據(jù)交互時延,能發(fā)揮較大價值。

第二個場景是在高性能計算領(lǐng)域。

大致原理跟剛才提到的Spark場景原理一樣,通過一些共享的內(nèi)存資源池來支持HPC計算節(jié)點的數(shù)據(jù)交互,替代傳統(tǒng)的共享存儲解決方案,使得數(shù)據(jù)處理效率實現(xiàn)指數(shù)級的提高

MemVerge了解到,高校、研究所、實驗室、生物醫(yī)藥、基因測序的企業(yè)都需要大內(nèi)存資源池:

HPC經(jīng)常會有一些配置很高的胖節(jié)點,胖節(jié)點的成本很高,但是內(nèi)存和CPU的利用率不一定高,因此會造成較大浪費。

CXL技術(shù)配合CXL軟件能用分布式的手段,用普通節(jié)點來替代胖節(jié)點,以此來節(jié)省集群成本,并提高內(nèi)存資源的利用率,從而節(jié)省成本。

此外,HPC場景還有很多需要單機運行的工作負載,由于是單機運行,所以需要配置較大內(nèi)存,CXL技術(shù)能讓服務(wù)器使用遠端節(jié)點的共享內(nèi)存資源,也能達到降低成本的效果。

在需要大量數(shù)據(jù)交互的HPC場景中,CXL大內(nèi)存軟件方案支持在內(nèi)存中進行高效,低時延的數(shù)據(jù)交互,能為HPC用戶帶來一些性能和效率的提升。

MemVerge總結(jié)了大內(nèi)存軟件所需要的能力,其中,最基礎(chǔ)的就是內(nèi)存共享,通過大內(nèi)存軟件,能夠讓每個主機在應(yīng)用層面,能夠看到其他主機或者其他硬件的內(nèi)存資源,并能對這些資源進行訪問。

大內(nèi)存軟件使得任何應(yīng)用都能夠看到并訪問到遠端主機內(nèi)存資源,并且這種本地內(nèi)存和遠端內(nèi)存在應(yīng)用層面是完全透明的。這就是所謂的Trasparent Memory Service,透明的內(nèi)存服務(wù)。

值得一提的是,上層應(yīng)用程序?qū)τ诖髢?nèi)存軟件是沒有感知的,應(yīng)用程序不需要做出任何改變。大內(nèi)存軟件本身會對本地內(nèi)存和遠端內(nèi)存進行感知和調(diào)度管理。

除了基本的管理功能,大內(nèi)存軟件還在增加數(shù)據(jù)管理軟件特性,包括基于內(nèi)存池的數(shù)據(jù)保護,高可用、數(shù)據(jù)安全、數(shù)據(jù)快照、克隆、內(nèi)存復(fù)制等功能。

在生態(tài)方面,MemVerge的大內(nèi)存軟件可以和現(xiàn)有的一些主流的任務(wù)調(diào)度和編排軟件,以及一些資源管理平臺兼容,能夠更快速地融合到用戶的生產(chǎn)線里。

以上提到的多種能力已在MemVerge現(xiàn)有的產(chǎn)品中得以實現(xiàn),Memory Machine和Memory Viewer這兩個產(chǎn)品在單機層面上提供上述場景中的需求,下一階段,產(chǎn)品將支持更多硬件,將大內(nèi)存的能力擴展到遠端內(nèi)存池里。

MemVerge的第一個產(chǎn)品叫Memory Machine,早期作為本地大內(nèi)存軟件,支持用DRAM以及英特爾傲騰來構(gòu)建大內(nèi)存資源池,支持動態(tài)的內(nèi)存分級服務(wù),也提供應(yīng)用的內(nèi)存快照的服務(wù)。

第二個產(chǎn)品是Memory Viewer,它也是一個軟件,它可以對本地的內(nèi)存進行監(jiān)控和管理,比如,可以看到本地有多少內(nèi)存,通過CXL連接的有哪些內(nèi)存,內(nèi)存的健康程度、性能狀況如何,還能看到遠程的池化內(nèi)存的容量概況。

CXL的性能表現(xiàn)如何?

目前,MemVerge已經(jīng)和很多CXL生態(tài)內(nèi)的硬件廠商進行了許多技術(shù)對接,上圖展示的是CXL版本的Memory Machine的架構(gòu)圖,架構(gòu)中采用了瀾起科技的CXL內(nèi)存擴展卡,在套系統(tǒng)上跑一些MLC或者Streams測試后,能了解備受關(guān)注的性能的情況。

測試系統(tǒng)測試的是大內(nèi)存軟件管理之下的本地DRAM,還有經(jīng)過瀾起CXL擴展卡的遠端內(nèi)存,以及兩者混合場景的性能狀況。

上圖可見,在MLC和Stream這兩種測試場景中,傳統(tǒng)DDR5內(nèi)存和使用外置CXL擴展內(nèi)存的性能表現(xiàn)整體差異不大,甚至部分場景中,CXL擴展內(nèi)存還有反超前者的現(xiàn)象,這證明了CXL硬件的性能優(yōu)勢。

另外,在混用DDR和CXL大內(nèi)存的情況下,其性能表現(xiàn)大多明顯強于前兩者,這展示的是本地和遠端內(nèi)存間的動態(tài)調(diào)度能力 ,意味著它可以為整體的性能帶來更多的優(yōu)化跟提升。

CXL的生態(tài)

MemVerge跟包括瀾起科技在內(nèi)的合作伙伴一起合作開發(fā)產(chǎn)品技術(shù),一方面,MemVerge會繼續(xù)研發(fā)Memory Machine和Memory Viewer的功能特性,同時,也會合作開發(fā)基于CXL的Pool Manager,F(xiàn)abric manager等內(nèi)存管理系統(tǒng)中的關(guān)鍵組件。

CXL正在成為一個非?;钴S的生態(tài),多個巨頭都陸續(xù)加入其中,MemVerge的定位是軟件提供商,希望能共同把CXL系統(tǒng)從無到有地打造出來,打造出一種獨立的,可以組裝的,池化的內(nèi)存系統(tǒng),把它變成一個新的百億級,甚至千億美金的新市場。

分享到

zhupb

相關(guān)推薦