徐敏, 胡聰, 王萍, 張翠翠, 王鵬
(國(guó)網(wǎng)安徽省電力有限公司,信息通信分公司,安徽,合肥 230061)
隨著云存儲(chǔ)技術(shù)被廣泛地運(yùn)用到各個(gè)領(lǐng)域,云存儲(chǔ)文件系統(tǒng)被廣泛地關(guān)注,其中Ceph文件系統(tǒng)的性能受配置參數(shù)的影響較大,其參數(shù)配置問題一直是研究的重點(diǎn),傳統(tǒng)的人工參數(shù)配置不僅費(fèi)時(shí)費(fèi)力,還容易出現(xiàn)人工誤差。強(qiáng)化學(xué)習(xí)因?yàn)榫哂袃?yōu)秀的決策能力近年來被廣泛地運(yùn)用到人工智能領(lǐng)域,Ceph文件系統(tǒng)的參數(shù)配置問題可以轉(zhuǎn)化成決策和尋優(yōu)問題,而強(qiáng)化學(xué)習(xí)在處理決策問題的效果較好,所以本研究考慮引入強(qiáng)化學(xué)習(xí)實(shí)現(xiàn)文件系統(tǒng)的管理。
文獻(xiàn)[1]提出了一種基于隨機(jī)森林和遺傳算法的Ceph系統(tǒng)的參數(shù)自動(dòng)調(diào)節(jié)方法來調(diào)節(jié)系統(tǒng)的參數(shù),達(dá)到性能優(yōu)化的目的,雖然它能夠提高參數(shù)配置的效率和準(zhǔn)確性,但是沒有考慮到參數(shù)與參數(shù)之間的相關(guān)性。文獻(xiàn)[2]采用強(qiáng)化學(xué)習(xí)算法中的DQN算法、A2C算法和PPO算法來實(shí)現(xiàn)Lustre文件系統(tǒng)的參數(shù)自動(dòng)配置,雖然它能夠解決人工配置的不準(zhǔn)確問題,但是算法的性能有待進(jìn)一步提高。
基于以上分析,本研究采用多智能體分層強(qiáng)化學(xué)習(xí)算法實(shí)現(xiàn)對(duì)Ceph文件系統(tǒng)的參數(shù)自動(dòng)配置,以達(dá)到文件系統(tǒng)性能優(yōu)化的目的。
在文件系統(tǒng)參數(shù)的調(diào)節(jié)問題中,強(qiáng)化學(xué)習(xí)的智能體為調(diào)節(jié)引擎,整個(gè)存儲(chǔ)文件系統(tǒng)可以看作環(huán)境,這樣就可以把參數(shù)調(diào)節(jié)問題轉(zhuǎn)化成一個(gè)順序決策問題[3]。
強(qiáng)化學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)重要的研究分支,其基本原理是通過智能體(Agent)與環(huán)境不斷地交流,根據(jù)最大目標(biāo)的回報(bào)值來選擇最優(yōu)的行為[4]。強(qiáng)化學(xué)習(xí)的架構(gòu)如圖1所示。
圖1 強(qiáng)化學(xué)習(xí)架構(gòu)
強(qiáng)化學(xué)習(xí)架構(gòu)主要由Agent和環(huán)境2部分組成[5],Agent通過狀態(tài)感知器對(duì)環(huán)境的狀態(tài)進(jìn)行感知。Agent采取的動(dòng)作也會(huì)對(duì)環(huán)境產(chǎn)生一定的影響,環(huán)境改變后Agent會(huì)收到環(huán)境的變化是否有利的反饋信號(hào),Agent通過學(xué)習(xí)和犯錯(cuò)來不斷地選擇目標(biāo)動(dòng)作,最終得到一個(gè)最優(yōu)的滿足設(shè)定條件的策略[6]。
在Ceph文件系統(tǒng)的參數(shù)配置問題中,需要考慮的因素很多,所以單一的Agent系統(tǒng)無法協(xié)調(diào)好多個(gè)決策因素之間的關(guān)系,因此擴(kuò)展多個(gè)Agent,通過多個(gè)Agent之間的相互合作來保證決策的最優(yōu)[7]。多智能體強(qiáng)化學(xué)習(xí)(MARL)結(jié)構(gòu)如圖2所示。
圖2 多智能體強(qiáng)化學(xué)習(xí)示意圖
多智能體強(qiáng)化學(xué)習(xí)的基礎(chǔ)是深度強(qiáng)化學(xué)習(xí)(Deep Reinforcement Learning,DRL)模型,通過擴(kuò)展DRL模型即可得到多智能體強(qiáng)化結(jié)構(gòu),目前對(duì)于多智能體強(qiáng)化學(xué)習(xí)的研究主要有多智能體系研究和多智能體強(qiáng)化學(xué)習(xí)策略研究2個(gè)方面[8]。
傳統(tǒng)的參數(shù)調(diào)優(yōu)的方法主要有控制反饋算法和參數(shù)搜索算法[9]。控制反饋算法只有在負(fù)載較小的情況下,效果才會(huì)突出并且需要人為設(shè)置關(guān)鍵參數(shù);參數(shù)搜索算法只能對(duì)某一特定負(fù)載下的參數(shù)進(jìn)行搜索,當(dāng)負(fù)載發(fā)生變化時(shí),不再適用[10]。本研究基于現(xiàn)有參數(shù)調(diào)優(yōu)方法的缺陷,結(jié)合強(qiáng)化學(xué)習(xí),構(gòu)建一個(gè)參數(shù)自動(dòng)調(diào)節(jié)系統(tǒng)如圖3所示。
圖3 參數(shù)自動(dòng)調(diào)節(jié)系統(tǒng)
系統(tǒng)主要由策略節(jié)點(diǎn)和目標(biāo)集群2部分組成。策略節(jié)點(diǎn)分為2部分,一部分為強(qiáng)化學(xué)習(xí)的智能體,另一部分為信息接口。目標(biāo)集群的每個(gè)節(jié)點(diǎn)都包含一個(gè)監(jiān)督器和一個(gè)執(zhí)行器,監(jiān)督器主要用來收集節(jié)點(diǎn)的狀態(tài)信息,執(zhí)行器主要用來執(zhí)行參數(shù)調(diào)節(jié)的動(dòng)作。
參數(shù)自動(dòng)調(diào)節(jié)的工作流程為通過監(jiān)督器采集節(jié)點(diǎn)的狀態(tài)信息,這些信息通過信息接口傳遞到多智能體,多智能體根據(jù)節(jié)點(diǎn)的狀態(tài)信息對(duì)參數(shù)進(jìn)行調(diào)節(jié),將參數(shù)調(diào)節(jié)的指令通過信息接口傳遞到執(zhí)行器,執(zhí)行器執(zhí)行參數(shù)調(diào)節(jié)的動(dòng)作來完成參數(shù)調(diào)節(jié),然后不斷地迭代達(dá)到終止條件。這一過程的關(guān)鍵在于智能體根據(jù)節(jié)點(diǎn)的狀態(tài)信息對(duì)參數(shù)的配置,在不斷的迭代過程中,智能體也在不斷地學(xué)習(xí)和提升以滿足參數(shù)配置的要求。
上述提到強(qiáng)化學(xué)習(xí)的多智能體根據(jù)節(jié)點(diǎn)的狀態(tài)信息進(jìn)行參數(shù)配置,本研究的主要思想是將參數(shù)配置問題轉(zhuǎn)化成多個(gè)指標(biāo)分別滿足,即分層強(qiáng)化學(xué)習(xí)。分層強(qiáng)化學(xué)習(xí)的類型主要有以下幾種:基于分層抽象機(jī)的分層強(qiáng)化學(xué)習(xí),基于選項(xiàng)的分層強(qiáng)化學(xué)習(xí),基于MaxQ函數(shù)分解的分層強(qiáng)化學(xué)習(xí)和基于端到端的分層強(qiáng)化學(xué)習(xí)。前面3種都需要人工做很多的工作,人工操作不僅費(fèi)時(shí)費(fèi)力,還會(huì)造成最終結(jié)果的不準(zhǔn)確等問題,因此本研究采用基于端到端的分層強(qiáng)化學(xué)習(xí)進(jìn)行分層,然后根據(jù)分層采用基于選項(xiàng)的分層強(qiáng)化學(xué)習(xí)進(jìn)行訓(xùn)練學(xué)習(xí)。
將文件系統(tǒng)的參數(shù)配置問題轉(zhuǎn)化為參數(shù)尋優(yōu)問題,分為多個(gè)指標(biāo),本研究的端到端分層強(qiáng)化學(xué)習(xí)采用瓶頸和路標(biāo)法,即在求解的過程中不斷地尋找中間點(diǎn),將其視為子目標(biāo)來實(shí)現(xiàn)任務(wù)的分層。本研究采用蟻群尋找合理的劃分點(diǎn),根據(jù)蟻群的信息素變化程度判斷瓶頸的位置,強(qiáng)化學(xué)習(xí)中的智能體需要將一個(gè)參數(shù)調(diào)節(jié)到另一個(gè)參數(shù)的過程中,如圖4所示。
圖4 蟻群搜尋瓶頸示意圖
假設(shè)文件系統(tǒng)的參數(shù)配置要從s調(diào)節(jié)到g,調(diào)節(jié)的過程如圖4所示,參數(shù)的配置需要經(jīng)過狀態(tài)u和v,通過蟻群算法的信息素根據(jù)狀態(tài)變化找到瓶頸的所在位置,即狀態(tài)v附近,通過多次探索找到參數(shù)配置過程中的多個(gè)瓶頸,根據(jù)瓶頸將問題劃分為多個(gè)層次。
選項(xiàng)(option)是一種對(duì)動(dòng)作抽象的概念,在本研究中可以理解為對(duì)參數(shù)調(diào)節(jié)的動(dòng)作的抽象。一般情況下可以將一個(gè)option用三元組〈I,π,β〉表示,其中I表示節(jié)點(diǎn)的初始狀態(tài)集合,S表示所有數(shù)據(jù)節(jié)點(diǎn)的初始狀態(tài)信息,則有I?S,π表示該選項(xiàng)中的策略,在本研究中可以理解為參數(shù)調(diào)節(jié)的動(dòng)作,β表示終止條件。假設(shè)option〈I,π,β〉在上述的狀態(tài)s上可用,只有當(dāng)s∈I時(shí)才會(huì)執(zhí)行option,強(qiáng)化學(xué)習(xí)的智能體根據(jù)option中的π選擇參數(shù)調(diào)節(jié)動(dòng)作直到終止。
基于option的分層強(qiáng)化學(xué)習(xí)的過程:Agent接收到環(huán)境的狀態(tài)信息后,需要將環(huán)境的當(dāng)時(shí)狀態(tài)改變到下一個(gè)狀態(tài),此時(shí)Agent會(huì)在滿足條件的option中選擇一個(gè)option,根據(jù)這個(gè)option的結(jié)果確定是否要執(zhí)行這個(gè)option中的動(dòng)作,如果選擇執(zhí)行這個(gè)option中的動(dòng)作,則環(huán)境的狀態(tài)可以直接轉(zhuǎn)移到下一個(gè)狀態(tài),如果這個(gè)option的動(dòng)作不能滿足達(dá)到的要求,則繼續(xù)選擇下一個(gè)option,直到環(huán)境的狀態(tài)滿足要求為止。
在使用基于option分層強(qiáng)化學(xué)習(xí)解決問題時(shí),注意需要定義一個(gè)更高層次等級(jí)的策略μ:S×OS→[0,1],其中,O表示所有選項(xiàng)的集合,OS則表示在狀態(tài)s下所有可以使用的選項(xiàng)集合。
本研究采用的分層強(qiáng)化學(xué)習(xí)方法主要是結(jié)合了基于選項(xiàng)的分層強(qiáng)化學(xué)習(xí)和基于端到端的分層強(qiáng)化學(xué)習(xí),采用基于端到端的分層強(qiáng)化學(xué)習(xí)中的瓶頸和路標(biāo)法來確定分層的瓶頸和標(biāo)志,然后采用基于選項(xiàng)的分層強(qiáng)化學(xué)習(xí)根據(jù)分層結(jié)果進(jìn)行訓(xùn)練和學(xué)習(xí)。
將本文提出的強(qiáng)化學(xué)習(xí)方法與文獻(xiàn)[2]中的強(qiáng)化學(xué)習(xí)和文獻(xiàn)[1]方法進(jìn)行對(duì)比試驗(yàn),試驗(yàn)分為2個(gè)部分:性能對(duì)比和參數(shù)調(diào)節(jié)效果對(duì)比。
由于系統(tǒng)的復(fù)雜性,選擇在實(shí)驗(yàn)室內(nèi)進(jìn)行試驗(yàn),試驗(yàn)的硬件為整個(gè)文件存儲(chǔ)系統(tǒng),系統(tǒng)主要由2個(gè)服務(wù)器節(jié)點(diǎn)和2個(gè)客戶端節(jié)點(diǎn)組成,服務(wù)器節(jié)點(diǎn)在測(cè)試過程中均處于閑置狀態(tài),從而避免其他的負(fù)載對(duì)測(cè)試的結(jié)果產(chǎn)生一定的影響。2個(gè)客戶端的配置為8個(gè)Intel Xeon CPU E5620 @ 2.40 GHz,32 GB RAM,網(wǎng)絡(luò)帶寬為10 GB/s。策略節(jié)點(diǎn)的配置為24個(gè)Intel Xeon CPU E5-2650 v4 @ 2.20 GHz,64 GB RAM以及2個(gè)NVIDIA Tesla K80 GPU。
測(cè)試工具選用Iozone(3.479),測(cè)試的內(nèi)容主要有以下幾個(gè)部分:Write、RE-Write、Read、RE-Read、Strided Read、Random Read、Random Writer。
系統(tǒng)搭建完后,采用本文的分層強(qiáng)化學(xué)習(xí)和文獻(xiàn)[2]的強(qiáng)化學(xué)習(xí)對(duì)系統(tǒng)文件的性能進(jìn)行測(cè)試,測(cè)試的結(jié)果依靠系統(tǒng)的吞吐量來表示,設(shè)置每個(gè)客戶端啟動(dòng)16個(gè)進(jìn)程來對(duì)16 GB大小文件進(jìn)行并行讀寫,測(cè)試使用的文件塊大小為1 MB,跳讀跨度為2 MB,測(cè)試過程中的節(jié)點(diǎn)狀態(tài)信息會(huì)在測(cè)試目錄中生成對(duì)應(yīng)節(jié)點(diǎn)的數(shù)據(jù)包中,測(cè)試完成后,可以在日志文件中查看各個(gè)節(jié)點(diǎn)的總吞吐量、平均速度、最大速度、最小速度、讀寫速度信息,采用本文的分層強(qiáng)化學(xué)習(xí)和文獻(xiàn)[2]的強(qiáng)化學(xué)習(xí)進(jìn)行測(cè)試之前,要對(duì)系統(tǒng)的參數(shù)重置為默認(rèn)值,每種方法分別測(cè)試3次,取3次結(jié)果的平均值對(duì)數(shù)據(jù)進(jìn)行整理可以得到表1的測(cè)試數(shù)據(jù)。
表1 測(cè)試數(shù)據(jù)
從表中數(shù)據(jù)可以看出,采用強(qiáng)化學(xué)習(xí)來對(duì)參數(shù)進(jìn)行調(diào)優(yōu)的整體結(jié)果比文獻(xiàn)[1]的效果好,采用本文的強(qiáng)化學(xué)習(xí)方法數(shù)據(jù)的Write、RE-Write、Strided Read、Random Read比文獻(xiàn)[2]的強(qiáng)化學(xué)習(xí)性能優(yōu)秀,而文獻(xiàn)[2]在Read、RE-Read 2個(gè)方面的速度高于本文提出的分層強(qiáng)化學(xué)習(xí),并且2種強(qiáng)化學(xué)習(xí)的Random Writer幾乎相等。為了更直觀地表現(xiàn)2種強(qiáng)化學(xué)習(xí)的參數(shù)調(diào)節(jié)效果,由于上述數(shù)據(jù)的差異值較大無法直觀的表現(xiàn),因此對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理并用直方圖表現(xiàn)(圖5)。
圖5 強(qiáng)化學(xué)習(xí)性能對(duì)比直方圖
從圖5可以看出,采用本文提出的強(qiáng)化學(xué)習(xí)對(duì)文件系統(tǒng)的參數(shù)配置進(jìn)行調(diào)節(jié)的效果相比文獻(xiàn)[2]的強(qiáng)化學(xué)習(xí)有所提升。
下面對(duì)采用本文提出的強(qiáng)化學(xué)習(xí)調(diào)節(jié)參數(shù)與Ceph文件系統(tǒng)默認(rèn)參數(shù)性能進(jìn)行對(duì)比,在保持?jǐn)?shù)據(jù)大小相同的情況下,采用本文提出的參數(shù)調(diào)節(jié)和默認(rèn)參數(shù)對(duì)數(shù)據(jù)進(jìn)行讀寫測(cè)試,數(shù)據(jù)大小分為8 G、16 G、32 G,分別讀寫3次,對(duì)數(shù)據(jù)的讀寫速度進(jìn)行統(tǒng)計(jì)可以得到表2的數(shù)據(jù)。
表2 讀寫速度數(shù)據(jù)
表中數(shù)據(jù)表明,在相同的數(shù)據(jù)大小情況下,本文的參數(shù)調(diào)節(jié)方案的讀寫速度穩(wěn)定在12 MB/s左右,默認(rèn)參數(shù)的數(shù)據(jù)讀寫速度在9 MB/s,并且隨著數(shù)據(jù)大小的增加,默認(rèn)參數(shù)下的數(shù)據(jù)讀寫速度會(huì)有所下降,為了更直觀地表現(xiàn)2種情況下數(shù)據(jù)大小與讀寫速度的關(guān)系,通過計(jì)算可以得出圖6的讀寫速度對(duì)比圖。
圖6 讀寫速度對(duì)比
從圖6中可以看出本研究提出的參數(shù)調(diào)節(jié)方案能夠提高Ceph文件系統(tǒng)的性能。
綜上所述,本文提到的參數(shù)調(diào)節(jié)方案能夠提高Ceph文件的性能,讀取速度相比默認(rèn)參數(shù)提高了30%左右。
本研究從Ceph文件系統(tǒng)參數(shù)調(diào)節(jié)為出發(fā)點(diǎn),結(jié)合強(qiáng)化學(xué)習(xí),采用了基于端到端的分層強(qiáng)化學(xué)習(xí)和基于選項(xiàng)的分層強(qiáng)化學(xué)習(xí)來實(shí)現(xiàn)系統(tǒng)參數(shù)自動(dòng)調(diào)節(jié),最后通過試驗(yàn)證明了參數(shù)調(diào)節(jié)方案能夠提高系統(tǒng)的性能,并得出以下結(jié)論。
(1)分層強(qiáng)化學(xué)習(xí)的重點(diǎn)在于層次的劃分,對(duì)問題進(jìn)行有效的劃分可以將復(fù)雜的問題簡(jiǎn)單化。
(2)提高文件系統(tǒng)的性能,可以從參數(shù)配置入手。
(3)參數(shù)配置問題需要考慮的因素很多,所以需要多個(gè)智能體來協(xié)同決策。
本研究?jī)?nèi)容能夠?qū)?qiáng)化學(xué)習(xí)在文件系統(tǒng)中的應(yīng)用提供一些思路和方向,具有一定的實(shí)用價(jià)值,但是由于試驗(yàn)數(shù)據(jù)不足,有待進(jìn)一步的改進(jìn)和完善。