魏星達,陳榕,陳海波
上海交通大學并行與分布式系統研究所,上海 200240
對于分布式系統而言,如何加速網絡通信一直以來都是一個非常重要的問題。例如此前的研究[1]指出,將一個單機鍵值存儲系統應用到基于客戶機—服務器(client-server)模式的分布式環境中,即便使用了批量處理(batching)等優化技術,仍然會造成大幅的性能下降。分布式系統依賴網絡通信完成節點間的協作,因此通信開銷很大程度上決定了應用程序的整體性能。傳統的網絡協議棧(如TCP/IP)并不是針對高性能應用場景設計的,因此難以提供高效的通信支持,系統調用和內存復制等操作都會帶來巨大的性能開銷。
遠程直接內存訪問(remote direct memory access,RDMA)技術是一種最早應用于高性能計算領域的網絡通信協議,當前已在數據中心逐漸普及[2-3]。RDMA允許用戶程序繞過操作系統內核,直接和網卡交互進行網絡通信,從而提供高帶寬和極小時延。此外,RDMA還提供了one-sided原語(one-sided primitive),即網卡可以在沒有遠端節點幫助的情況下,由網卡直接發起和完成對遠程內存的讀寫請求,在提升CPU利用率的同時,為分布式系統的設計提供了更多的可能。從系統軟件設計的角度而言,可以直接將RDMA視為一種更快的網絡,并通過模擬TCP/IP的方式(即IBoIP模式)直接加速現有應用。然而這樣無法完全利用RDMA提供的性能優勢。近幾年來,學術界以及工業界提出了一系列基于RDMA的分布式系統[4-11],探索了如何通過對現有系統的再設計充分發揮出RDMA的硬件性能,實現數量級的性能提升。……