徐敏, 胡聰, 王萍, 張翠翠, 王鵬
(國網安徽省電力有限公司,信息通信分公司,安徽,合肥 230061)
隨著云存儲技術被廣泛地運用到各個領域,云存儲文件系統被廣泛地關注,其中Ceph文件系統的性能受配置參數的影響較大,其參數配置問題一直是研究的重點,傳統的人工參數配置不僅費時費力,還容易出現人工誤差。強化學習因為具有優秀的決策能力近年來被廣泛地運用到人工智能領域,Ceph文件系統的參數配置問題可以轉化成決策和尋優問題,而強化學習在處理決策問題的效果較好,所以本研究考慮引入強化學習實現文件系統的管理。
文獻[1]提出了一種基于隨機森林和遺傳算法的Ceph系統的參數自動調節方法來調節系統的參數,達到性能優化的目的,雖然它能夠提高參數配置的效率和準確性,但是沒有考慮到參數與參數之間的相關性。文獻[2]采用強化學習算法中的DQN算法、A2C算法和PPO算法來實現Lustre文件系統的參數自動配置,雖然它能夠解決人工配置的不準確問題,但是算法的性能有待進一步提高。
基于以上分析,本研究采用多智能體分層強化學習算法實現對Ceph文件系統的參數自動配置,以達到文件系統性能優化的目的。
在文件系統參數的調節問題中,強化學習的智能體為調節引擎,整個存儲文件系統可以看作環境,這樣就可以把參數調節問題轉化成一個順序決策問題[3]。
強化學習是機器學習的一個重要的研究分支,其基本原理是通過智能體(Agent)與環境不斷地交流,根據最大目標的回報值來選擇最優的行為[4]。強化學習的架構如圖1所示。

圖1 強化學習架構
強化學習架構主要由Agent和環境2部分組成[5],Agent通過狀態感知器對環境的狀態進行感知。Agent采取的動作也會對環境產生一定的影響,環境改變后Agent會收到環境的變化是否有利的反饋信號,Agent通過學習和犯錯來不斷地選擇目標動作,最終得到一個最優的滿足設定條件的策略[6]。
在Ceph文件系統的參數配置問題中,需要考慮的因素很多,所以單一的Agent系統無法協調好多個決策因素之間的關系,因此擴展多個Agent,通過多個Agent之間的相互合作來保證決策的最優[7]。多智能體強化學習(MARL)結構如圖2所示。

圖2 多智能體強化學習示意圖
多智能體強化學習的基礎是深度強化學習(Deep Reinforcement Learning,DRL)模型,通過擴展DRL模型即可得到多智能體強化結構,目前對于多智能體強化學習的研究主要有多智能體系研究和多智能體強化學習策略研究2個方面[8]。
傳統的參數調優的方法主要有控制反饋算法和參數搜索算法[9]。控制反饋算法只有在負載較小的情況下,效果才會突出并且需要人為設置關鍵參數;參數搜索算法只能對某一特定負載下的參數進行搜索,當負載發生變化時,不再適用[10]。本研究基于現有參數調優方法的缺陷,結合強化學習,構建一個參數自動調節系統如圖3所示。

圖3 參數自動調節系統
系統主要由策略節點和目標集群2部分組成。策略節點分為2部分,一部分為強化學習的智能體,另一部分為信息接口。目標集群的每個節點都包含一個監督器和一個執行器,監督器主要用來收集節點的狀態信息,執行器主要用來執行參數調節的動作。
參數自動調節的工作流程為通過監督器采集節點的狀態信息,這些信息通過信息接口傳遞到多智能體,多智能體根據節點的狀態信息對參數進行調節,將參數調節的指令通過信息接口傳遞到執行器,執行器執行參數調節的動作來完成參數調節,然后不斷地迭代達到終止條件。這一過程的關鍵在于智能體根據節點的狀態信息對參數的配置,在不斷的迭代過程中,智能體也在不斷地學習和提升以滿足參數配置的要求。
上述提到強化學習的多智能體根據節點的狀態信息進行參數配置,本研究的主要思想是將參數配置問題轉化成多個指標分別滿足,即分層強化學習。分層強化學習的類型主要有以下幾種:基于分層抽象機的分層強化學習,基于選項的分層強化學習,基于MaxQ函數分解的分層強化學習和基于端到端的分層強化學習。前面3種都需要人工做很多的工作,人工操作不僅費時費力,還會造成最終結果的不準確等問題,因此本研究采用基于端到端的分層強化學習進行分層,然后根據分層采用基于選項的分層強化學習進行訓練學習。
將文件系統的參數配置問題轉化為參數尋優問題,分為多個指標,本研究的端到端分層強化學習采用瓶頸和路標法,即在求解的過程中不斷地尋找中間點,將其視為子目標來實現任務的分層。本研究采用蟻群尋找合理的劃分點,根據蟻群的信息素變化程度判斷瓶頸的位置,強化學習中的智能體需要將一個參數調節到另一個參數的過程中,如圖4所示。

