近日,由京東IT資源服務部組織的將來數據中心核心技術研討會活動,在京東成功舉辦。活動邀請了京東人工智能,大數據,雲計算團隊的多位研發總監,技術骨幹人員一同參與。編程
在研討會上,你們針對目前很火的RDMA,高性能網絡相關話題,展開深刻討論。特別是隨着深度學習,雲計算的興起,網絡對應用性能的影響引發了你們的關注。服務器
RDMA(Remote Direct Memory Access)技術是一種直接在內存和內存之間進行資料互傳的技術,在數據傳輸的過程當中,不須要和操做系統Kernel作溝通,徹底實現了Kernel Bypass。網絡
對比RDMA傳輸和傳統的TCP傳輸,TCP傳輸在多處須要CPU的參與。socket
好比從應用層生成TCP的packet,對packet添加crc,由CPU來運行TCP協議傳輸數據到接收端,若是是可靠鏈接網絡,須要由CPU來進行流量的控制,在接收端須要由CPU來查詢內存地址,檢驗crc,還原TCP packet到應用。
這會消耗大量的CPU資源,並且容易受到CPU的noise的影響,從而影響網絡傳輸的性能。分佈式
若是使用RDMA傳輸,全部上述操做均可以由網卡硬件來作,CPU沒必要作任何操做,這就是爲何RDMA能帶來低延時、高帶寬和低CPU利用率的緣由。性能
在數據中心中使用RDMA技術能夠有幾種方式。學習
◾直接使用RDMA接口(verbs API)。測試
RDMA和TCP相似,有自定義的API可直接提供給應用層。用戶能夠直接使用RDMA API對應用進行編程,這種模式能夠最好的利用RDMA的性能。大數據
如今流行的deep learning 的framework TensofFlow,也能夠支持直接經過RDMA 來作數據傳輸; 面向大數據的Spark framework,也可使用Spark over RDMA。雲計算
京東人工智能研發團隊在分佈式的模型訓練場景中,也使用了RDMA技術,針對模型文件的高性能傳輸,知足了分佈式訓練的需求。
目前業界主流的database系統也均可以直接使用RDMA 接口,享用RDMA 帶來的高性能。
包括在並行存儲文件系統的應用中,RDMA 也被普遍使用。好比IBM 的GPFS 文件系統,open source 的Lustre 文件系統和GLustre 系統,它們都有直接的RDMA 的支持。
◾使用一些中間件將RDMA 封裝起來,這種應用主要在一些計算和存儲中常見。
在面向高性能計算的MPI 應用中,全部的MPI 均可以支持RDMA傳輸,諸如OpenMPI, Intel MPI, OSU MVAPICH 等。在全世界前500 臺最快的超級計算機中,MPI over RDMA 被普遍使用。
在主流的存儲應用中,面向block 存儲的iscsi 協議有iscsi over RDMA(iser)的支持,面向object 存儲的CePH 有CePH over RDMA 的支持,新的NVMe over Fabric 協議定義了在數據傳輸的時候必須使用RDMA。
還有在一些特別的應用中也用到了這種方式,好比在一些金融、證券和多媒體等須要低延遲的應用中,VMA 能夠在不改變應用接口(socket 接口)的狀況下來享受到RDMA 的低延遲。
京東IT資源服務部負責人呂科在技術研討活動中談到:「目前京東、微軟、Facebook的數據中心都在增強RDMA的使用。但願下降數據中心成本,提高應用性能,解決TCP協議帶來的擴展性等問題。」
京東IT資源服務部的硬件系統部在測試RDMA時也看到,在VM的服務中,在一樣物理服務器的狀況下,利用RDMA 來作數據傳輸,能夠將幾乎100%的CPU 資源都提供給計算。下降了CPU 在通信中的佔用率,用戶就能夠利用這些CPU 資源來作更多計算或提供其餘的服務,這也至關於增長了VM的數量。