持久記憶體-RDMA讓遠端資料不再遠

yzs87發表於2020-11-01

持久記憶體-RDMA讓遠端資料不再遠

第一屆「中國雲端計算基礎架構開發者大會」(以下簡稱 CID )將在 2020 10 25 日舉辦 。會中看到有新硬體PM 結合 RDMA 的議題,這是資料庫方面前沿技術,對下一代資料庫發展有重要影響。聽後進行總結。

正文

 

包括以下幾個議題:PRMEM 是什麼、技術細節、效能、使用場景及開發的庫。

1、什麼是PMEM

 

SSD 已經結合了 RDMA 技術,需要客戶端將資料從 DRAM 通過 PCIe 拷貝到網路卡,傳輸到服務端網路卡再拷貝到 DRAM ,最後通過 PCIe 持久化到 SSD 。具有額外的資料 copy 。結合 PM 新硬體,可以消除這部分的影響。

資料從客戶端到網路卡後,通過RDMA 網路直接到對端的網路卡,然後直接到 PM 。消除了經過 DRAM 的拷貝流程以及 CPU 的參與,解放出來服務端的 CPU ,進行其他操作。

2、技術細節

 

標準的RDMA 資料流路徑為:資料經過 L3 cache->RNIC 在通過 RDMA 網路 -> 遠端的 RNIC->L3 cache-> 持久裝置。

問題:資料的視覺化和持久化

 

資料對CPU 可視,不是對人。資料到達 L3 cache 及以上才能對 CPU 可視,但是並不是持久化到遠端,當機會丟失資料。 ADR Intel 的非同步自重新整理技術,使用這個技術的話,當資料達到 memory controller 這個點後就已經持久化到 PM ,否則需要到達 NVM controller 刷寫到 PM 點才算持久化。

 

資料到遠端的RDMA 網路卡後,並不能確定資料是在 RNIC 網路卡 buffer 還是 PCIEbuffer 還是已經到持久化裝置裡面。需要額外的步驟來保證資料持久化。

Intel DDIO 技術,提高整體吞吐率,降低延遲,減小能源消耗,讓伺服器更快處理網路介面資料,只能保證資料對 CPU 可見。 DDIO 下資料放到 L3 cache 裡,避免經過記憶體的拷貝,減小延遲。有兩個方案保證永續性。

 

DDIO 開啟:主要是遠端執行 CLWB 指令刷完 cache lines 後呼叫 sfence 指令,確保資料全部到持久化記憶體。

 

DDIO 關閉時:資料不經過遠端的 L3 cache ,需要加個 read 指令,來確保資料都到持久記憶體。

3、效能

 

RDMA 已經比 TCP/IP 快了近 30% rpmem 6.8 微秒,延遲大大降低

 

紅色表示CPU 參與,該技術沒有 CPU 參與。網路和硬碟的延遲都大大降低。

 

Rpmem 的延遲在平均 4kb 的寫進行復制場景下,延遲小於 10us

4、案例

 

計算節點和儲存節點分離,與之前的X8 代相比,該一體機使用 RDMA 訪問 PM 能夠獲得快 10 倍的事務處理延遲及 2.5 倍的事務 IOS

 

OLTP 資料庫複製場景下的高延遲問題。

 

因為PM 是持久的,所以相比 DRAM 來說可以直接反饋 master 可以提交,然後 slave 非同步進行回放。

 

AI 方面。

6、額外步驟保證資料到持久記憶體

 

Intel 開發的 librma 可方便進行程式設計。相比 librpmem ,軟體層次更少,簡化軟體系統複雜度,更注重 API 的應用程度,方便工程師使用更少程式碼實現相同功能。

 

Librma 使用 push transfer 模型,大大減小 RDMA 複製的操作, RDMA flush 後,由硬體完成資料持久化到 PM 。同時不需要 CPU 參與,降低了延遲。

Librma github 上下載。持久化記憶體程式設計的書籍《 programming persistent memory 》年底完成中文版翻譯,期待完成後開源。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31493717/viewspace-2731431/,如需轉載,請註明出處,否則將追究法律責任。

相關文章