圖4 蟻群搜尋瓶頸示意圖
假設文件系統的參數配置要從s調節到g,調節的過程如圖4所示,參數的配置需要經過狀態u和v,通過蟻群算法的信息素根據狀態變化找到瓶頸的所在位置,即狀態v附近,通過多次探索找到參數配置過程中的多個瓶頸,根據瓶頸將問題劃分為多個層次。
選項(option)是一種對動作抽象的概念,在本研究中可以理解為對參數調節的動作的抽象。一般情況下可以將一個option用三元組〈I,π,β〉表示,其中I表示節點的初始狀態集合,S表示所有數據節點的初始狀態信息,則有I?S,π表示該選項中的策略,在本研究中可以理解為參數調節的動作,β表示終止條件。假設option〈I,π,β〉在上述的狀態s上可用,只有當s∈I時才會執行option,強化學習的智能體根據option中的π選擇參數調節動作直到終止。
基于option的分層強化學習的過程:Agent接收到環境的狀態信息后,需要將環境的當時狀態改變到下一個狀態,此時Agent會在滿足條件的option中選擇一個option,根據這個option的結果確定是否要執行這個option中的動作,如果選擇執行這個option中的動作,則環境的狀態可以直接轉移到下一個狀態,如果這個option的動作不能滿足達到的要求,則繼續選擇下一個option,直到環境的狀態滿足要求為止。
在使用基于option分層強化學習解決問題時,注意需要定義一個更高層次等級的策略μ:S×OS→[0,1],其中,O表示所有選項的集合,OS則表示在狀態s下所有可以使用的選項集合。
本研究采用的分層強化學習方法主要是結合了基于選項的分層強化學習和基于端到端的分層強化學習,采用基于端到端的分層強化學習中的瓶頸和路標法來確定分層的瓶頸和標志,然后采用基于選項的分層強化學習根據分層結果進行訓練和學習。
將本文提出的強化學習方法與文獻[2]中的強化學習和文獻[1]方法進行對比試驗,試驗分為2個部分:性能對比和參數調節效果對比。
由于系統的復雜性,選擇在實驗室內進行試驗,試驗的硬件為整個文件存儲系統,系統主要由2個服務器節點和2個客戶端節點組成,服務器節點在測試過程中均處于閑置狀態,從而避免其他的負載對測試的結果產生一定的影響。2個客戶端的配置為8個Intel Xeon CPU E5620 @ 2.40 GHz,32 GB RAM,網絡帶寬為10 GB/s。策略節點的配置為24個Intel Xeon CPU E5-2650 v4 @ 2.20 GHz,64 GB RAM以及2個NVIDIA Tesla K80 GPU。
測試工具選用Iozone(3.479),測試的內容主要有以下幾個部分:Write、RE-Write、Read、RE-Read、Strided Read、Random Read、Random Writer。
系統搭建完后,采用本文的分層強化學習和文獻[2]的強化學習對系統文件的性能進行測試,測試的結果依靠系統的吞吐量來表示,設置每個客戶端啟動16個進程來對16 GB大小文件進行并行讀寫,測試使用的文件塊大小為1 MB,跳讀跨度為2 MB,測試過程中的節點狀態信息會在測試目錄中生成對應節點的數據包中,測試完成后,可以在日志文件中查看各個節點的總吞吐量、平均速度、最大速度、最小速度、讀寫速度信息,采用本文的分層強化學習和文獻[2]的強化學習進行測試之前,要對系統的參數重置為默認值,每種方法分別測試3次,取3次結果的平均值對數據進行整理可以得到表1的測試數據。

表1 測試數據
從表中數據可以看出,采用強化學習來對參數進行調優的整體結果比文獻[1]的效果好,采用本文的強化學習方法數據的Write、RE-Write、Strided Read、Random Read比文獻[2]的強化學習性能優秀,而文獻[2]在Read、RE-Read 2個方面的速度高于本文提出的分層強化學習,并且2種強化學習的Random Writer幾乎相等。為了更直觀地表現2種強化學習的參數調節效果,由于上述數據的差異值較大無法直觀的表現,因此對數據進行標準化處理并用直方圖表現(圖5)。

圖5 強化學習性能對比直方圖
從圖5可以看出,采用本文提出的強化學習對文件系統的參數配置進行調節的效果相比文獻[2]的強化學習有所提升。
下面對采用本文提出的強化學習調節參數與Ceph文件系統默認參數性能進行對比,在保持數據大小相同的情況下,采用本文提出的參數調節和默認參數對數據進行讀寫測試,數據大小分為8 G、16 G、32 G,分別讀寫3次,對數據的讀寫速度進行統計可以得到表2的數據。

表2 讀寫速度數據
表中數據表明,在相同的數據大小情況下,本文的參數調節方案的讀寫速度穩定在12 MB/s左右,默認參數的數據讀寫速度在9 MB/s,并且隨著數據大小的增加,默認參數下的數據讀寫速度會有所下降,為了更直觀地表現2種情況下數據大小與讀寫速度的關系,通過計算可以得出圖6的讀寫速度對比圖。

圖6 讀寫速度對比
從圖6中可以看出本研究提出的參數調節方案能夠提高Ceph文件系統的性能。
綜上所述,本文提到的參數調節方案能夠提高Ceph文件的性能,讀取速度相比默認參數提高了30%左右。
本研究從Ceph文件系統參數調節為出發點,結合強化學習,采用了基于端到端的分層強化學習和基于選項的分層強化學習來實現系統參數自動調節,最后通過試驗證明了參數調節方案能夠提高系統的性能,并得出以下結論。
(1)分層強化學習的重點在于層次的劃分,對問題進行有效的劃分可以將復雜的問題簡單化。
(2)提高文件系統的性能,可以從參數配置入手。
(3)參數配置問題需要考慮的因素很多,所以需要多個智能體來協同決策。
本研究內容能夠對強化學習在文件系統中的應用提供一些思路和方向,具有一定的實用價值,但是由于試驗數據不足,有待進一步的改進和完善。