- 相關推薦
高性能計算機分布式內存文件系統的網絡性能優化方法論文
高性能計算應用對計算節點內存的不均衡需求導致節點之間內存利用率差異較大,為充分利用高性能計算機的內存資源,產生了基于計算節點內存構建分布式文件系統的需求。此時,基于Socket的網絡通信成為制約系統性能的主要瓶頸。
高性能計算應用對計算節點內存的不均衡需求導致計算節點之間內存利用率差異較大,為充分利用高性能計算機的內存資源,為緩解這一狀況,產生了基于計算節點空閑內存構建分布式內存文件系統的需求。當存儲介質從磁盤變為內存,系統服務端I/O性能大幅提高,基于Socket的網絡通信成為制約系統性能的主要瓶頸。針對這一問題,本文提出一種基于RDMA的數據傳輸機制RBP,通過在讀、寫不同場景下靈活配置和使用RBP,大幅提高了系統的網絡傳輸性能。
1 相關工作
1.1 MooseFS
近年來,大數據、云計算、高性能計算蓬勃發展,分布式文件系統取得長足進步。其中,GFS(Google File System)提出的以大量不可靠的服務器為基礎構建高可靠的存儲系統的設計思想[1],對分布式文件系統發展具有重要意義。GFS并不開源,因此選擇設計接近的開源系統MooseFS[2],其具備支持POSIX語義、易擴展、部署維護簡便等特點,包括四個部件:
元數據管理服務器Master,負責提供維護元數據,提供元數據服務,管理數據存儲服務器等。
元數據日志服務器Metalogger,負責備份Master的變化日志文件。
數據存儲服務器Chunkserver,在Master的調度下,為客戶端提供數據傳輸和存儲服務。
客戶端Client,通過FUSE[3](File system in Userspace)掛載到MooseFS系統。
1.2 RDMA
RDMA是一種高帶寬、低延遲的網絡傳輸控制技術,通過將可靠傳輸協議固化于網卡,支持繞過內核的數據零拷貝。當前,大多數高性能計算機的計算節點之間采用支持RDMA的網絡互連。以TH-1A系統為例,其采用支持RDMA的自主設計的高速互聯網絡[4]。通過Ping Pong方式測試,計算節點之間的最小單邊延遲低至1.57us。通過流水傳輸方式測試,單向數據傳輸峰值帶寬高達6.34GB/s。
1.3 相關研究
分布式存儲系統的分布式特性決定了其對通信是敏感的,因而往往要求通信能夠提供更高的帶寬和更低的延遲。鑒于RDMA通信在帶寬和延遲方面的良好特性,研究人員在如何利用RDMA通信機制改進分布式存儲系統網絡性能方面做了很多工作。如N.S. Islam、M. W. Rahman等人為改進HDFS(Hadoop Distributed File System的寫性能,在HDFS客戶端增加Java適配器,以便借助UCR(Unified Communication Runtime)提供的功能使用RDMA進行通信[5]。Christopher Mitchell、Yifeng Geng等人設計了一個名為Pilaf的分布式內存鍵值對存儲,根據鍵值對存儲以讀請求為主的特點,實現了一個基于RDMA的get操作,用來處理只讀的服務請求,可以獲得顯著的性能收益[6]。顯然,在利用RDMA改進分布式存儲系統網絡性能時,需要考慮分布式系統的特點、部署方式、額外開銷等諸多因素。
2 MooseFS基于Socket的性能瓶頸
MooseFS在處理一個讀/寫請求過程中,有2個環節涉及實際的數據操作:一是Chunkserver對本地磁盤進行I/O操作,二是Client與Chunkserver之間通過Socket傳輸數據。當MooseFS部署在磁盤時,Chunkserver中的數據塊以EXT4等本地文件系統的文件形式存儲在磁盤中;當把MooseFS部署在內存時,則可以借助tmpfs等內存文件系統實現。
為對比基于磁盤和內存兩種形式,服務端I/O性能和系統I/O性能方面的差異,以寫為例進行測試。Chunkserver使用TH-1A部署的Lustre系統作為本地文件系統。實驗結果表明,相比基于磁盤的存儲形式,基于內存存儲可以使Chunkserver的寫性能提高數倍,然而對系統整體寫性能的提升非常有限。此時系統的性能受到基于Socket的數據傳輸性能的制約。
3 優化方法
3.1 基于RDMA的高速緩沖池RBP
RBP的原理是預先注冊一塊或多塊支持RDMA操作的內存區,按照系統需求將這片區域劃分成不同規格的緩沖塊RBB(RDMA Buffer Block)。再根據不同用途,將同樣規格的RBB組織成不同的緩沖池RBP,并配合一套專用API,以RBB為單位提供高性能的數據傳輸服務。
(1)RBP的結構設計
RBB由描述區、請求區和數據區三部分組成。描述區負責提供RBB進行RDMA通信信息,包括RBB數據區所在注冊內存區的端點信息、數據區偏移、大小等。請求區負責提供傳輸控制消息,包括Socket連接描述符、請求類型、請求數據偏移、大小等。數據區負責提供位于注冊內存區的存儲空間。在利用RBB進行RDMA通信時,RBB需要在通信兩端成對使用。
RBP,即RDMA緩沖池,RBP的基礎是一個由RBB作為元素的雙向鏈表,此外還包括RBP所包含的注冊內存區數組,用于進行RBB管理的計數器,互斥量,條件變量等。
(2)RBP的使用方式
RBP的使用方式分為顯式和隱式兩種,顯式使用是指使用者在RBP創建好后就分配得到全部的RBB,此后由使用者自行管理,適用于用途明確且管理簡單的情形;隱式使用是指使用者在需要時從RBP分配RBB,使用完后再將RBB釋放,由專門的RBP管理模塊進行管理,RBB分配與釋放對使用者是透明的,適于用作臨時用途的情形。一次基于RBP完整的RDMA通信可以分為三個階段:
數據準備,本地節點將數據寫入到分配的RBB數據區中,并向遠程節點發送控制消息。
數據接收,本地或遠程節點根據控制信息通過RDMA操作讀/寫RBB數據區中的數據。
資源釋放,本地和遠程節點釋放此前分配的RBB。
3.2 讀優化
(1)增加特定的讀RBP
Client的每個讀請求都會被分配1個數據區,于是為Client增加了一個64MB的Req RBP,其RBB大小等于Chunk大小,設為4MB,用于提供讀請求的數據區,從而繞過臨時數據緩沖區,直接利用RDMA通信從Chunkserver讀取數據。但是,Req RBP中RBB較大,限制了其數量,無法滿足多線程下大量請求對數據區的需求。于是Client增加一個作為臨時數據緩沖區的Read RBP,與Req RBP互為補充。為配合Client的RBP,Chunkserver增加一個作為臨時數據緩沖區Read RBP。兩端Read RBP的RBB大小均與CB相同,設為64KB。此外,讀優化中的RBP都是隱式使用,因此兩端都需要RBP管理模塊。
(2)引入連續讀流水線
RBP對RBB的分配和釋放非常靈活,完全可以利用一個RBB準備數據,另一個RBB向Client提供數據,因此,在Chunkserver的讀服務線程中對采用RMDA進行連續讀的情形引入了流水線。
(3)設計多通道策略
為了充分利用Client端Req RBP和Read RBP兩個RBP的性能,增加了策略控制。當讀請求的接收區大小超過1MB時,首先從Req RBP分配RBB作為數據區,若分配失敗則繼續采用原有的方式分配內存。由于傳輸非連續小數據時更適合采用Socket。因此,Chunkserver在提供數據時決定采用哪種通信方式,當要傳輸的數據小于32KB時,采用Socket通信,其他情況,采用RDMA通信;谝陨喜呗裕x請求的數據傳輸有3條數據通道。如圖1(a)所示,通道①②都通過RDMA讀取數據,通道①為Client采用Req RBP接收數據,通道②為Client采用Read RBP接收數據;通道③通過Socket讀取數據。
3.3 寫優化
(1)增加特定的寫RBP
Client已存在一個用于提高寫性能的Write Cache,于是增加一個顯示使用的Write RBP,將Write RBP與Write Cache進行合并。為實現合并,Write RBP的大小與Write Cache設置保持一致,在初始化Write Cache時,每個CB都會綁定一個從Write RBP分配的RBB。同時,Write RBP初始化后由Write Cache進行管理。
為配合Client增加的Write RBP,Chunkserver增加一個Write RBP作為臨時數據緩沖區,其RBB大小等于CB大小。Chunkserver的Write RBP與Read RBP均由RBP管理模塊進行管理。
(2)設計多通道策略
出于和讀相同的考慮,寫同樣支持RDMA和Socket兩種通信方式。不同的是,由Client端在將CB寫入ChunkServer前決定采用哪種通信方式。因此,寫請求的數據傳輸會存在2條數據通道,如圖1(b)所示,通道(1)通過RDMA寫入數據,通道(2)通過Socket寫入數據。
4 性能評測
(1)測試環境
硬件環境:TH-1A系統,6個計算節點,1個作為Master,4個作為Client,1個大內存節點作為Chunkserver。
軟件版本:MooseFS3.0.73,IOR2.10.1。
測試方法:測試文件大小為2GB,塊大小從16KB到4MB不等,采用直接IO模式進行順序讀、寫測試。
(2)測試結果與分析
客戶端對比測試在1個Client下進行,分別采用1、2、4、8個進程進行并行讀寫,以測試單個客戶端的整體性能。測試結果如圖2所示,在相同文件塊大小和相同進程數時,改進后系統的順序讀寫速度全面優于原系統。讀速度最大可達到原系統的2.02倍;寫速度最大可達到原系統的2.63倍。此外,當原系統進程數從4個增加到8個時,已無明顯提升,說明接近基于Socket通信下的性能上限。但對于改進后系統,讀塊大小超過64KB的文件和寫塊大小超過512KB的文件,速度依然隨進程數增加而穩定提高。
服務端對比測試在1個Chunkserver下進行,采用4個Client,每個Client采用單進程進行并發讀寫,以測試單個服務端在順序讀寫時提供的聚合帶寬,測試結果如圖3所示。改進后系統的單個服務端在順序讀時,向4個Client提供的帶寬最大可達到原系統的2.04倍;順序寫時的帶寬最大可以達到原系統的2.35倍。而且順序寫時的帶寬最大值為4.42GB/s,占到計算節點之間RDMA通信最大單向帶寬的接近70%。
5 結束語
本文提出一種基于RDMA的數據傳輸機制RBP,在MooseFS原有控制流程的基礎上,采用多種切實有效的設計,使其在RDMA網絡下的數據傳輸性能得到大幅提升,但對小數據和多進程的支持還存在改進空間。下一步考慮結合數據預取、寫合并、最小匹配等技術,使RBP具有更全面的性能表現和更廣泛的應用前景。
【高性能計算機分布式內存文件系統的網絡性能優化方法論文】相關文章:
網絡視頻系統性能測試及優化11-22
分布式網絡系統中的數據訪問設計與優化03-18
無線通信網絡的優化論文11-07
關于初中地理教學方法優化初探論文11-07
小議建筑空間結構的特征與優化方法論文11-30
大數據技術在移動通信網絡優化的運用論文06-09
CDMA網絡優化淺析03-15
BT網絡性能的研究與改進11-22