當前位置:
首頁 > 科技 > RDMA高性能網路的優勢和實踐

RDMA高性能網路的優勢和實踐

隨著數據的爆炸式增長,各個領域對計算機硬體的處理能力有了更高的要求。相比於CPU和GPU等計算設備的快速發展,傳統的乙太網領域發展明顯滯後並逐漸成為性能瓶頸。大量產品線都希望改善網路性能,通過使用更高帶寬,更低延遲的網路來提升業務能力。

對於奮戰在一線的我廠攻城師來說,常常會有這樣的感受:為什麼發送數據要花這麼長時間?為什麼計算能力這麼牛的伺服器老是要長時間等待網路傳輸完成?為什麼網路能明目張胆的拖後腿?

分分鐘想換掉它有木有?

本文將帶來RDMA高性能網路,分析性能優勢,介紹在機器學習領域的成功實踐,以及下一步的展望。說明:本文主要闡述RDMA技術產生的背景和應用場景、案例,關於RDMA深度技術原理,請參看「詳解RDMA(遠程直接內存訪問)架構原理」文章。

什麼是RDMA高性能網路

提到計算機網路,相信大家的腦海中馬上會浮現OSI七層模型,HTTP、TCP和IP這些關鍵字。但是本文中描述的是另外一種網路:RDMA (Remote Direct Memory Access)

首先介紹DMA,作為主機內存和外部設備之間傳輸數據的一種方式,系統將內存做完虛擬地址和物理地址映射之後,就將數據傳輸的控制權交給了外部設備的DMA控制器,然後所有的數據傳輸操作都由外部設備來完成。這樣能夠帶來一個非常大的好處就是節省了CPU資源。

所謂RDMA,可以簡單理解為利用相關的硬體和網路技術,伺服器1的網卡可以直接讀寫另一個伺服器2的內存,最終達到高帶寬,低延遲和低資源利用率的效果。如下圖所示,應用程序不需要參與數據傳輸過程,只需要指定內存讀寫地址,開啟傳輸並等待傳輸完成即可。

為了方便大家更好的理解,筆者畫了一張簡易的示意圖來對比RDMA和傳統TCP/IP網路在Server端發送數據的數據通路。可以看到,RDMA的性能優勢主要體現在以下幾個方面。

Zero Copy:減少數據拷貝次數。由於沒有將數據拷貝到內核態並處理數據包頭部的過程,傳輸延遲會顯著減小。

Kernel Bypass和Protocol Offload:不需要內核參與。數據通路中沒有繁瑣的處理報頭邏輯,不僅會使延遲降低,而且也大大節省了CPU的資源。

RDMA並非最近幾年才提出,事實上最早實現RDMA的網路協議Infiniband早已應用到了高性能計算中。但是Infinband和傳統TCP/IP網路相比區別非常大,需要專用的硬體設備,承擔昂貴的價格,並且會大大增加運維人力成本。

那麼,是否有適合傳統數據中心的RDMA網路?

目前支持乙太網的RDMA協議主要是RoCE (RDMA over Converged Ethernet)和iWARP (Internet Wide Area RDMA Protocol),系統部同學通過性能、可用性等多方面的調研後,最終引入了RoCE網路。RoCE和Infiniband的性能基本相近,而且比iWARP產業生態更加健全,主流網卡廠商都已支持。

除此之外,RoCE網路在數據鏈路層支持標準乙太網協議,在網路層上支持IP協議,因此可以無縫融合到現有的IDC環境中,部署方便;其次由於RoCE網路支持標準乙太網和IP協議,更加方便運維,而且設備成本更低。

高性能網路為什麼這麼重要

說了這麼多,可能有同學會問,性能能夠到底能夠提升多少呢?放在現有的硬體條件下是否能夠取得立竿見影的效果?

為了方便大家快速的理解,筆者畫了下面一張圖用數據來做形象的說明。

從系統結構上來講,網路處於磁碟性能之上,主存性能之下。如下圖所示,目前伺服器內存越來越大減少了計算過程中存儲的壓力,因此網路在很大程度上成為了性能瓶頸。高性能網路和萬兆乙太網相比,帶寬提升了1個數量級,小數據包的傳輸延遲更是提升了1 - 2個數量級。

如何使用高性能網路

那麼高性能網路的易用性如何?是不是直接換好硬體設備就能把程序放上去用了?小編這次只能實事求是的給出一次負能量:大多數現有程序都是需要作移植的。

為什麼不行?有沒有解決辦法?

RDMA在性能上相比傳統TCP/IP網路有非常大的提升,但是使用上卻並沒有TCP/IP方便。目前在高性能計算中使用最廣泛的方式是MPI(Message Passing Interface),這種方式能夠很好的駕馭機器學習相關的應用,但是由於自身的局限性,在很多其他業務上並不能很好的使用。為了更好的在公司的機器學習業務中使用,系統部同學聯合深度學習實驗室同學開發了一個類似Socket的編程介面,在提升性能的同時,大大降低了程序在RDMA網路上的移植難度。

RDMA在百度的使用情況

相信看到這裡,有些同學已經有躍躍欲試的熱情了。作為國內最重視技術的互聯網公司,我廠的同學當然不會放過這項新技術,必然要拿來消化消化,然後為我所用。

公司在2014年前後開始引入RDMA網路,先後部署了lnfinband集群和RoCEv1集群。2015年,百度分別在SZWG機房YQ01機房大規模部署了RoCEv2集群,分別承載了深度學習,語音識別和自然語言處理等相關的機器學習任務。目前RDMA集群總體規模為600台左右,這是國內最大的一個RoCEv2網路。

RDMA相比傳統TCP/IP網路有高帶寬、低延遲和低CPU佔用率等特性,已深得機器學習任務的青睞。其中語音識別訓練和NLP機器翻譯,使用OpenMPI作為基礎庫,40G RDMA通信性能相對於10GTCP網路提升了1個數量級。Paddle圖像訓練使用類Socket庫,也有不錯的性能收益。為了更加直觀的理解,對於OpenMPI BenchMark,40GRDMA相對於10GTCP能夠提速1-2個數量級。

RDMA在其他領域的使用展望

除了機器學習領域,RDMA網路能否在其他領域取得很好的效果呢?

目前系統部的同學正在積極調研RDMA網路在其他領域中的使用,大致包括了如下幾個方面。

1.為存儲系統和計算系統加速,充分利用高帶寬低延遲以及釋放CPU通信處理。

目前業內很多公司已經開始探索RDMA在存儲上的應用,包括iSCSI,SamBa,NVMe,Hadoop等等。系統部的同學也會結合公司各個業務對存儲的需求情況來進行探索。

2.為GPU異構計算通信加速,充分利用Zero Copy的特性,減少數據通路中的拷貝次數,大大降低GPU之間的傳輸延遲。

GDR這項技術從2014年起就一直在跟進,之前由於相關技術原因一直沒有應用到實際的業務中。隨著這些技術問題不斷得到解決,這項技術正在逐漸走向成熟。從最新的測試結果來看,OpenMPI+GDR的方式能夠大幅度降低跨節點GPU的傳輸延遲,而且傳輸帶寬也能夠接近限速,相信不久就能在實際應用中為異構計算提速。

3.為基礎服務加速,由於RDMA網路和傳統數據中心的完美融合。

今後會逐漸推廣至公司的各項業務中,為各項基礎網路服務加速。當然,系統部的研發同學也會提供使用更方便的網路介面為各項業務服務。

溫馨提示:


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 架構師技術聯盟 的精彩文章:

選擇GPU伺服器的基本原則
CTO,是怎樣煉成的?

TAG:架構師技術聯盟 |