屠子健,毛鶯池,吳明波,陳 禹
(1. 河海大學(xué)計(jì)算機(jī)與信息學(xué)院,江蘇省南京市 211100;2. 華能瀾滄江水電股份有限公司,云南省昆明市 650214)
現(xiàn)有的數(shù)據(jù)存儲(chǔ)系統(tǒng)大多部署于條件優(yōu)越的專用數(shù)據(jù)中心。一方面,存儲(chǔ)規(guī)模隨著數(shù)據(jù)量的動(dòng)態(tài)增加而擴(kuò)展存儲(chǔ)柜,無(wú)須考慮部署空間的問(wèn)題;另一方面,數(shù)據(jù)中心由專業(yè)的存儲(chǔ)運(yùn)維人員進(jìn)行配置優(yōu)化與故障處理。特高壓互聯(lián)大電網(wǎng)的建設(shè)使得調(diào)度自動(dòng)化系統(tǒng)監(jiān)控的電網(wǎng)規(guī)模越來(lái)越大,需要采用更為先進(jìn)的技術(shù)支持手段支撐更大范圍內(nèi)調(diào)度業(yè)務(wù)的統(tǒng)一協(xié)調(diào)和電網(wǎng)運(yùn)行各類數(shù)據(jù)的全景監(jiān)視與分析。特高壓互聯(lián)大電網(wǎng)的建設(shè)也使得調(diào)度自動(dòng)化系統(tǒng)需要處理的實(shí)時(shí)數(shù)據(jù)量越來(lái)越大,多個(gè)調(diào)度系統(tǒng)間需要共享的實(shí)時(shí)數(shù)據(jù)也越來(lái)越多[1]。但當(dāng)存儲(chǔ)系統(tǒng)部署在偏遠(yuǎn)且環(huán)境惡劣的電網(wǎng)邊緣(如開(kāi)關(guān)站、變電站等)時(shí),在部署空間、性能與魯棒性等方面均面臨嚴(yán)峻挑戰(zhàn)。
隨著電動(dòng)汽車、智能家電等智能用電設(shè)備的快速發(fā)展,可采集到的智能用電終端也將快速增長(zhǎng),直接提高了數(shù)據(jù)采集的頻度。上述問(wèn)題對(duì)用電信息采集系統(tǒng)的自適應(yīng)能力提出了新的挑戰(zhàn)[2-3]。目前,電力數(shù)據(jù)存儲(chǔ)系統(tǒng)數(shù)據(jù)量大、變化速度快、人工經(jīng)驗(yàn)難以尋優(yōu),深度學(xué)習(xí)方法要優(yōu)于傳統(tǒng)方法,能夠有效地解決上述問(wèn)題。傳統(tǒng)存儲(chǔ)系統(tǒng)參數(shù)配置固定、不能自適應(yīng)優(yōu)化且資源部署方案原始,系統(tǒng)性能無(wú)法滿足日益增大的負(fù)載。上述存儲(chǔ)系統(tǒng)配置過(guò)程的問(wèn)題使得應(yīng)用性能受制于存儲(chǔ)性能,且受到寫(xiě)操作任務(wù)并發(fā)影響,性能不斷衰減,而使用Ceph 分布式軟件定義存儲(chǔ),可靈活配置參數(shù)[4-5],實(shí)現(xiàn)性能的大幅提升。同時(shí),通過(guò)調(diào)節(jié)中央處理器(CPU)、內(nèi)存、存儲(chǔ)、網(wǎng)絡(luò)的參數(shù)提升動(dòng)態(tài)、復(fù)雜電網(wǎng)數(shù)據(jù)的處理能力,且通過(guò)建立機(jī)器學(xué)習(xí)模型[6-8]自我優(yōu)化參數(shù),自適應(yīng)解析所應(yīng)用的負(fù)載,并對(duì)應(yīng)標(biāo)準(zhǔn)化測(cè)試場(chǎng)景組合,構(gòu)建了一個(gè)具備優(yōu)化實(shí)時(shí)應(yīng)用數(shù)據(jù)的服務(wù)質(zhì)量保證的存儲(chǔ)系統(tǒng)性能架構(gòu)。
針對(duì)以上分析和電力數(shù)據(jù)存儲(chǔ)系統(tǒng)中使用的Ceph 系統(tǒng),本文提出一種基于強(qiáng)化學(xué)習(xí)的數(shù)據(jù)負(fù)載感知自適應(yīng)配置參數(shù)推薦(DACR)方法。該方法利用基于強(qiáng)化學(xué)習(xí)的馬爾可夫鏈蒙特卡洛采樣(Qlearning-MCMC)方法配置參數(shù)樣本集和相應(yīng)的集群性能,使用分層建模(HM)方法構(gòu)建性能預(yù)測(cè)模型,采用集群性能代價(jià)函數(shù)與負(fù)載相似度估算結(jié)合算法,提供負(fù)載的快速感知和配置參數(shù)的持續(xù)優(yōu)化。在此基礎(chǔ)上,建立服務(wù)質(zhì)量感知與反饋機(jī)制,支持自適應(yīng)的存儲(chǔ)參數(shù)配置調(diào)整。實(shí)驗(yàn)結(jié)果表明,該方法采樣效率優(yōu)異,預(yù)測(cè)精度與現(xiàn)有預(yù)測(cè)方法相比有了一定的提升,滿足電力數(shù)據(jù)采集系統(tǒng)的運(yùn)行要求,且尋優(yōu)耗時(shí)也明顯低于現(xiàn)有的黑盒參數(shù)調(diào)優(yōu)方法。
面向電力物聯(lián)網(wǎng)邊緣數(shù)據(jù)存儲(chǔ)應(yīng)用場(chǎng)景,針對(duì)源-網(wǎng)-荷友好互動(dòng)下的用電信息采集系統(tǒng)中數(shù)據(jù)負(fù)載(智能電能表、分布式光伏、電動(dòng)汽車充電樁、移動(dòng)巡檢終端、視頻攝像裝置、電力資產(chǎn)電子標(biāo)簽)的快速動(dòng)態(tài)變化,用電信息采集的顆粒度越小、頻度越高對(duì)源-網(wǎng)-荷友好互動(dòng)能力支撐就越大。
傳統(tǒng)電力數(shù)據(jù)存儲(chǔ)系統(tǒng)配置參數(shù)調(diào)優(yōu)方法通過(guò)系統(tǒng)管理員的專業(yè)知識(shí)和經(jīng)驗(yàn)選擇局部參數(shù)進(jìn)行設(shè)置。管理員根據(jù)不同的應(yīng)用程序,總結(jié)出對(duì)電力數(shù)據(jù)存儲(chǔ)系統(tǒng)性能影響較大的參數(shù),在具體的應(yīng)用場(chǎng)景手動(dòng)調(diào)整配置參數(shù)的取值,但是電力數(shù)據(jù)存儲(chǔ)系統(tǒng)中的配置參數(shù)通常種類繁多,例如電力數(shù)據(jù)存儲(chǔ)系統(tǒng)中常用的Ceph 分布式存儲(chǔ)系統(tǒng)[9]包含上千個(gè)配置參數(shù),且參數(shù)與參數(shù)間呈現(xiàn)復(fù)雜的非線性關(guān)系,因此,找到最佳參數(shù)配置的概率極低。此外,在現(xiàn)代電力數(shù)據(jù)存儲(chǔ)系統(tǒng)的部署環(huán)境中,系統(tǒng)硬件和工作負(fù)載快速變化,其使用的分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)從一個(gè)或幾個(gè)相同節(jié)點(diǎn)擴(kuò)展到數(shù)百個(gè)高度異構(gòu)的環(huán)境,導(dǎo)致手動(dòng)調(diào)整參數(shù)非常繁瑣且耗時(shí)。
近年來(lái),學(xué)者們開(kāi)始研究智能化方法[10]以實(shí)現(xiàn)電力數(shù)據(jù)存儲(chǔ)系統(tǒng)配置參數(shù)的自動(dòng)調(diào)優(yōu)。常用的參數(shù)自動(dòng)調(diào)優(yōu)方法包括:統(tǒng)計(jì)推理技術(shù)中的貝葉斯優(yōu)化(BO)、模擬退火(SA)、遺傳算法(GA)[11]、隨機(jī)搜索(RS)、深度Q 網(wǎng)絡(luò)(DQN)、智能爬山(SHC)等。這些智能搜索算法通過(guò)遍歷配置參數(shù)樣本空間,嘗試迭代不同的參數(shù)配置,直至搜索到最優(yōu)的參數(shù)配置[12-13]。Gaonkar 等人[14]使用遺傳算法為多應(yīng)用環(huán)境設(shè)計(jì)可靠的數(shù)據(jù)存儲(chǔ)系統(tǒng),該系統(tǒng)既能滿足業(yè)務(wù)需求,也能最小化系統(tǒng)的成本。為了優(yōu)化層次數(shù)據(jù)格式HDF5 應(yīng)用的輸入/輸出(I/O)性能,Behzad 等人[15]提出了一種基于遺傳算法的優(yōu)化模型。以上智能搜索算法大多以“黑盒”方式進(jìn)行參數(shù)調(diào)優(yōu),而忽略了存儲(chǔ)系統(tǒng)內(nèi)部的復(fù)雜結(jié)構(gòu)。這導(dǎo)致每次搜索都需要運(yùn)行包含大量數(shù)據(jù)集的應(yīng)用程序,耗時(shí)較多。隨著機(jī)器學(xué)習(xí)的廣泛應(yīng)用,針對(duì)電力數(shù)據(jù)存儲(chǔ)系統(tǒng)配置的復(fù)雜問(wèn)題,科研人員開(kāi)始嘗試使用基于機(jī)器學(xué)習(xí)的預(yù)測(cè)模型進(jìn)行自動(dòng)調(diào)整存儲(chǔ)系統(tǒng)配置參數(shù)。Willke 等人[16]提出一種支持向量機(jī)回歸(SVR)模型,在2 種不同的應(yīng)用程序下分別比較了簡(jiǎn)單多元線性回歸(MLR)、具有參數(shù)相互作用的多元線性回歸(MLR-I)、具有二次效應(yīng)的多重線性回歸(MLR-Q)等方法,結(jié)果表明SVR 模型具有較優(yōu)的準(zhǔn)確性和計(jì)算效率。Herodotou 等人[17-18]提出了細(xì)粒度的性能分析模型來(lái)預(yù)測(cè)系統(tǒng)每個(gè)階段的性能,該方法結(jié)合每個(gè)階段的預(yù)測(cè)值,得到總體性能的預(yù)測(cè)。Yu 等人[19]提出了一種RFHOC 方法,利用隨機(jī)森林(RF)算法為Map 和Reduce 階段構(gòu)建性能模型,但RF 預(yù)測(cè)結(jié)果具有不可解釋性,整個(gè)預(yù)測(cè)過(guò)程是一個(gè)“黑盒子”。Lama 和Zhou[20]構(gòu)建了一個(gè)基于支持向量機(jī)(SVM)的模型來(lái)預(yù)測(cè)Hadoop 作業(yè)的性能。Oceane 等人[21]提出一種基于神經(jīng)網(wǎng)絡(luò)強(qiáng)化學(xué)習(xí)的無(wú)監(jiān)督參數(shù)調(diào)整系統(tǒng)(CAPES),定期測(cè)量目標(biāo)存儲(chǔ)系統(tǒng)的狀態(tài),并訓(xùn)練神經(jīng)網(wǎng)絡(luò)對(duì)當(dāng)前配置參數(shù)的更改。上述性能預(yù)測(cè)模型都試圖根據(jù)訓(xùn)練數(shù)據(jù)建立高度準(zhǔn)確和復(fù)雜的個(gè)體模型,容易出現(xiàn)過(guò)擬合問(wèn)題。一些線性回歸的統(tǒng)計(jì)模型通常假設(shè)配置參數(shù)之間存在線性關(guān)系,這不符合存儲(chǔ)系統(tǒng)配置參數(shù)非線性的特征。神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型的建立需要的數(shù)據(jù)樣本過(guò)多,會(huì)加大系統(tǒng)的采樣工作量,且模型訓(xùn)練耗時(shí)過(guò)長(zhǎng)。而電力數(shù)據(jù)存儲(chǔ)系統(tǒng)的參數(shù)配置需要高效、精準(zhǔn)以及可靠等特性。結(jié)合上述特點(diǎn),深度學(xué)習(xí)方法優(yōu)勢(shì)遠(yuǎn)大于傳統(tǒng)的人工配置參數(shù)方法。
綜上所述,從基于經(jīng)驗(yàn)規(guī)則的手動(dòng)調(diào)整方法,發(fā)展到基于統(tǒng)計(jì)推理技術(shù)與機(jī)器學(xué)習(xí)相結(jié)合的自動(dòng)調(diào)整方法,可以在一定程度上提升電力數(shù)據(jù)存儲(chǔ)系統(tǒng)配置參數(shù)的工作效率。但針對(duì)電力物聯(lián)網(wǎng)邊緣快速變化的數(shù)據(jù)負(fù)載學(xué)習(xí)時(shí)間長(zhǎng)且準(zhǔn)確率低的問(wèn)題,上述方法尚不能解決。本文分析電力數(shù)據(jù)存儲(chǔ)系統(tǒng)的數(shù)據(jù)規(guī)律,快速識(shí)別邊緣物聯(lián)網(wǎng)數(shù)據(jù)類型的分布,鑒別整體數(shù)據(jù)負(fù)載變化,通過(guò)對(duì)電力數(shù)據(jù)存儲(chǔ)系統(tǒng)中的Ceph 分布式存儲(chǔ)系統(tǒng)配置參數(shù)的自適應(yīng)調(diào)節(jié),最大化提升數(shù)據(jù)存儲(chǔ)系統(tǒng)的性能。
電力數(shù)據(jù)存儲(chǔ)系統(tǒng)中的Ceph 分布式存儲(chǔ)系統(tǒng)讀寫(xiě)的基本流程如圖1 所示。Ceph 是一個(gè)統(tǒng)一的可擴(kuò)展的分布式存儲(chǔ)系統(tǒng),通過(guò)底層的librados 與后端 的OSD 交互,如附錄A 圖A1 所示。OSD 是Ceph系統(tǒng)的對(duì)象存儲(chǔ)單元,實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)功能。其內(nèi)部包含眾多模塊,模塊之間通過(guò)隊(duì)列交換消息,相互協(xié)作共同完成I/O 的處理。
圖1 電力數(shù)據(jù)存儲(chǔ)系統(tǒng)中的Ceph 分布式存儲(chǔ)系統(tǒng)流程圖Fig.1 Flow chart of Ceph distributed storage system in electric power data storage system
本文針對(duì)源-網(wǎng)-荷友好互動(dòng)下的用電信息采集系統(tǒng)中數(shù)據(jù)負(fù)載,包括智能電能表、分布式光伏、電動(dòng)汽車充電樁、移動(dòng)巡檢終端、視頻攝像裝置、電力資產(chǎn)電子標(biāo)簽等用電數(shù)據(jù),主要選取顯著影響數(shù)據(jù)密集型應(yīng)用(data-intensive application)性能的Ceph配置參數(shù)。數(shù)據(jù)密集型應(yīng)用的主要挑戰(zhàn)是數(shù)據(jù)量大、數(shù)據(jù)復(fù)雜、數(shù)據(jù)變化速度快。本文主要解決電力數(shù)據(jù)存儲(chǔ)系統(tǒng)中數(shù)據(jù)量大、變化速度快等帶來(lái)的問(wèn)題,配置參數(shù)信息如附錄A 表A1 所示。
電力物聯(lián)網(wǎng)中一般是通過(guò)邊緣設(shè)備采集各種電力數(shù)據(jù),這些電力負(fù)載數(shù)據(jù)是快速變化的。與此同時(shí),整個(gè)電力系統(tǒng)基礎(chǔ)設(shè)備數(shù)量多導(dǎo)致其整體數(shù)據(jù)量龐大。本文針對(duì)電力物聯(lián)網(wǎng)邊緣快速變化的數(shù)據(jù)負(fù)載,分析數(shù)據(jù)分布變化,自適應(yīng)調(diào)節(jié)Ceph 分布式存儲(chǔ)系統(tǒng)中CPU、內(nèi)存、存儲(chǔ)、網(wǎng)絡(luò)的相關(guān)配置參數(shù),從而提升動(dòng)態(tài)、復(fù)雜電網(wǎng)數(shù)據(jù)的處理能力。
在電力數(shù)據(jù)存儲(chǔ)系統(tǒng)中使用Ceph 系統(tǒng)可以很好地解決各個(gè)邊緣設(shè)備數(shù)據(jù)量的動(dòng)態(tài)變化,防止個(gè)別節(jié)點(diǎn)由于數(shù)據(jù)量突變而導(dǎo)致工作不正常,從而影響整體。通過(guò)對(duì)默認(rèn)配置參數(shù)采樣、系統(tǒng)性能預(yù)測(cè)建模、數(shù)據(jù)負(fù)載感知自適應(yīng)推薦3 個(gè)方面進(jìn)行研究,模型總體架構(gòu)如圖2 所示。
圖2 模型總體架構(gòu)Fig.2 Overall architecture of model
主要步驟如下:
1)泛在電力物聯(lián)網(wǎng)應(yīng)用類型多、負(fù)載變化快,電力數(shù)據(jù)存儲(chǔ)Ceph 系統(tǒng)配置參數(shù)空間巨大、非線性的特性導(dǎo)致電力數(shù)據(jù)采集系統(tǒng)不能平穩(wěn)運(yùn)行。為了獲得更高效的配置參數(shù)組合,需要對(duì)默認(rèn)參數(shù)進(jìn)行采樣。在實(shí)際采樣過(guò)程中,部分配置參數(shù)組合會(huì)導(dǎo)致集群發(fā)生崩潰,降低集群性能。為此,本文提出Qlearning-MCMC 方法,通過(guò)對(duì)配置參數(shù)的多維聯(lián)合調(diào)整,將I/O 每秒讀寫(xiě)速度(IOPS)作為強(qiáng)化學(xué)習(xí)中的獎(jiǎng)勵(lì)值,大于默認(rèn)IOPS 值即增加獎(jiǎng)勵(lì)值,增加速度根據(jù)探索速率決定,使得配置參數(shù)實(shí)現(xiàn)有偏向的狀態(tài)轉(zhuǎn)移,提高采樣的精度和效率,保證Ceph 集群的穩(wěn)定性。
2)基于采樣得到的參數(shù)樣本集,吞吐量、I/O 延遲、系統(tǒng)能耗等可以作為性能評(píng)價(jià)指標(biāo)。由于本文數(shù)據(jù)負(fù)載多為讀寫(xiě)類型數(shù)據(jù),故僅選用IOPS 值作為評(píng)價(jià)指標(biāo)。以IOPS 作為性能評(píng)估指標(biāo),為Ceph集群建立性能預(yù)測(cè)模型。針對(duì)Ceph 集群每次運(yùn)行具有大量輸入數(shù)據(jù)的應(yīng)用程序會(huì)耗費(fèi)大量時(shí)間并占用系統(tǒng)資源的問(wèn)題,提出一種HM 方法,通過(guò)多個(gè)簡(jiǎn)單子模型的合作來(lái)預(yù)測(cè)集群性能,避免復(fù)雜單個(gè)模型的過(guò)擬合問(wèn)題。分層模型中每個(gè)子模型中的回歸樹(shù)訓(xùn)練特征不同,預(yù)測(cè)結(jié)果也存在差異,子模型之間不會(huì)發(fā)生耦合,反而能增強(qiáng)性能預(yù)測(cè)模型的魯棒性和預(yù)測(cè)準(zhǔn)確性。
3)基于Ceph 集群性能預(yù)測(cè)結(jié)果,建立配置參數(shù)庫(kù),在不同數(shù)據(jù)負(fù)載下推薦最優(yōu)配置參數(shù)。針對(duì)電力物聯(lián)網(wǎng)邊緣數(shù)據(jù)變化速度快、負(fù)載類型多、調(diào)優(yōu)結(jié)果不通用的特性,提出DACR 方法,采用變異系數(shù)(CV)分析數(shù)據(jù)分布,快速識(shí)別邊緣物聯(lián)網(wǎng)數(shù)據(jù)類型分布,鑒別整體數(shù)據(jù)負(fù)載變化,采用集群性能代價(jià)函數(shù)與負(fù)載相似度估算結(jié)合算法,提供負(fù)載的快速感知和配置參數(shù)持續(xù)優(yōu)化,達(dá)到對(duì)整個(gè)電力數(shù)據(jù)存儲(chǔ)系統(tǒng)性能優(yōu)化與提高。
本文所使用的采樣方法在傳統(tǒng)的MCMC 算法的基礎(chǔ)上做了進(jìn)一步的研究。目前,常用的采樣算法包括接受-拒絕采樣、Metropolis-Hastings 算法、吉布斯采樣(Gibbs sampling)。這些采樣算法根據(jù)配置參數(shù)的空間分布隨機(jī)地產(chǎn)生服從該分布的樣本,能夠得到不同的參數(shù)樣本集,但在實(shí)際采樣過(guò)程中,需要考慮參數(shù)之間的相互影響以及集群運(yùn)行的穩(wěn)定性。MCMC 算法在采樣的過(guò)程中不能很好地適用于電力數(shù)據(jù)變化快的環(huán)境中,只能解決高維且復(fù)雜的參數(shù)分布。改進(jìn)的Q 學(xué)習(xí)算法[22-23]在電力通信領(lǐng)域有著很好的使用效果,所以本文提出了Qlearning MCMC[24]。其 本 質(zhì) 是 在MCMC 算 法 中 加入一個(gè)獎(jiǎng)勵(lì)函數(shù),使得采樣過(guò)程中參數(shù)能夠?qū)崿F(xiàn)有偏向的狀態(tài)轉(zhuǎn)移,從而增強(qiáng)整個(gè)電力數(shù)據(jù)存儲(chǔ)系統(tǒng)的穩(wěn)定性以及性能高效性。圖3 顯示了Q-leaning MCMC 方法的具體架構(gòu)。
圖3 Q-learning MCMC 方法框架Fig.3 Framework of Q-learning MCMC method
首先,將電力數(shù)據(jù)存儲(chǔ)系統(tǒng)的默認(rèn)配置參數(shù)與數(shù)據(jù)負(fù)載輸入Ceph 集群中,以IOPS 作為標(biāo)準(zhǔn)化性能評(píng)估指標(biāo),得到相應(yīng)的系統(tǒng)性能{p1,p2,…,pn};然后,對(duì)所研究的參數(shù)進(jìn)行迭代采樣,輸入系統(tǒng)的默認(rèn)配置參數(shù)集{p1,p2,…,p22}與動(dòng)作值a1,a2至強(qiáng)化學(xué) 習(xí) 模 塊 中,其 中{p1,p2,…,p22}為Q(s,a)中的狀態(tài)s,每一個(gè)參數(shù)代表一個(gè)狀態(tài),動(dòng)作值a1,a2定義為左和右,表示參數(shù)值向最小值方向與最大值方向進(jìn)行探索,IOPS 值作為強(qiáng)化學(xué)習(xí)模塊中的目標(biāo)函數(shù)(獎(jiǎng)勵(lì)值),大于默認(rèn)IOPS 值即增加獎(jiǎng)勵(lì)值,增加速度根據(jù)探索速率決定;最后,配置參數(shù)通過(guò)策略選擇動(dòng)作執(zhí)行,根據(jù)貝爾曼方程[25]更新Q(s,a)指導(dǎo)MCMC 算法進(jìn)行步長(zhǎng)轉(zhuǎn)移,將采樣出來(lái)的新的配置參數(shù)再次輸入Ceph 集群中,經(jīng)過(guò)T次迭代后,得到最終實(shí)驗(yàn)樣本集。
基于強(qiáng)化學(xué)習(xí)的馬爾可夫鏈蒙特卡洛方法的詳細(xì)步驟如算法1 所示。算法中需要先手動(dòng)設(shè)置參數(shù)的狀態(tài)轉(zhuǎn)移次數(shù)、樣本個(gè)數(shù)、探索速率及學(xué)習(xí)率。
選取對(duì)應(yīng)IOPS 值最大的配置參數(shù)作為Qlearning-MCMC 采樣的初始參數(shù)組,初始化動(dòng)作值函數(shù)Q(s,a),執(zhí)行動(dòng)作a并觀察獎(jiǎng)勵(lì)值r和新的狀態(tài)s′的值。這里的獎(jiǎng)勵(lì)值r是配置參數(shù)與環(huán)境交互的過(guò)程中,量化動(dòng)作對(duì)目標(biāo)系統(tǒng)影響的指標(biāo)。
本文設(shè)定的獎(jiǎng)勵(lì)值分為3 類:高于系統(tǒng)默認(rèn)IOPS 值、低于系統(tǒng)默認(rèn)IOPS 值、與系統(tǒng)默認(rèn)IOPS值相等。獎(jiǎng)賞規(guī)則記為:參數(shù)執(zhí)行動(dòng)作后,IOPS 值高于系統(tǒng)默認(rèn)值時(shí)r+10,低于默認(rèn)值時(shí)r-10,相等時(shí)r=0。學(xué)習(xí)率α控制著智能體的學(xué)習(xí)速率,選取較高的學(xué)習(xí)率會(huì)加快算法的收斂,但是過(guò)大的學(xué)習(xí)率可能導(dǎo)致智能體無(wú)法找到最優(yōu)策略,本文設(shè)置α取值為0.5。通過(guò)對(duì)動(dòng)作值函數(shù)Q(s,a)的不斷更新,算法依據(jù)最優(yōu)策略π(s)采樣出新的配置參數(shù)pt,經(jīng)過(guò)T次狀態(tài)轉(zhuǎn)移后,最終得到所需樣本集{p1,p2,…,pn},每 一 個(gè)pi={x1,x2,…,x22}作 為 一組參數(shù)配置取值,其中包含了22 個(gè)單個(gè)參數(shù)配置。
算法1 基于強(qiáng)化學(xué)習(xí)馬爾可夫鏈蒙特卡洛方法輸入:參數(shù)分布pi={ x1,x2,…,x22}、狀態(tài)轉(zhuǎn)移次數(shù)T、樣本個(gè)數(shù)n、探索速率ε、衰變系數(shù)γ、學(xué)習(xí)率α輸出:樣本集{ p1,p2,…,pn}1.初始化馬爾可夫鏈{ x1,x2,…,x22}2.for t=1,2,…,T do 3. 初始化Q(s,a)4. 重復(fù)(對(duì)于每一個(gè)episode)5. 執(zhí)行動(dòng)作a,觀察r 和下一個(gè)狀態(tài)s′6. if random(0,1)>ε 7. a′←a 8. else 9. a′←Epsilon-Greedy 算法10. end 11. Qnew(s,a) ←Q(s,a) +α(R(s,a) +γmax Q′(s′,a′) -Q(s,a) )12. s ←s′13. 直到s 為終端14. pt~π(s)15. end for
考慮到SVR、RF、SVM 等方法容易出現(xiàn)過(guò)擬合問(wèn)題,并且一些線性回歸算法之類的統(tǒng)計(jì)模型通常假設(shè)配置參數(shù)之間的關(guān)系是線性的。這不符合存儲(chǔ)系統(tǒng)配置參數(shù)非線性的特征,而神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型的建立需要的數(shù)據(jù)樣本過(guò)多,會(huì)加大系統(tǒng)的采樣工作量,并且模型訓(xùn)練耗時(shí)過(guò)長(zhǎng),不適用于電力數(shù)據(jù)存儲(chǔ)系統(tǒng)的Ceph 性能預(yù)測(cè)工作。
本文提出一種HM 方法,通過(guò)多個(gè)簡(jiǎn)單模型的合作來(lái)預(yù)測(cè)系統(tǒng)性能,分層模型中每個(gè)子模型中的回歸樹(shù)訓(xùn)練特征不同,預(yù)測(cè)結(jié)果也存在差異,子模型之間不會(huì)發(fā)生耦合,反而能增強(qiáng)性能預(yù)測(cè)模型的魯棒性和預(yù)測(cè)準(zhǔn)確性。分層建模將多輸入多輸出建模問(wèn)題分解為一系列單輸入多輸出的數(shù)據(jù)建模問(wèn)題,通過(guò)構(gòu)造多個(gè)更簡(jiǎn)單的子模型而不是構(gòu)建精確復(fù)雜的單一模型來(lái)預(yù)測(cè)系統(tǒng)性能,以遞歸方式組合各個(gè)單獨(dú)的子模型,產(chǎn)生1 階、2 階或更高階的分層模型,從而提高性能預(yù)測(cè)模型的魯棒性和準(zhǔn)確性,圖4 顯示了該方法的總體框架。
圖4 分層模型框架Fig.4 Hierarchical model framework
模型框架由收集數(shù)據(jù)、建立子模型和預(yù)測(cè)性能3 個(gè)階段構(gòu)成,對(duì)于組合模型的構(gòu)建主要由3 步組成。第1 步根據(jù)輸入的配置參數(shù)和相應(yīng)的IOPS 值,構(gòu)建單個(gè)子模型M1;第2 步構(gòu)建不同的子模型M2以反映未被M1預(yù)測(cè)到的系統(tǒng)性能變化;第3 步通過(guò)組合前2 個(gè)子模型構(gòu)建初始組合模型IM,1=α1M1+α2M2。其中M1和M2為2 個(gè)子模型所預(yù)測(cè)的集群性能,α1和α2為模型學(xué)習(xí)率對(duì)應(yīng)的相關(guān)系數(shù)。該過(guò)程迭代執(zhí)行,將更多的子模型添加至組合模型中,執(zhí)行次數(shù)由模型的目標(biāo)精度決定。若組合模型IM在算法達(dá)到收斂之前滿足目標(biāo)精度,則得到最終性能預(yù)測(cè)模型;若組合模型IM在算法收斂之后還未滿足目標(biāo)精度,則重復(fù)上述過(guò)程,構(gòu)建另一個(gè)組合模型CM進(jìn)行第2 級(jí)組合:β1IM,1+β2IM,2,將不同級(jí)別模型分層地添加到最終組合模型中,直至模型達(dá)到目標(biāo)精度。
構(gòu)建基于分層建模的性能預(yù)測(cè)模型詳細(xì)步驟如算法2 所示,算法2 中需要確定回歸樹(shù)的個(gè)數(shù)及樹(shù)的復(fù)雜度(葉子節(jié)點(diǎn)數(shù)),實(shí)現(xiàn)誤差最小化。
算法2 分層建模算法輸入:訓(xùn)練集S、回歸樹(shù)個(gè)數(shù)nt、葉子節(jié)點(diǎn)個(gè)數(shù)nl、學(xué)習(xí)率α輸出:預(yù)測(cè)性能Ppre,i 1.設(shè)置初始組合模型IM 精度為0,模型層數(shù)ml 為1 2.for i=1 to nt 3. Mi 為從S 中有放回抽樣4. IM =IM +Mi α 5. if IM 的準(zhǔn)確率大于目標(biāo)準(zhǔn)確率6. return IM 7. else 8. while IM 的準(zhǔn)確率小于目標(biāo)準(zhǔn)確率9. ml =ml +1 10. IM =IM α+IM(ml -1)α 11. end while 12. return IM 13. Ppre,i ←IM{ p1,p2,…,p22}14.end for
HM 的建立是一個(gè)分層順序過(guò)程,原始模型在每一步都保持不變,隨著模型階數(shù)提升,對(duì)系統(tǒng)性能預(yù)測(cè)誤差逐漸減小。進(jìn)一步分析算法2 的時(shí)間復(fù)雜度,在模型建立過(guò)程中最大時(shí)間消耗為雙重循環(huán),因此算法最大時(shí)間復(fù)雜度近似為O(ntml)。
本文采用blktrace 工具抓取不同數(shù)據(jù)負(fù)載下的I/O 信息,根據(jù)負(fù)載下I/O 特征的不同,鑒別電力物聯(lián)網(wǎng)邊緣數(shù)據(jù)負(fù)載的變化。圖5 顯示了blktrace 工具在塊設(shè)備層(block trace)收集磁盤(pán)I/O 信息的過(guò)程。
圖5 I/O 信息抓取Fig.5 I/O information capture
抓取過(guò)程分為內(nèi)核空間和用戶空間2 個(gè)階段,當(dāng)用戶應(yīng)用程序中的I/O 進(jìn)入塊層(請(qǐng)求隊(duì)列),被I/O Scheduler 依照調(diào)度策略發(fā)送給driver(用于支持它的塊存儲(chǔ)硬件),blktrace 在進(jìn)行信息抓取時(shí),會(huì)分配物理機(jī)上邏輯CPU 個(gè)線程數(shù),每一個(gè)線程綁定一個(gè)邏輯CPU 來(lái)收集數(shù)據(jù),每個(gè)CPU 對(duì)應(yīng)輸出一個(gè)文件rbd.blktrace.*,來(lái)保存所采集的信息,其中rbd 為設(shè)備名,*表示CPU 序列號(hào),通過(guò)blkparse(配合blktrace 使用,用于分析和展示數(shù)據(jù))將不同CPU的I/O 的trace 文件合并,并解析、格式化輸出為可讀的I/O 信息。
由于電力物聯(lián)網(wǎng)邊緣數(shù)據(jù)負(fù)載的快速變化,每次需要對(duì)更新的工作負(fù)載重新遍歷配置參數(shù)空間,導(dǎo)致耗時(shí)過(guò)大。同時(shí),相似特征的工作負(fù)載具有類似的最優(yōu)配置參數(shù)。對(duì)于多數(shù)情況下的數(shù)據(jù)負(fù)載而言,根據(jù)工作負(fù)載的數(shù)據(jù)特征,快速匹配類似的最優(yōu)配置參數(shù),可以有效提高系統(tǒng)資源利用率。本文利用推薦引擎快速地找出能夠適合新工作負(fù)載的配置參數(shù),圖6 顯示了推薦引擎的工作流程。
首先,由工作負(fù)載分析器識(shí)別新的數(shù)據(jù)負(fù)載特征類型,與預(yù)先生成的配置參數(shù)組成評(píng)分?jǐn)?shù)據(jù)矩陣,采用奇異值分解(SVD)對(duì)矩陣中的缺失值進(jìn)行處理。然后,計(jì)算電力數(shù)據(jù)存儲(chǔ)系統(tǒng)工作負(fù)載類型之間的相似度,生成近鄰負(fù)載類型集。最后,采用性能代價(jià)函數(shù)與負(fù)載相似度估算結(jié)合算法來(lái)生成推薦配置參數(shù),根據(jù)負(fù)載的實(shí)際運(yùn)行情況和集群狀態(tài)確定是否更新電力數(shù)據(jù)存儲(chǔ)系統(tǒng)配置參數(shù)庫(kù)。具體實(shí)現(xiàn)步驟如下。
1)工作負(fù)載分析器識(shí)別并收集不同負(fù)載特征類型,在集群中測(cè)試每種負(fù)載特征在不同配置參數(shù)樣本下的資源利用率。為了方便推薦過(guò)程計(jì)算,將資源利用率看作數(shù)據(jù)負(fù)載對(duì)不同配置參數(shù)的評(píng)分值,具體評(píng)分值見(jiàn)附錄A 表A2。
將表A2 中的數(shù)據(jù)記作評(píng)分矩陣A,使用SVD法對(duì)矩陣A進(jìn)行分解,得到2 個(gè)矩陣P和Q的乘積表示評(píng)分矩陣A。
利用評(píng)分矩陣A中的已知評(píng)分訓(xùn)練矩陣P和Q,使得P和Q相乘的結(jié)果最好地?cái)M合已知評(píng)分。將評(píng)分矩陣A中負(fù)載類型u對(duì)配置參數(shù)i的缺失值評(píng)分記作R′ui,用矩陣P的第u行Pu乘上矩陣Q的第i列Qi可以得到式(2)。
假設(shè)已知評(píng)分為Rui,對(duì)于矩陣A中每個(gè)缺失值誤差記為Eui=Rui-R′ui,計(jì)算出總的誤差平方和為:
式中:Puk和Qki分別為矩陣P和Q中對(duì)應(yīng)的元素。
為了使預(yù)測(cè)出的值更好地?cái)M合矩陣A,需要通過(guò)訓(xùn)練使得ESSE的值最小。利用梯度下降法求得ESSE值在變量Puk處的梯度為:
式中:λ為正則化因子。為避免過(guò)擬合情況的發(fā)生,得到目標(biāo)函數(shù)ESSE在Puk處的梯度后,將Puk向負(fù)梯度方向變化,記參數(shù)更新速率為β,得到Puk和Qki的更新式為:
采用隨機(jī)梯度下降(SGD)算法對(duì)Puk和Qki進(jìn)行更新,每次迭代使用一個(gè)訓(xùn)練數(shù)據(jù)對(duì)參數(shù)進(jìn)行更新,直到算法收斂。經(jīng)過(guò)數(shù)據(jù)填充后的矩陣信息如附 錄A 表A3 所示。
與批量梯度下降(BGD)算法相比,SGD 不需要使用全部數(shù)據(jù)來(lái)計(jì)算目標(biāo)函數(shù),而是在每輪迭代中,隨機(jī)優(yōu)化某一條訓(xùn)練數(shù)據(jù)上的SSE 值,使得Puk和Qki的更新速度大大加快并有利于避免局部最優(yōu)解。
2)在實(shí)際工程應(yīng)用中,電力物聯(lián)網(wǎng)邊緣設(shè)備不斷產(chǎn)生新的數(shù)據(jù)負(fù)載,導(dǎo)致工作負(fù)載分析器生成高維的負(fù)載類型變量。面對(duì)復(fù)雜高維的負(fù)載變量特征,推薦配置參數(shù)會(huì)增加算法相似度計(jì)算的工作量。因此,需要分析每個(gè)特征變量指標(biāo),將強(qiáng)相關(guān)的變量組用單一的新變量替代,使用較少綜合指標(biāo)表征各變量中的各類信息,降低負(fù)載類型變量特征維度。
采用主成分分析(PCA)方法對(duì)負(fù)載類型特征進(jìn)行降維。PCA 主要思想是通過(guò)坐標(biāo)系的轉(zhuǎn)換,以數(shù)據(jù)最大方差方向作為坐標(biāo)系轉(zhuǎn)換方向,選取包含絕大部分方差的坐標(biāo)軸實(shí)現(xiàn)數(shù)據(jù)的降維。通過(guò)計(jì)算負(fù)載類型的協(xié)方差矩陣,得到其特征向量。選擇J個(gè)特征值最大的特征向量組成特征向量矩陣,將原始負(fù)載類型數(shù)據(jù)轉(zhuǎn)換至J個(gè)特征向量構(gòu)成的新空間中[26]。運(yùn)用PCA 對(duì)高維數(shù)據(jù)進(jìn)行降維,減少特征個(gè)數(shù),實(shí)現(xiàn)數(shù)據(jù)縮減,防止數(shù)據(jù)過(guò)擬合,加快算法運(yùn)行速度和減少數(shù)據(jù)的存儲(chǔ)空間。PCA 算法有2 種實(shí)現(xiàn)方法:基于特征分解協(xié)方差方法和基于SVD 分解協(xié)方差矩陣方法。由于負(fù)載類型變量矩陣是非方陣的,因此選用基于SVD 分解協(xié)方差矩陣方法。
將負(fù)載類型特征F={f1,f2,…,fn}構(gòu)造為一個(gè)m×n的矩陣R,初始矩陣R表示為:
式中:每一列表示一個(gè)負(fù)載類型特征,每一行表示具體的特征值。
采用PCA 算法對(duì)特征進(jìn)行降維的具體步驟如下。
步驟1:中心化。
將每個(gè)負(fù)載類型特征fi所對(duì)應(yīng)的特征值fij減去所在維度特征的平均值:
步驟2:計(jì)算協(xié)方差矩陣。
使用協(xié)方差來(lái)量度每2 個(gè)負(fù)載類型特征之間的關(guān)系,將中心化后的矩陣記為X,得到協(xié)方差矩陣為:
步驟3:奇異值分解。
通過(guò)SVD 對(duì)協(xié)方差矩陣Ccov奇異值分解,計(jì)算協(xié)方差矩陣的特征值和特征向量。
步驟4:特征向量選擇。
對(duì)計(jì)算得到的特征值從大到小排序,選擇其中最大的J個(gè)特征值所對(duì)應(yīng)的特征向量w1,w2,…,wJ構(gòu)成特征向量矩陣W,將初始矩陣R與特征向量矩陣W相乘,得到降維后的數(shù)據(jù)集。
步驟5:主成分個(gè)數(shù)選擇。
通過(guò)特征值計(jì)算得到主成分所占的百分比,選取貢獻(xiàn)率累積和大于95%的J維特征,對(duì)于J維特征所保留的信息量計(jì)算公式為:
式中:λj為特征向量對(duì)應(yīng)的特征值。
3)傳統(tǒng)協(xié)同過(guò)濾算法采用相似度計(jì)算,找出最相近的數(shù)據(jù)負(fù)載類型,但并未考慮推薦的配置參數(shù)所對(duì)應(yīng)的集群性能情況,導(dǎo)致推薦的配置參數(shù)所對(duì)應(yīng)的系統(tǒng)性能不佳、推薦效率過(guò)低。因此,將集群性能影響因素也考慮到電力數(shù)據(jù)存儲(chǔ)系統(tǒng)中,將電力數(shù)據(jù)負(fù)載和Ceph 系統(tǒng)負(fù)載的相似度和集群性能通過(guò)權(quán)值w加權(quán)求和,得到綜合評(píng)分權(quán)重函數(shù)sscore。
式中:ttop,sim為選取的前k個(gè)最相似的數(shù)據(jù)負(fù)載類型;wweight,IOPS為前k個(gè)數(shù)據(jù)負(fù)載對(duì)應(yīng)配置參數(shù)下的集群性能權(quán)重,計(jì)算公式見(jiàn)式(11)。
式中:IIOPS為當(dāng)前IOPS 值;maxIIOPS,t為t時(shí) 刻 電力數(shù)據(jù)存儲(chǔ)系統(tǒng)配置參數(shù)庫(kù)中最大的IOPS 值。
電力數(shù)據(jù)存儲(chǔ)系統(tǒng)配置參數(shù)推薦完成后,根據(jù)數(shù)據(jù)負(fù)載的實(shí)際運(yùn)行情況,更新配置參數(shù)庫(kù)。由于頻繁更新配置參數(shù)庫(kù)需要消耗一定時(shí)間,會(huì)增大系統(tǒng)開(kāi)銷,因此當(dāng)推薦精度滿足應(yīng)用需求時(shí),不需要頻繁更新配置參數(shù)庫(kù),以提升Ceph 系統(tǒng)性能。貝葉斯優(yōu)化、模擬退火、智能爬山、隨機(jī)搜索等智能算法,其本質(zhì)都是通過(guò)不斷迭代尋優(yōu),這與遺傳算法本質(zhì)相同,只是迭代的方法不一。大量的實(shí)驗(yàn)表明,這些智能算法的最終結(jié)果都在同一數(shù)量級(jí)上。本文采用遺傳算法優(yōu)化電力數(shù)據(jù)存儲(chǔ)Ceph 系統(tǒng)的參數(shù)配置,是參數(shù)選擇配置的一個(gè)中間步驟,不詳細(xì)討論不同智能算法對(duì)參數(shù)選擇性能的影響。
將推薦系統(tǒng)推薦出的配置參數(shù)對(duì)應(yīng)的電力數(shù)據(jù)存儲(chǔ)系統(tǒng)集群性能記為IIOPS,pre,數(shù)據(jù)負(fù)載實(shí)際運(yùn)行的最優(yōu)性能記為IIOPS,real,由遺傳算法尋優(yōu)獲取,使用平均絕對(duì)百分比誤差(mean absolute percentage error,MAPE)測(cè)量推薦準(zhǔn)確度:
為了使推薦系統(tǒng)保持較高的推薦精度并且低頻率地更新配置參數(shù)庫(kù),設(shè)置如下規(guī)則決定是否更新:1)若當(dāng)前數(shù)據(jù)負(fù)載推薦任務(wù)完成時(shí)集群中沒(méi)有等待作業(yè),則調(diào)用MCMC 采樣器以采樣更多的電力數(shù)據(jù)存儲(chǔ)系統(tǒng)配置參數(shù)更新數(shù)據(jù)庫(kù);2)設(shè)定MAPE 的閾值為10%,當(dāng)一個(gè)數(shù)據(jù)負(fù)載推薦的精度大于該閾值時(shí),無(wú)論集群中是否有等待作業(yè),都必須更新電力數(shù)據(jù)存儲(chǔ)系統(tǒng)配置參數(shù)庫(kù)。
測(cè)試環(huán)境由5 臺(tái)服務(wù)器構(gòu)成,模擬真實(shí)情況下的電力數(shù)據(jù)存儲(chǔ)系統(tǒng),其中一臺(tái)作為客戶端節(jié)點(diǎn),其余4 臺(tái)服務(wù)器構(gòu)成OSD 集群,每臺(tái)服務(wù)器中包含3 個(gè)OSD 節(jié)點(diǎn)和1 個(gè)Monitor 節(jié)點(diǎn),每臺(tái)服務(wù)器之間使用萬(wàn)兆局域網(wǎng)卡連接。電力數(shù)據(jù)存儲(chǔ)系統(tǒng)中的Ceph 集群的網(wǎng)絡(luò)拓?fù)鋱D如附錄A 圖A2 所示。
使用Q-learning-MCMC 算法和傳統(tǒng)MCMC 算法各采樣1 000 組參數(shù)配置{f1,f2,…,f1000},在混合負(fù)載下的電力數(shù)據(jù)存儲(chǔ)系統(tǒng)Ceph 集群中測(cè)試出不同參數(shù)配置所對(duì)應(yīng)的集群性能,實(shí)驗(yàn)結(jié)果如附錄A圖A3 所示。從附錄A 圖A3 中可以看出,傳統(tǒng)MCMC 算法采樣出來(lái)的參數(shù)配置所對(duì)應(yīng)的性能集中在750~1 250 之間,而高于電力數(shù)據(jù)存儲(chǔ)系統(tǒng)默認(rèn)性能的參數(shù)配置很少,導(dǎo)致采樣精度過(guò)低;Qlearning-MCMC 算法采樣出來(lái)的參數(shù)配置所對(duì)應(yīng)的性能集中在1 000~2 500 之間,最高性能可達(dá)到4 688,并且大多數(shù)參數(shù)配置所對(duì)應(yīng)的性能要高于電力數(shù)據(jù)存儲(chǔ)系統(tǒng)的默認(rèn)性能。但是Q-learning-MCMC 算法采樣出來(lái)的部分參數(shù)配置對(duì)應(yīng)的參數(shù)性能很低,這是由于Q-learning-MCMC 中的智能體在更新動(dòng)作值函數(shù)Q(s,a)過(guò)程中,選擇了探索策略,隨著采樣組數(shù)的提高,智能體會(huì)選擇使集群性能提高的參數(shù)配置作為最佳路徑去采樣,從而使采樣精度更高。
使用Q-learning-MCMC 算法和傳統(tǒng)MCMC 算法采樣,觀察隨著采樣組數(shù)的不斷提升,2 種采樣算法的采樣精度改變趨勢(shì),結(jié)果如附錄A 圖A4 所示。從整體趨勢(shì)上來(lái)看,隨著采樣組數(shù)的增加,Qlearning-MCMC 算法采樣的參數(shù)所對(duì)應(yīng)的性能百分比不斷上升,其中在2 000 組到4 000 組之間性能提升速率最快,在采樣組數(shù)到達(dá)6 000 時(shí),性能提升百分比逐漸趨向平穩(wěn);而傳統(tǒng)MCMC 算法的性能提升百分比始終維持在一個(gè)較低水平。說(shuō)明Q-learning-MCMC 算法中的智能體在經(jīng)過(guò)一段時(shí)間的采樣策略學(xué)習(xí)后,能夠指導(dǎo)MCMC 選擇能使集群性能更高的參數(shù)配置進(jìn)行采樣,從而使采樣更加智能化。
由于電力物聯(lián)網(wǎng)工作負(fù)載的快速變化,采樣效率對(duì)系統(tǒng)性能有很大影響,在實(shí)際采樣的過(guò)程中,有些參數(shù)狀態(tài)可能會(huì)拒絕轉(zhuǎn)移,從而增加采樣工作量。附錄A 圖A5 為采樣5 000 組參數(shù)配置的樣本分布圖,可以看到較傳統(tǒng)MCMC 算法相比,Qlearning-MCMC 算法采樣所得到的實(shí)際有效樣本點(diǎn)更加密集,即采樣效率更高。
從附錄A 圖A6 可以看出,傳統(tǒng)MCMC 算法的采樣時(shí)間隨采樣組數(shù)增加線性增長(zhǎng),Q-learning-MCMC 算法在采樣1 000 組時(shí)耗時(shí)較多,隨著采樣組數(shù)的增加,采樣時(shí)間趨于平穩(wěn),呈現(xiàn)小幅度上升。這是由于Q-learning-MCMC 算法在剛開(kāi)始采樣時(shí),智能體沒(méi)有找到最優(yōu)采樣策略,從而需要不斷選擇動(dòng)作來(lái)更新動(dòng)作值函數(shù),以此找到最優(yōu)路徑指導(dǎo)MCMC 算法采樣,導(dǎo)致耗時(shí)較多。經(jīng)過(guò)一段時(shí)間的策略選擇后,智能體會(huì)利用之前探索到的最優(yōu)策略,無(wú)須重復(fù)探索,從而使采樣耗時(shí)下降并趨于平穩(wěn)。
在參數(shù)采樣策略的學(xué)習(xí)過(guò)程中,智能體以一個(gè)探索速率ε進(jìn)行動(dòng)作選擇。從附錄A 圖A7 可以看出,在迭代次數(shù)為0~100 時(shí),應(yīng)選取較大的探索速率;在經(jīng)過(guò)一段時(shí)間迭代后,ε=0.2 所對(duì)應(yīng)的獎(jiǎng)勵(lì)累計(jì)值為1 319,ε=0.9 所對(duì)應(yīng)的獎(jiǎng)勵(lì)累計(jì)值為1 015,選取較小探索速率所對(duì)應(yīng)的獎(jiǎng)勵(lì)累計(jì)值要明顯高于大探索速率下的獎(jiǎng)勵(lì)累計(jì)值。這是因?yàn)樵谥悄荏w執(zhí)行動(dòng)作的初始階段,由于不了解Q 函數(shù)中的任何值,故隨機(jī)的探索環(huán)境往往比固定的行為模式要好,隨著智能體對(duì)估算出的Q 值更有把握,智能體將利用之前探索到的較優(yōu)策略,故將逐漸減小探索速率ε。
根據(jù)對(duì)采樣方法的分析,Q-learning-MCMC 算法采樣的電力數(shù)據(jù)存儲(chǔ)系統(tǒng)配置參數(shù)所對(duì)應(yīng)的最高系統(tǒng)性能可達(dá)4 688。與傳統(tǒng)MCMC 算法相比,采樣精度提升了約1.8 倍,并且隨著電力數(shù)據(jù)存儲(chǔ)系統(tǒng)采樣組數(shù)的提升,Q-learning-MCMC 算法的采樣效率要優(yōu)于傳統(tǒng)MCMC 算法。
為了使性能預(yù)測(cè)模型能夠精確地預(yù)測(cè)系統(tǒng)性能,需要確定3.2 節(jié)中的3 個(gè)模 型參數(shù)nt、nl和α,其中nt為構(gòu)建初始組合模型所需要的子模型數(shù)量,nl為子模型回歸樹(shù)中葉子節(jié)點(diǎn)的個(gè)數(shù)。較高的nt值能使性能預(yù)測(cè)模型獲得較高的精度,但也會(huì)導(dǎo)致較長(zhǎng)的模型評(píng)估時(shí)間,nl值越高單個(gè)回歸樹(shù)越復(fù)雜,nl值的大小在一定程度上影響子模型的最終個(gè)數(shù)。
考慮到電力數(shù)據(jù)存儲(chǔ)系統(tǒng)的特殊性,本節(jié)選取網(wǎng)格搜索[27]的方法來(lái)確定nt與nl的最優(yōu)值。通過(guò)對(duì)參數(shù)值進(jìn)行窮舉搜索,利用模型精度作為參數(shù)值選擇的評(píng)分方式,采用5 折交叉驗(yàn)證方法計(jì)算電力數(shù)據(jù)存儲(chǔ)系統(tǒng)的各個(gè)參數(shù)值的平均評(píng)分,選取評(píng)分最高的作為最優(yōu)解。由附錄A 圖A8 可知,當(dāng)nl取19時(shí),模型返回的平均評(píng)分達(dá)到最高。
由附錄A 圖A9 可以看出,隨著回歸樹(shù)個(gè)數(shù)的增多,平均評(píng)分隨之上升,當(dāng)回歸樹(shù)個(gè)數(shù)達(dá)到165時(shí),平均評(píng)分的提升趨于平緩,綜合模型的運(yùn)行成本選取nt值為165。
為了更直觀地了解性能預(yù)測(cè)模型的預(yù)測(cè)性能,選取采樣的樣本集,形成300 組不同的電力數(shù)據(jù)存儲(chǔ)系統(tǒng)配置參數(shù),以IOPS 值作為性能指標(biāo),運(yùn)行Ceph 集群觀察電力數(shù)據(jù)存儲(chǔ)系統(tǒng)性能變化,實(shí)驗(yàn)結(jié)果見(jiàn)附錄A 圖A10。結(jié)果表明,當(dāng)配置參數(shù)改變時(shí),Ceph 集群性能隨之發(fā)生顯著變化,且電力數(shù)據(jù)存儲(chǔ)系統(tǒng)配置參數(shù)與集群性能呈非線性關(guān)系。
選用其中電力數(shù)據(jù)存儲(chǔ)系統(tǒng)集群性能變化趨勢(shì)波動(dòng)大、數(shù)值變化明顯的數(shù)據(jù),利用基于HM 的性能預(yù)測(cè)模型預(yù)測(cè)相應(yīng)配置參數(shù)下的集群性能(IOPS),模型預(yù)測(cè)過(guò)程如附錄A 圖A11 所示。從整體趨勢(shì)看,分層性能預(yù)測(cè)模型能較好地預(yù)測(cè)集群性能,并能及時(shí)反映實(shí)測(cè)性能值的變化趨勢(shì)。
為了驗(yàn)證分層性能預(yù)測(cè)模型對(duì)于電力數(shù)據(jù)存儲(chǔ)系統(tǒng)領(lǐng)域的優(yōu)劣性,本文采用SVR、RF、人工神經(jīng)網(wǎng)絡(luò)(ANN)等復(fù)雜單個(gè)模型分別預(yù)測(cè)Ceph 集群性能。選取附錄A 圖A10 中性能連續(xù)發(fā)生波動(dòng)、差異較大的數(shù)據(jù)區(qū)域,將分層模型和單個(gè)預(yù)測(cè)模型進(jìn)行對(duì)比。幾種單個(gè)模型在所選數(shù)據(jù)區(qū)域的預(yù)測(cè)過(guò)程如附錄A 圖A12 所示。
從附錄A 圖A12 可以看出,在配置參數(shù)第4 組至第13 組的數(shù)據(jù)區(qū)域中,實(shí)測(cè)值的峰值發(fā)生連續(xù)驟變,而單個(gè)模型的預(yù)測(cè)值僅在第4 組至第7 組配置參數(shù)數(shù)據(jù)區(qū)域跟上實(shí)測(cè)值的變化,在第8 組至第13 組配置參數(shù)數(shù)據(jù)區(qū)域上預(yù)測(cè)值趨向平緩,沒(méi)有及時(shí)跟隨實(shí)測(cè)值上升和下降,在第15 組至第22 組配置參數(shù)數(shù)據(jù)區(qū)域上,單個(gè)模型預(yù)測(cè)值存在明顯振蕩,且嚴(yán)重滯后于實(shí)測(cè)值的變化趨勢(shì)。
基于配置參數(shù)特征的高維非線性特性,HM 通過(guò)組合多個(gè)簡(jiǎn)單模型進(jìn)行性能預(yù)測(cè),與復(fù)雜單個(gè)預(yù)測(cè)模型相比,HM 不會(huì)因?yàn)閷?shí)測(cè)性能的驟變而出現(xiàn)突變與振蕩,其性能預(yù)測(cè)較為穩(wěn)定。
不同工作負(fù)載下,電力數(shù)據(jù)存儲(chǔ)系統(tǒng)Ceph 集群的最優(yōu)配置參數(shù)也發(fā)生改變。為了驗(yàn)證不同負(fù)載下性能預(yù)測(cè)模型的預(yù)測(cè)性能,使用filebench 仿真fileserver 應(yīng) 用 程 序,生 成4 KB 隨 機(jī) 讀 和512 KB 順序讀2 種負(fù)載。利用HM 模型和單個(gè)回歸預(yù)測(cè)模型(MLR、SVR、RF、ANN)分別在2 種工作負(fù)載下預(yù)測(cè)集群性能,統(tǒng)計(jì)指標(biāo)。采用均方根誤差(RMSE)和R 平方(R2)作為預(yù)測(cè)性能的評(píng)價(jià)指標(biāo)。其中RMSE 的值越小,表明模型預(yù)測(cè)效果越好,但RMSE 值對(duì)異常點(diǎn)較為敏感,若預(yù)測(cè)模型中對(duì)某個(gè)點(diǎn)的預(yù)測(cè)值很不合理,則誤差較大;R2 通常取值范圍為[0,1],越接近1 表明模型預(yù)測(cè)性能越好,越接近0 表明模型擬合效果越差,實(shí)驗(yàn)結(jié)果見(jiàn)附錄A表A4。
在2 種負(fù)載下MLR 方法預(yù)測(cè)效果最差,因?yàn)樗鼘㈦娏?shù)據(jù)存儲(chǔ)系統(tǒng)配置參數(shù)特征視為線性的,而實(shí)際配置參數(shù)呈現(xiàn)非線性關(guān)系;ANN 建模方法在2 種工作負(fù)載下的R2 和RMSE 值相差較大,其預(yù)測(cè)魯棒性較差、預(yù)測(cè)結(jié)果不穩(wěn)定;HM 的R2 值最接近1 且RMSE 值最小,說(shuō)明HM 預(yù)測(cè)性能要優(yōu)于其他建模方法。
在電力數(shù)據(jù)存儲(chǔ)系統(tǒng)中通過(guò)模型對(duì)比分析可以發(fā)現(xiàn),HM 性能模型的預(yù)測(cè)誤差要明顯小于現(xiàn)有的性能預(yù)測(cè)模型,并且能夠及時(shí)反映電力數(shù)據(jù)存儲(chǔ)系統(tǒng)的性能變化,在4 KB 隨機(jī)讀和512 KB 順序讀2 種負(fù)載下,HM 模型的RMSE 值分別為205.472和214.327,與現(xiàn)有算法中性能最好的SVR 模型相比,預(yù)測(cè)精度提升了約12.95%。
為了衡量在電力數(shù)據(jù)存儲(chǔ)系統(tǒng)條件下數(shù)據(jù)負(fù)載分布識(shí)別效果,選取I/O 請(qǐng)求在驅(qū)動(dòng)和硬件上所消耗的時(shí)間(D2C)和平均每個(gè)I/O 請(qǐng)求所消耗的時(shí)間(Q2C)作為指標(biāo),計(jì)算2 個(gè)階段下不同閾值所對(duì)應(yīng)的曲線下面積(AUC)值,從而選取最優(yōu)閾值。實(shí)驗(yàn)的最終結(jié)果如附錄A 圖A13 和圖A14 所示。
從附錄A 圖A13 和圖A14 可以看出,隨著閾值的變化,電力數(shù)據(jù)存儲(chǔ)系統(tǒng)負(fù)載分布識(shí)別準(zhǔn)確率會(huì)出現(xiàn)明顯波動(dòng),并且D2C 和Q2C 的變化趨勢(shì)相似,在閾值為0.3 時(shí)準(zhǔn)確率達(dá)到最高。
利用基于評(píng)分函數(shù)的協(xié)同過(guò)濾(score-CF)算法和基于相似度的協(xié)同過(guò)濾(sim-CF)算法分別為電力數(shù)據(jù)存儲(chǔ)系統(tǒng)混合負(fù)載下的Ceph 集群推薦配置參數(shù),在不同組數(shù)候選配置參數(shù)下所對(duì)應(yīng)的2 種算法推薦集群性能如附錄A 圖A15 所示。從圖A15可以看出,本文提出的score-CF 算法所推薦的配置參數(shù)對(duì)應(yīng)性能要優(yōu)于sim-CF 算法,說(shuō)明在電力數(shù)據(jù)存儲(chǔ)系統(tǒng)數(shù)據(jù)負(fù)載相似度計(jì)算過(guò)程中,加入集群性能影響因素能夠有效提升推薦系統(tǒng)的推薦精度。
為了驗(yàn)證不同電力數(shù)據(jù)存儲(chǔ)系統(tǒng)工作負(fù)載下推薦系統(tǒng)的推薦精度,本文利用score-CF 算法和sim-CF 分別為5 種不同工作負(fù)載推薦配置參數(shù),具體實(shí)驗(yàn)結(jié)果見(jiàn)附錄A 表A5。從整體上看,加入集群性能影響因素的score-CF 算法推薦精度要優(yōu)于sim-CF算法,且score-CF 算法的MAPE 值均小于10%,滿足集群性能工作需求,而sim-CF 算法須不斷更新電力數(shù)據(jù)存儲(chǔ)系統(tǒng)配置參數(shù)庫(kù),增加系統(tǒng)運(yùn)行復(fù)雜度。
為了評(píng)估推薦系統(tǒng)的推薦效率,將黑盒參數(shù)調(diào)優(yōu)方法(加入性能預(yù)測(cè)模型)和DACR 方法進(jìn)行對(duì)比。在電力數(shù)據(jù)存儲(chǔ)系統(tǒng)不同配置參數(shù)組數(shù)下,2 種方法搜索最優(yōu)配置參數(shù)的耗時(shí)對(duì)比如附錄A 圖A16 所示。從整體上看,DACR 找出最優(yōu)配置參數(shù)的耗時(shí)要明顯低于黑盒參數(shù)調(diào)優(yōu)方法,說(shuō)明推薦系統(tǒng)能夠在一定程度上減少尋優(yōu)耗時(shí),并在短時(shí)間內(nèi)針對(duì)快速變化的數(shù)據(jù)負(fù)載推薦出合適配置參數(shù)。
通過(guò)對(duì)于電力數(shù)據(jù)存儲(chǔ)系統(tǒng)參數(shù)調(diào)優(yōu)分析,score-CF 算法在不同推薦組數(shù)下的推薦精度均要高于sim-CF 算法,且在5 種不同數(shù)據(jù)負(fù)載下的推薦誤差分別為7.4%、4.9%、6.2%、7.1%和5.2%,滿足電力數(shù)據(jù)采集系統(tǒng)的運(yùn)行要求。在參數(shù)推薦效率上,本文推薦系統(tǒng)耗時(shí)也要明顯低于現(xiàn)有的黑盒參數(shù)調(diào)優(yōu)方法。
本文對(duì)電力數(shù)據(jù)存儲(chǔ)系統(tǒng)中Ceph 分布式儲(chǔ)存系統(tǒng)配置參數(shù)自動(dòng)調(diào)優(yōu)問(wèn)題進(jìn)行研究,聚焦于電力物聯(lián)網(wǎng)設(shè)備狀態(tài)數(shù)據(jù)、用戶用電數(shù)據(jù)以及電網(wǎng)運(yùn)營(yíng)等海量邊緣數(shù)據(jù)的存儲(chǔ)問(wèn)題。從配置參數(shù)智能采樣、集群性能預(yù)測(cè)模型建立和數(shù)據(jù)負(fù)載感知自適應(yīng)參數(shù)推薦3 個(gè)方面自適應(yīng)調(diào)整電力數(shù)據(jù)存儲(chǔ)系統(tǒng)中CPU、內(nèi)存、存儲(chǔ)等相關(guān)配置參數(shù),從而提升動(dòng)態(tài)、復(fù)雜電網(wǎng)數(shù)據(jù)的處理能力。通過(guò)建立HM 性能模型減小預(yù)測(cè)誤差,及時(shí)反映系統(tǒng)的性能變化,比現(xiàn)有SVR 算法預(yù)測(cè)精度提升了12.95%。本方法在推薦參數(shù)方面同樣有較好的提升,在不同推薦組數(shù)下的推薦精度均要高于sim-CF 算法,能夠滿足電力數(shù)據(jù)采集系統(tǒng)的運(yùn)行要求。在電力數(shù)據(jù)存儲(chǔ)系統(tǒng)參數(shù)推薦效率上,DACR 耗時(shí)也要明顯低于現(xiàn)有的黑盒參數(shù)調(diào)優(yōu)方法,可以廣泛應(yīng)用于如今的電力數(shù)據(jù)存儲(chǔ)系統(tǒng)中。
本文主要貢獻(xiàn)如下:
1)對(duì)被廣泛使用的強(qiáng)化學(xué)習(xí)進(jìn)行調(diào)整,融入符合電力數(shù)據(jù)變化背景的MCMC 采樣方法,與原始的MCMC 算法進(jìn)行實(shí)驗(yàn)比較,采樣精度提升了約1.8倍,并且隨著采樣組數(shù)的增加,Q-learning-MCMC算法的采樣效率要優(yōu)于傳統(tǒng)MCMC 算法。
2)針對(duì)Ceph 集群運(yùn)行應(yīng)用程序時(shí)間過(guò)長(zhǎng)的問(wèn)題,提出一種HM 性能預(yù)測(cè)模型,通過(guò)多個(gè)簡(jiǎn)單子模型的合作來(lái)提高預(yù)測(cè)模型的精度和魯棒性。實(shí)驗(yàn)表明,HM 性能模型的預(yù)測(cè)誤差明顯小于現(xiàn)有的性能預(yù)測(cè)模型。
3)針對(duì)電力物聯(lián)網(wǎng)快速變化的數(shù)據(jù)負(fù)載,使用blktrace 工具抓取不同數(shù)據(jù)負(fù)載下的I/O 信息,快速識(shí)別邊緣物聯(lián)網(wǎng)數(shù)據(jù)類型分布,提出一種基于評(píng)分差異的配置參數(shù)推薦方法,結(jié)合負(fù)載相似度與集群性能2 種指標(biāo)共同搜索最優(yōu)參數(shù)。通過(guò)實(shí)驗(yàn)可知,score-CF 算法滿足電力數(shù)據(jù)采集系統(tǒng)的運(yùn)行要求。
附錄見(jiàn)本刊網(wǎng)絡(luò)版(http://www.aeps-info.com/aeps/ch/index.aspx),掃英文摘要后二維碼可以閱讀網(wǎng)絡(luò)全文。