本發(fā)明涉及分布式計算平臺技術(shù)領(lǐng)域,具體地,涉及基于硬件特性的分布式共享內(nèi)存方法及系統(tǒng)。
背景技術(shù):
在大數(shù)據(jù)計算領(lǐng)域,計算應用運行在由許多服務器或工作站構(gòu)成的集群上或者數(shù)據(jù)中心里,共享內(nèi)存技術(shù)是構(gòu)成這些計算應用的下層基礎(chǔ)框架的技術(shù)之一。共享內(nèi)存技術(shù)為上層的應用提供一種統(tǒng)一的地址空間的抽象,使得運行在不同硬件單元上的計算任務可以用統(tǒng)一的尋址方式訪問本地內(nèi)存的內(nèi)容以及遠程硬件單元上的內(nèi)存內(nèi)容。單機共享內(nèi)存方案已經(jīng)廣泛應用于多核處理器中;分布式共享內(nèi)存也已被應用于分布式鍵值存儲系統(tǒng)、分布式事務處理系統(tǒng)等應用場景中。
早期的分布式共享內(nèi)存技術(shù)是建立在傳統(tǒng)的慢速網(wǎng)絡之上的,例如目前廣泛應用的以太網(wǎng)。早期的分布式共享內(nèi)存技術(shù)主要目標是解決共享內(nèi)存一致性問題,即保證多臺機器同時對共享數(shù)據(jù)的讀取和修改操作能最終得到正確的結(jié)果,就好像只有一個人在執(zhí)行計算任務一樣。這些技術(shù)讓程序員可以像在單機上編程一樣編寫運行在分布式系統(tǒng)上的應用。早期分布式共享內(nèi)存技術(shù)的主要缺點是完全使用軟件來維護共享內(nèi)存一致性,而維護的開銷很大,導致使用這種技術(shù)的分布式計算性能差、運行時間長。
近年來,隨著支持遠程直接內(nèi)存訪問(RDMA)技術(shù)的高速網(wǎng)絡的逐漸普及,分布式共享內(nèi)存技術(shù)又出現(xiàn)了新的設(shè)計。支持遠程直接內(nèi)存訪問的高速網(wǎng)絡不僅僅降低了網(wǎng)絡傳輸?shù)难舆t,更加提供了高效的用戶態(tài)接口使應用程序能繞過內(nèi)核直接使用網(wǎng)絡,進一步降低了延遲。基于遠程直接內(nèi)存訪問技術(shù)的分布式共享內(nèi)存技術(shù),將高速網(wǎng)絡提供的收發(fā)消息機制提供給計算任務。處于應用層的計算任務使用這種消息機制直接讀取或者修改遠程機器上的內(nèi)存,但是并不維護嚴格的共享內(nèi)存一致性,而是代之以事務處理一致性的接口。這種分布式共享內(nèi)存技術(shù)的優(yōu)點是降低了維護一致性的開銷,但是程序員需要面向特定的軟件接口編程,降低了程序的表達力和自由度。
綜上所述,現(xiàn)有的分布式共享內(nèi)存技術(shù)或者無法利用現(xiàn)有的高速網(wǎng)絡,或者增加了編程接口的復雜性,限制了應用程序的自由度。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)中的缺陷,本發(fā)明的目的是提供一種基于硬件特性的分布式共享內(nèi)存方法。
根據(jù)本發(fā)明提供的基于硬件特性的分布式共享內(nèi)存方法,包括如下步驟:
控制遠端程序訪問內(nèi)存權(quán)限步驟:使用單邊RDMA讀操作和寫操作繞過遠端處理器讀取和修改遠端進程的頁表項;
內(nèi)存共享步驟:實現(xiàn)不同多核處理器之間的層級化內(nèi)存共享;
線程同步操作步驟:使用原子RDMA操作實現(xiàn)線程同步操作。
優(yōu)選地,所述控制遠端程序訪問內(nèi)存權(quán)限步驟中的單邊RDMA操作是一種由RDMA網(wǎng)卡提供的底層接口,能夠在不占用遠程CPU資源的情況下讀取或者修改遠程內(nèi)存的內(nèi)容。
優(yōu)選地,所述內(nèi)存共享步驟中同一臺機器上的CPU核心通過本機的緩存一致性實現(xiàn)共享內(nèi)存,位于不同的機器上的CPU核心之間通過一個通信協(xié)議實現(xiàn)分布式共享內(nèi)存。
優(yōu)選地,所述線程同步操作步驟實現(xiàn)的線程同步操作包括:使用RDMA原子操作實現(xiàn)鎖操作,并使用RDMA消息傳遞機制實現(xiàn)條件變量。
根據(jù)本發(fā)明提供的基于硬件特性的分布式共享內(nèi)存系統(tǒng),應用上述的基于硬件特性的分布式共享內(nèi)存方法,包括多臺相連的多核處理器,所述多核處理器中包括多個核心,多臺相連的多核處理器之間通過一個通訊協(xié)議實現(xiàn)分布式共享內(nèi)存;同一多核處理器的多個核心通過本地緩存一致性協(xié)議實現(xiàn)共享內(nèi)存;位于不同機器上的多核處理器之間使用RDMA原子操作實現(xiàn)線程同步。
優(yōu)選地,所述多核處理器通過內(nèi)存總線讀寫本地內(nèi)存,并通過PCI-E總線訪問支持RDMA功能的網(wǎng)卡,該網(wǎng)卡通過DMA直接讀取和修改本地內(nèi)存,同時與其余服務器連接到同一個RDMA網(wǎng)絡,通過RDMA直接讀取和修改遠端內(nèi)存,實現(xiàn)分布式共享內(nèi)存。
與現(xiàn)有技術(shù)相比,本發(fā)明具有如下的有益效果:
1、本發(fā)明中的方法在不需要遠程機器上的CPU干預的情況下控制遠程機器對內(nèi)存的訪問,降低了CPU占用率,使計算任務運行更高效;
2、本發(fā)明中的方法采用與多核處理器相結(jié)合的層級化共享模式,充分發(fā)揮了多核處理器的伸縮性和分布式系統(tǒng)的伸縮性,最大化整個系統(tǒng)的伸縮性;
3、本發(fā)明中的方法使用RDMA底層的操作來實現(xiàn)同步原語,更加高效,降低了分布式線程同步的開銷。
附圖說明
通過閱讀參照以下附圖對非限制性實施例所作的詳細描述,本發(fā)明的其它特征、目的和優(yōu)點將會變得更明顯:
圖1為應用本發(fā)明中方法的硬件結(jié)構(gòu)原理示意圖;
圖2為本發(fā)明中方法的原理框圖。
具體實施方式
下面結(jié)合具體實施例對本發(fā)明進行詳細說明。以下實施例將有助于本領(lǐng)域的技術(shù)人員進一步理解本發(fā)明,但不以任何形式限制本發(fā)明。應當指出的是,對本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變化和改進。這些都屬于本發(fā)明的保護范圍。
根據(jù)本發(fā)明提供的基于硬件特性的分布式共享內(nèi)存方法,包括如下步驟:
獲取遠端程序訪問權(quán)限步驟:使用單邊RDMA讀操作和寫操作繞過遠端處理器訪問和修改遠端進程的頁表項;
內(nèi)存共享步驟:實現(xiàn)不同多核處理器之間的分布式內(nèi)存共享;
線程同步操作步驟:使用原子RDMA操作實現(xiàn)線程同步操作。
所述內(nèi)存共享步驟中的單邊RDMA操作是一種由RDMA網(wǎng)卡提供的底層接口,能夠在不占用遠程CPU資源的情況下讀取或者修改遠程內(nèi)存的內(nèi)容。
所述內(nèi)存共享步驟中同一臺機器上的CPU核心通過本機的緩存一致性實現(xiàn)共享內(nèi)存,不同的CPU核心之間通過共享一個通信協(xié)議端實現(xiàn)分布式共享內(nèi)存。
所述線程同步操作步驟實現(xiàn)的線程同步操作包括:上鎖,并使用RDMA消息傳遞機制實現(xiàn)條件變量。
如圖1所示,為基于硬件特性的分布式共享內(nèi)存技術(shù)的硬件裝置連接圖。下面以兩臺相連的多核服務器為例,結(jié)合圖2對分布式共享內(nèi)存系統(tǒng)的硬件連接進行詳細描述:
(1)多核處理器由多個處理核心組成,通過本地的緩存一致性協(xié)議實現(xiàn)共享內(nèi)存;
(2)多核處理器通過內(nèi)存總線讀寫內(nèi)存,同時通過PCI-E總線訪問支持RDMA功能的網(wǎng)卡;
(3)RDMA網(wǎng)卡通過DMA直接讀取和修改內(nèi)存,同時通過物理層連接與其余服務器相連,實現(xiàn)分布式共享內(nèi)存。
如圖2所示,為基于硬件特性的分布式共享內(nèi)存技術(shù)的架構(gòu)圖。下面以三臺服務器構(gòu)成的分布式集群為例,結(jié)合圖1對分布式共享內(nèi)存系統(tǒng)的實施步驟進行詳細描述:
(1)每一臺服務器的計算資源為多核處理器的多個核心;
(2)通信協(xié)議端是基于RDMA網(wǎng)卡實現(xiàn)的,維護多臺服務器對同一份數(shù)據(jù)訪問的一致性。
主加載器負責啟動主線程,并發(fā)送命令到副加載器,啟動其余線程。
以上對本發(fā)明的具體實施例進行了描述。需要理解的是,本發(fā)明并不局限于上述特定實施方式,本領(lǐng)域技術(shù)人員可以在權(quán)利要求的范圍內(nèi)做出各種變化或修改,這并不影響本發(fā)明的實質(zhì)內(nèi)容。在不沖突的情況下,本申請的實施例和實施例中的特征可以任意相互組合。