劉錦輝,易必杰,張 昊
(西安電子科技大學 計算機科學與技術(shù)學院,陜西 西安 710071)
霧計算[1]是從云計算演化來的一種計算范式。作為云計算的延伸,霧計算的算力由云端下沉至靠近物聯(lián)網(wǎng)設備的邊緣側(cè),從而有效降低服務的傳輸延遲,保障服務質(zhì)量。霧計算環(huán)境通常是由高性能嵌入式板卡組成的異構(gòu)計算集群。一方面,由于底層硬件架構(gòu)的差異性,霧計算環(huán)境中的資源很難像云計算那樣進行統(tǒng)一管理。另一方面,由于嵌入式計算資源算力受限,服務在霧計算層不同的映射放置策略,對霧計算層設備的資源利用率影響巨大。因此,研究在霧計算環(huán)境中如何合理部署服務,高效利用嵌入式設備上有限的異構(gòu)資源,已成為學術(shù)界與產(chǎn)業(yè)界的研究熱點。
針對分布式計算協(xié)作問題,文獻[2]采用基于動態(tài)規(guī)劃的策略不僅可以有效降低系統(tǒng)服務延遲,同時還可以提高資源利用率。為保證訪問頻繁的服務盡可能靠近用戶,文獻[3]提出一種分布式服務放置策略,有效改善了服務的網(wǎng)絡使用和延遲。文獻[4]將應用請求建模為有向無環(huán)圖(Directed Acycline Graph,DAG),分別設計在線和離線兩種策略,期望在截止期限內(nèi)完成更多的任務請求。文獻[5]提出的服務管理策略在滿足了不同服務交付延遲的同時顯著提高了系統(tǒng)性能?,F(xiàn)有研究主要考慮服務質(zhì)量(Quality of Service,QoS),較少涉及嵌入式資源異構(gòu)性及資源利用率[6]。然而在資源受限環(huán)境下,有效提高異構(gòu)計算資源利用率是提升霧環(huán)境服務承載能力的關(guān)鍵。因此在霧環(huán)境中,有必要研究一種基于嵌入式異構(gòu)資源利用率的服務放置策略。
筆者提出了一種面向霧計算應用的服務放置策略,在確保服務質(zhì)量的同時,充分考慮異構(gòu)資源利用率。實驗結(jié)果表明,與基于請求率策略和iFogSim默認策略相比,筆者提出的策略在系統(tǒng)異構(gòu)資源利用率方面分別提高了約10.7%和28.7%。
如圖1所示,采用一種通用系統(tǒng)架構(gòu)描述霧計算環(huán)境,整體分為3層:云層、霧層和用戶層。云層是由大型服務器構(gòu)成的計算集群,位于整個架構(gòu)的最上層。
圖1 霧計算系統(tǒng)架構(gòu)
霧層主要由各種嵌入式計算設備組成,位于用戶和云之間,主要為延遲敏感的應用提供部署環(huán)境,對用戶請求做出快速響應。根據(jù)霧層設備與用戶間的物理距離不同,將霧層設備細分為多個子層,越靠近用戶側(cè)的子層網(wǎng)絡延遲越小,同一子層內(nèi)的設備間網(wǎng)絡通信開銷明顯低于跨層網(wǎng)絡通信開銷。用戶層與用戶直接交互,向上層發(fā)送收集到的數(shù)據(jù),同時接收上層處理后的返回結(jié)果。
針對霧層中微服務的放置問題,如果在建模過程中僅考慮服務質(zhì)量指標,就無法充分利用霧層設備上的資源,造成霧層設備資源利用率下降。因此,考慮資源約束條件下的任務分配問題是更符合霧計算環(huán)境的[7]。
基于微服務的設計思想,將應用程序建模為一組服務集合,服務間的調(diào)用關(guān)系以有向無環(huán)圖的形式表示。霧層設備資源利用率模型構(gòu)建如下。
(1)
其中,d(k)表示用戶k訪問的設備到云層的路徑上的設備集合。
(2)
(3)
假定霧層中的設備集合為F,設備數(shù)量為|F|,則系統(tǒng)X類型的資源利用率ηX為所有設備利用率的算術(shù)平均值:
(4)
在考慮多種資源的情況下,無法保證n種資源利用率均最大化[8]。因此,通過一種加權(quán)平均方法綜合考慮各種資源的利用率。按上述模型計算系統(tǒng)每種類型資源的利用率,為每種資源設置權(quán)重,且權(quán)重之和為1:
wcpu+wmem+wbw+wgpu+wfpga=1 。
(5)
(6)
(7)
(8)
(9)
(10)
(11)
基于以上分析,定義系統(tǒng)平均異構(gòu)資源利用率ηavg為所有類型資源利用率的加權(quán)平均,服務放置策略的求解目標即為最大化系統(tǒng)平均資源利用率:
(12)
為了同時保證服務質(zhì)量指標與霧層設備的資源利用率,服務放置時首選霧層中最靠近用戶側(cè)的子層[9]。圖2展示了服務放置位置的決策流程。
圖2 算法流程圖
在設備Di資源充足時,則直接在其上放置服務Mx,否則需要比較直接在新的設備放置服務與遷移設備Di上已有服務來滿足服務Mx放置需求這兩種策略的資源利用率,確定放置決策。具體地,算法1描述了基于系統(tǒng)異構(gòu)資源利用率設計服務放置策略。
算法1基于嵌入式異構(gòu)資源的服務放置策略。
輸入:微服務服務Mx,嵌入式設備Di。
輸出:服務Mx放置操作a。
① ifMx?Ms
③a(Mx,Di);
⑤a(Mx,f(Di));
⑥ else
⑦ forM∈Ms
⑧ 計算CsubDi,M并加入到o(Di);
⑨ forCsubDi,Mino(Di)
⑩ 計算Ravg,M;
算法1的整體過程是確定一個服務Mx是否放置在設備Di上。當設備Di上剩余的可用資源已不能滿足服務Mx的資源請求時,則考慮重新放置設備Di上已部署的其他服務,從而使得Di上的資源可用量達到服務Mx的要求。算法1以最大化霧層設備資源利用率為目標,不斷衡量通過重新放置其他服務來保證Mx放置到設備Di上的策略與直接將服務Mx放置到上層設備的策略的優(yōu)劣關(guān)系,確定最佳服務放置策略。
具體地,算法1的輸入為當前待放置的服務Mx和放置目標設備Di。算法1第1行到第5行中,嘗試將Mx放置到Di上。當且僅當Di上已經(jīng)放置的服務列表Ms中不包含Mx時,策略才會考慮服務放置請求。如果Di是云層的設備,或者Di當前資源可用量可以滿足Mx請求資源量時,則直接將Mx放置到Di上。如果Mx請求資源量大于Di資源總量,則直接將服務Mx放置在Di的上層設備f(Di),并開始新一輪的策略循環(huán)。
若上述決策均未執(zhí)行,則執(zhí)行算法1的第6行到第12行,對Ms中的所有服務計算傳遞閉包,并對傳遞閉包與Ms交集計算平均資源利用率。需要考慮選擇當前設備Di上合適的服務集合進行重新放置,以釋放足夠的資源空間放置Mx。如上文所述,首先需要計算Di上的每個服務對應的傳遞閉包T(M)。由于此時T(M)中的服務不一定都在Di上,因此還需要和Ms求交集,得到CsubDi,M集合;該集合表示當需要遷移某個服務M時需要一起進行遷移的服務集合。對每個CsubDi,M進行判斷,是否真正需要遷移以釋放資源,取決于CsubDi,M中服務的平均資源請求量。具體而言,需要先計算當前集合CsubDi,M的平均資源占用量Ravg,M,該值用于表示根據(jù)服務請求率和資源請求量綜合之后得到的對比指標;最后按照Ravg,M對所有集合排序得到o(Di)。
使用Xilinx的ZCU102嵌入式平臺作為硬件測試環(huán)境,通過Petalinux2018.3編譯生成系統(tǒng)啟動文件[10]。然后通過Kuberbetes設備插件設計實現(xiàn)在ZCU102上容器化環(huán)境中的資源發(fā)現(xiàn),為服務在嵌入式設備上的放置與執(zhí)行提供容器化執(zhí)行環(huán)境[11]。
使用iFogSim框架構(gòu)建霧計算環(huán)境[12]。該框架支持創(chuàng)建分層的體系結(jié)構(gòu)、分布式應用程序的建模以及基于性能指標評估調(diào)度策略。實驗中使用的環(huán)境參數(shù)參考文獻[3],如表1所示。
表1 環(huán)境參數(shù)對照表
本節(jié)通過改變環(huán)境參數(shù)構(gòu)建不同場景,并針對應用程序數(shù)量、網(wǎng)絡層數(shù)等對比指標設計實驗[13]。筆者提出的基于異構(gòu)資源利用率的服務放置策略,在結(jié)果中表示為Resource,以下簡稱R策略。實驗中與之對比的另外兩種策略如下:
Popularity:以下簡稱P策略,文獻[3]中提出的基于請求率的服務放置策略,核心思想是將請求率較高的服務盡可能放置在靠近用戶層的設備上。
Edgewards:以下簡稱E策略,或iFogSim默認策略[14]。該策略盡量將服務放置在靠近用戶層的設備上,與P策略的不同在于僅通過CPU的資源消耗量決定服務的放置。
2.2.1 異構(gòu)資源利用率對比
本小節(jié)分別對比不同參數(shù)下3種策略的異構(gòu)資源利用率的實驗情況,并給出簡要分析。
應用程序數(shù)量:參數(shù)A表示應用程序的數(shù)量,這一參數(shù)在實驗環(huán)境中表示為連接到某一網(wǎng)關(guān)上的傳感器數(shù)量。實驗結(jié)果如圖3所示。
圖3 資源利用率隨應用程序數(shù)量變化情況
由于設備資源有限,過多請求會導致霧層設備資源消耗接近飽和狀態(tài),無法處理新到來的放置請求,此時請求將直接被發(fā)送到云層處理。因此隨著A數(shù)量不斷增加,霧層設備整體資源利用率會趨于穩(wěn)定[15]。實驗結(jié)果表明,筆者提出的R策略的霧層設備資源利用率明顯高于另外兩種策略。原因在于P策略將請求率較低的服務放置在距離云層更近的霧層設備上,服務分布較為分散,從而導致資源利用率較低;E策略將服務更多地放置在距離用戶層更近的霧層設備上以滿足服務靠近用戶的要求,因此資源利用率隨著A增加而上升。
網(wǎng)絡層數(shù):霧層設備資源利用率隨網(wǎng)絡層數(shù)的變化如圖4所示。由于傳入的A數(shù)量保持不變,所以對于霧層設備資源利用率的影響較小。R策略在保障請求率的基礎上考慮了資源利用率,因此整體利用率略高于P策略;由于P策略和R策略使用類似于廣度優(yōu)先遍歷的策略搜索設備,盡量將服務放置到同層的其他設備上,因此激活的設備數(shù)量受層數(shù)變化影響較??;而E策略采用類似深度優(yōu)先策略,服務被放置到多層設備上,從而導致霧層的資源利用率較低。
圖4 資源利用率隨網(wǎng)絡層數(shù)變化情況
路由節(jié)點數(shù)量:霧層設備資源利用率隨路由節(jié)點數(shù)量變化如圖5所示。路由節(jié)點數(shù)量參數(shù)Lchildrendevices增加會導致A數(shù)量增加。R策略隨路由節(jié)點數(shù)量增加,霧層設備資源利用率上升,在路由節(jié)點數(shù)量為8時趨于穩(wěn)定。相較之下,另外兩種策略利用率變化不明顯,路由節(jié)點數(shù)量為3時就已經(jīng)趨向穩(wěn)定,原因在于E策略是一種縱向放置決策,受橫向擴展的參數(shù)變化影響不明顯;而P策略將服務分為高低兩種請求率,服務放置較為分散,因此橫向擴展后,雖然A數(shù)量增加,但是對應同一層的設備數(shù)量也隨之增加,因此P策略的資源利用率略高于E策略,但低于將服務放置更緊密的R策略。
圖5 資源利用率隨路由節(jié)點數(shù)變化情況
2.2.2 網(wǎng)絡帶寬占用對比
根據(jù)文獻[3],定義網(wǎng)絡帶寬占用為每個請求大小與設備間網(wǎng)絡延遲乘積之和,單位為字節(jié)。網(wǎng)絡帶寬占用隨網(wǎng)絡層數(shù)變化情況如圖6所示。實驗結(jié)果中,3種策略表現(xiàn)出來的整體變化趨勢一致,即隨著網(wǎng)絡層數(shù)增加,設備之間網(wǎng)絡帶寬占用也隨之增加。然而,筆者提出的R策略在同樣的實驗環(huán)境下,霧層設備網(wǎng)絡帶寬占用明顯較低,原因在于R策略較于另外兩種策略,會將服務更緊密放置在同一層,避免不同層間頻繁通信。因此,設備之間延遲受網(wǎng)絡層數(shù)變化影響相對較小,網(wǎng)絡帶寬占用更低。
圖6 網(wǎng)絡帶寬占用隨網(wǎng)絡層數(shù)量變化情況
對3種服務放置策略進行實驗對比,實驗結(jié)果說明筆者提出放置策略在降低網(wǎng)絡帶寬占用的同時提高了霧層設備資源利用率。如表2所示,筆者提出的R策略在不同場景均表現(xiàn)出較高的資源利用率,相比其他兩種策略分別平均提高約 10.7% 和28.7%。在網(wǎng)絡帶寬占用對比實驗中,隨著網(wǎng)絡層數(shù)不斷增加,R策略相比其他策略在網(wǎng)絡帶寬占用上大幅度降低。
表2 實驗結(jié)果匯總
通過設計針對異構(gòu)資源利用率的服務放置策略,在保證服務質(zhì)量的前提下,有效地提高了嵌入式資源的利用率。通過與基于請求率的策略和iFogSim默認策略進行對比,筆者提出的策略在同樣的霧計算環(huán)境下,在提高霧層設備資源利用率的同時有效地降低了網(wǎng)絡帶寬占用。