資料中心與雲端網路

RDMA(遠端直接記憶體存取)

/ AR-dee-em-AY /

通常,把資料從一台電腦送到另一台,像是把紙條經過一長串辦公室職員傳遞:你的應用程式把它交給作業系統,作業系統複製它、包上標頭、交給網路卡,到了另一端整條鏈又反向跑一遍——每一次交接都花 CPU 時間、也增加延遲。RDMA(遠端直接記憶體存取)則像是裝了一根氣動管,從你的抽屜直通到建築對面同事的抽屜:資料從一台機器的記憶體直接進到另一台的記憶體,途中完全不打擾任一台電腦的 CPU 或作業系統。

具體來說,RDMA 讓一台伺服器上的網路卡能直接讀取或寫入另一台伺服器記憶體中的某個區域,繞過遠端 CPU 與一般的核心網路堆疊,並避開該堆疊平常會做的資料複製。應用程式只設定一次傳輸(註冊記憶體區域、貼出工作請求),其餘由網路卡用硬體完成。在資料中心跑 RDMA 的兩種主要方式是 InfiniBand(一種獨立、為此打造的網路技術)與 RoCE(RDMA over Converged Ethernet,唸作「rocky」),後者把 RDMA 承載在普通乙太網路上,讓營運者能重用既有的 IP 結構。回報相當驚人:延遲僅數微秒、傳輸量極高,而 CPU 幾乎不參與,因為主機處理器從逐位元組搬運中被解放出來。

為什麼重要:RDMA 是最在意延遲的資料中心工作負載的骨幹——分散式儲存、高效能運算,尤其是大規模機器學習訓練,那裡數千顆 GPU 必須不斷交換資料,任何 CPU 負擔或多出來的一微秒都會被整個叢集放大。誠實的提醒很實在:RDMA 生於 InfiniBand 那受嚴格控制、本質上無損的結構,所以把它跑在乙太網路上(RoCE)傳統上要求一個近乎無損的網路、使用優先權流量控制(Priority Flow Control),這既脆弱、又可能在設定錯誤時造成死結與壅塞擴散。讓 RDMA 在會丟封包的乙太網路上大規模地表現良好,是個進行中的工程難題,也是資料中心投資 SmartNIC、謹慎壅塞控制與可程式化結構的主要原因之一。

在分散式訓練時,GPU 伺服器 A 需要一個位於 GPU 伺服器 B 記憶體中的張量。有了 RDMA,B 的網路卡在幾微秒內把這些位元組直接寫進 A 預先註冊好的記憶體區域,而兩台伺服器的 CPU 都不被打斷去複製或處理資料——讓那些核心空出來做真正的運算。

繞過兩台 CPU 的記憶體對記憶體傳輸。

RDMA 的巨大加速來自繞過 CPU 與核心,但那假設了一個近乎無損的網路。傳統 RoCE 仰賴優先權流量控制來避免遺失,這很脆弱:設定錯誤可能造成壅塞擴散、甚至死結,所以大規模的 RDMA 遠非隨插即用。

又称
Remote Direct Memory AccessRoCEInfiniBand遠端直接記憶體存取