岑伯維,蔡澤祥,胡凱強,武志剛,陳元櫸,康逸群
(華南理工大學電力學院,廣東省廣州市510641)
隨著物聯(lián)網(wǎng)技術與智能配電網(wǎng)的深度融合,海量節(jié)點的接入與數(shù)據(jù)的爆發(fā)式增長[1-2],對配電終端數(shù)據(jù)處理和多元化業(yè)務服務的能力提出了更高的要求[3-4]。傳統(tǒng)配電終端的軟硬件強耦合架構和計算資源冗余配置的方式難以適應新的需求[5-6],電力自動化技術體系面臨重構[7]?;凇霸乒苓叾恕奔軜嫷碾娏ξ锫?lián)網(wǎng)技術是實現(xiàn)海量異構信息感知和高效處理、提供配電網(wǎng)多元化業(yè)務服務的有效手段[8],成為下一代電力自動化系統(tǒng)的發(fā)展方向[9-10]。
邊緣計算是電力物聯(lián)網(wǎng)技術架構中的關鍵技術[11],通過軟件定義的方式實現(xiàn)軟硬件解耦和服務功能的多元化[12]。邊緣計算在變革了基于嵌入式技術傳統(tǒng)終端的“一機一功能”模式[13-14]的同時,實現(xiàn)了計算資源的優(yōu)化配置和動態(tài)調度[15]。終端業(yè)務的計算負荷建模和定量分析是實現(xiàn)其計算資源優(yōu)化配置和動態(tài)調度的基礎,需要對業(yè)務的時序邏輯及業(yè)務所需計算資源進行刻畫。不同業(yè)務、同一業(yè)務的不同時序邏輯以及不同的終端架構均是影響邊緣計算終端計算資源配置的重要因素。邊緣計算終端業(yè)務的計算負荷建模是分析這些影響因素和刻畫邊緣計算終端計算資源需求的基礎。因此,研究邊緣計算終端業(yè)務的計算負荷建模方法具有重要意義。
目前,學者們已對業(yè)務計算負荷模型開展了相關的研究。文獻[16]提出了業(yè)務的計算負荷可分解性,即將一個業(yè)務分解成多個子任務,再以通信和計算資源配置成本最低為目標,將子任務分配到合適的計算節(jié)點執(zhí)行。文獻[17]采用無量綱值表示一個業(yè)務的份額大小,將業(yè)務分解成多個不等份額的子任務后分配到云-邊的計算節(jié)點執(zhí)行。文獻[18]指出現(xiàn)有業(yè)務分解方法忽視了子任務之間的依賴關系,認為各子任務間是相互獨立的。然而實際中業(yè)務所含的子任務并非相互獨立??紤]到子任務之間的聯(lián)系,部分學者采用無環(huán)有向圖來描述各子任務的邏輯關系[19-20]?,F(xiàn)有研究所采用的業(yè)務計算負荷模型不統(tǒng)一,其形式由具體的研究場景確定。目前,學者們多數(shù)以任務卸載為場景開展研究,鮮有文獻從邊緣計算終端計算資源配置的角度出發(fā)討論和建立計算負荷模型,在計算負荷建模中未重視業(yè)務時序邏輯與邊緣計算終端架構的影響。
本文提出的邊緣計算終端業(yè)務的時序邏輯與計算負荷建模方法,考慮業(yè)務的時序邏輯,構建業(yè)務的時序邏輯圖。結合邊緣計算終端架構和業(yè)務時序邏輯圖,構建業(yè)務的計算負荷模型,為邊緣計算終端業(yè)務的邏輯設計和計算資源的合理配置提供分析的手段和依據(jù)。
邊緣計算終端具有容器啟停、計算資源分配和回收的機制。這些機制在支撐著業(yè)務時序邏輯實現(xiàn)的同時,也提高了計算資源的利用率。與基于嵌入式技術的傳統(tǒng)配電終端冗余配置計算資源的方式不同,邊緣計算終端的計算資源配置受業(yè)務時序邏輯與邊緣計算終端架構的影響。其中,業(yè)務時序邏輯影響業(yè)務對邊緣計算終端在不同時段內的計算資源需求,而邊緣計算終端架構影響計算資源的配置方式。
為了提高邊緣計算終端配置的經(jīng)濟性和計算資源的利用率,需要對邊緣計算終端業(yè)務進行描述。
1.1.1 時序邏輯關系
一個邊緣計算終端業(yè)務由一個或多個子任務構成,當業(yè)務包含的所有子任務執(zhí)行完畢后,該業(yè)務服務也隨之完成。根據(jù)電力自動化系統(tǒng)的功能特性,將子任務分成采集類、分析類和控制類3 種。
子任務間的時序邏輯關系分為串行關系和并行關系2 種。串行關系表示2 個子任務間存在運算結果的依賴性,即后一個子任務的進行依賴于前一個子任務的結果。并行關系表示2 個子任務間不存在結果依賴性,2 個子任務可以同時進行且互不影響。
本文考慮子任務間的串行和并行關系,抽象出孤立型、串聯(lián)型、并聯(lián)型和復合型4 種連接關系。為了方便闡述,將連接關系稱為支路,定義4 種支路的組成規(guī)則如下。
規(guī)則1:所有的單一子任務原則上可視為一個孤立支路,而并聯(lián)支路、串聯(lián)支路和復合支路可由多個孤立支路構成。
規(guī)則2:并聯(lián)支路由2 個及以上的孤立支路并聯(lián)而成。
規(guī)則3:串聯(lián)支路只存在于復合支路中,且由2 個及以上的孤立支路串聯(lián)而成。
規(guī)則4:復合支路上至少存在一個串聯(lián)支路,可由串聯(lián)支路和孤立支路并聯(lián)而成。
1.1.2 業(yè)務時序邏輯圖
在前述的業(yè)務與子任務的關系和子任務間時序邏輯關系的基礎上,依據(jù)本文定義的支路組成規(guī)則,構建業(yè)務的時序邏輯圖。對于計算負荷模型,本文將以如圖1 所示的業(yè)務時序邏輯圖為例進行闡述。圖1 的業(yè)務時序邏輯是參照電價型負荷響應業(yè)務流程繪制的,各子任務編號對應的子任務名稱如附錄A 表A1 所示。
圖1 業(yè)務時序邏輯示意圖Fig.1 Schematic diagram of ussiness sequential logic
在圖1 中,使用3 種不同底色的框圖標識不同類型的子任務,使用箭頭和不同類型支路表示各子任務執(zhí)行的時序邏輯關系。
邊緣計算終端架構為業(yè)務時序的正常執(zhí)行提供了支撐和機制,可從容器生命周期、基于Cgroups 的計算資源分配、容器數(shù)據(jù)交互方式和操作系統(tǒng)的支持能力4 個方面進行論述。
1.2.1 容器生命周期
容器生命周期包括容器的初始化、初始化檢測、容器啟動、容器運行、容器暫停、就緒監(jiān)測和生存監(jiān)測7 個環(huán)節(jié)。這些環(huán)節(jié)的時序關系如附錄A 圖A1所示。其中,就緒監(jiān)測指在容器運行一定的時間后,顯示容器狀態(tài)是否已正常運行且可訪問;生存監(jiān)測指容器是否正常工作,若出現(xiàn)異常則重啟或刪除容器。本文主要關注容器生命周期中的容器運行環(huán)節(jié)并假設所有容器都能正常運行。由于其余環(huán)節(jié)的持續(xù)時間較短,在業(yè)務計算負荷建模過程中可忽略不計。
由附錄A 圖A1 可知,多個容器的運行具有獨立性。在同一時間軸上,容器有串行運行和并行運行2 種關系。這種性質與前述的業(yè)務時序邏輯具有共通性。因此,基于容器虛擬化技術的邊緣計算終端架構為子任務的分時執(zhí)行和計算資源的高效利用提供了有效支撐。
1.2.2 基于Cgroups 的容器計算資源分配
Linux 的命名空間和控制組Cgroups 提供了一種封裝系統(tǒng)資源的手段,使每個容器都擁有獨立的計算資源[21]。Cgroups 包含的主要子系統(tǒng)及其功能如附錄A 表A2 所示。本文所研究的計算資源包括CPU 資源、內存資源和網(wǎng)絡帶寬資源。通過這些子系統(tǒng)可實現(xiàn)容器計算資源的分配和控制。容器所擁有的計算資源決定了容器內子任務執(zhí)行的效率,從而影響業(yè)務的服務質量。
1.2.3 容器數(shù)據(jù)交互方式
目前,主要的虛擬化技術包括虛擬機技術、容器技術和虛擬機容器混合技術3 類。隨著虛擬化技術的不斷發(fā)展,虛擬機技術與容器技術的應用場景不再與云計算和邊緣計算綁定[22]。
與虛擬機相比,容器最大的優(yōu)勢在于容器是輕量級的,容器的創(chuàng)建、啟動和關閉的耗時與虛擬機相比可忽略不計[23-24],但容器的安全性和隔離性能不如虛擬機。為了結合這2 種虛擬化技術的優(yōu)勢,業(yè)界已對虛擬機容器混合技術進行了長時間的探索和嘗試,最終形成了以KataContainer 為代表的解決方案[25]??紤]電力系統(tǒng)對數(shù)據(jù)安全性和可靠性的極高要求,本文研究的邊緣計算終端架構是建立在虛擬機容器混合技術的基礎上。
常用的容器間的通信方式有共享內存機制和Docker0 網(wǎng)橋[26]。本文關注業(yè)務時序邏輯與計算負荷建模方法,因此,選取Docker0 網(wǎng)橋和虛擬交換機作為邊緣計算終端架構中的虛擬網(wǎng)絡設備。容器數(shù)據(jù)交互方式如附錄A 圖A2 所示。
本文將構建的虛擬機稱為容器系統(tǒng)。容器系統(tǒng)的CPU、內存和網(wǎng)絡帶寬資源由物理機分配,容器的資源由容器系統(tǒng)分配。每個應用軟件負責完成相應的子任務并部署于容器系統(tǒng)中。
通過將網(wǎng)絡接口配置于容器和docker0 網(wǎng)橋,實現(xiàn)容器在同一容器系統(tǒng)內的通信。若進行跨容器系統(tǒng)通信,則需要額外經(jīng)過虛擬交換機進行轉發(fā);若進行邊緣計算終端外部通信,則還應轉發(fā)至物理網(wǎng)卡。通過這種容器數(shù)據(jù)交互方式,各子任務的執(zhí)行結果得以傳遞,保證了業(yè)務的有序進行。
1.2.4 操作系統(tǒng)的支持能力
邊緣計算終端采用以Linux 為內核的操作系統(tǒng),操作系統(tǒng)在管理硬件的同時,為軟件提供運行環(huán)境。在邊緣計算終端上可采用VMware、KVM 等軟件創(chuàng)建虛擬機并向其分配資源,每個虛擬機擁有的硬件資源與操作系統(tǒng)相對獨立。在容器與虛擬機的嵌套架構下,虛擬機中的容器由容器引擎Docker 創(chuàng)建,通過Cgroups 和命名空間機制劃分容器獨立的資源,在同一虛擬機中的容器共享同一操作系統(tǒng)。邊緣計算終端通過應用程序提供業(yè)務服務[27]。在實際研發(fā)中注意到應用程序的制作具有操作系統(tǒng)版本的約束,容器操作系統(tǒng)與應用程序存在兼容匹配的問題。當操作系統(tǒng)版本不一致時,系統(tǒng)會提示兼容性錯誤告警,影響應用程序的正常使用,例如:在Debian8 容器操作系統(tǒng)下制作的應用程序可兼容同樣版本的操作系統(tǒng),但無法兼容Debian10 操作系統(tǒng),而容器與虛擬機嵌套的架構為解決應用程序操作系統(tǒng)兼容性問題提供了一種手段。
此外,邊緣計算終端操作系統(tǒng)除了驅動、文件系統(tǒng)、命名空間和分組控制等功能模塊外,還具備微服務功能模塊。該模塊負責微服務的組裝和調用。微服務可由組件組裝,組件由動態(tài)庫構成。本文關注邊緣計算終端業(yè)務時序邏輯和計算負荷建模,在實際開發(fā)中每個應用程序被封裝為微服務。業(yè)務包含的子任務的執(zhí)行以應用程序的形式實現(xiàn)。微服務模塊為多個微服務的調用提供了手段并支撐業(yè)務時序邏輯的實現(xiàn)。
在前述業(yè)務時序邏輯圖與邊緣計算終端架構的基礎上,構建能定量刻畫業(yè)務計算負荷的數(shù)學模型。本文構建的業(yè)務計算負荷模型包括計算資源需求模型、容器系統(tǒng)歸屬模型、時序邏輯模型和計算資源配置模型。
計算資源需求模型用于表征業(yè)務所含子任務對計算資源的需求。本文研究的計算資源包括CPU資源、內存資源和網(wǎng)絡帶寬資源3 種。業(yè)務所含子任務對計算資源的需求可通過矩陣A 表示為:
式中:si,cpu、si,ram和si,bw分別為業(yè)務的第i 個子任務對CPU、內存和網(wǎng)絡帶寬資源的需求量。
容器系統(tǒng)歸屬模型用于刻畫子任務在容器系統(tǒng)中的執(zhí)行位置。為了方便負責各類子任務應用程序的管理與維護,與子任務類型相對應,容器系統(tǒng)分為采集容器系統(tǒng)、分析容器系統(tǒng)和控制容器系統(tǒng)3 種,并分別對3 種容器系統(tǒng)編號為1、2 和3。
子任務的歸屬關系可通過矩陣B 表示為:
式中:bi為業(yè)務的第i 個子任務歸屬碼。
時序邏輯模型包括矩陣C、矩陣D、延時模型和計算負荷時序模型。
2.3.1 矩陣C
矩陣C 用于描述各子任務間的先后連接關系。令業(yè)務起始編號為0,以圖1 所示的業(yè)務時序邏輯圖為例,編號如附錄A 圖A3 所示。
按子任務編號順序列寫出矩陣C 的各列元素的值,矩陣C 各列第1 行和第2 行元素分別表示相應子任務的起始節(jié)點編號和終止節(jié)點編號。矩陣C 為:
2.3.2 矩陣D
矩陣D 用于描述各子任務所在的支路類型,規(guī)則如下。
規(guī)則1:當子任務處于孤立支路時,該子任務對應列的元素均填寫為00。
規(guī)則2:當子任務處于串聯(lián)支路時,該子任務對應列的元素可填寫為M0,M 的取值由該子任務所處的第M 個串聯(lián)支路確定。
規(guī)則3:當子任務處于并聯(lián)支路時,該子任務對應列的元素可填寫0N,N 的取值由該子任務所處的第N 個并聯(lián)支路確定。
以圖1 所示的業(yè)務時序邏輯圖為例,按子任務編號順序形成的矩陣D 為:
2.3.3 延時模型
對4 類支路的延時進行建模。串聯(lián)支路延時模型的表達式為:
式中:ts為該串聯(lián)支路的子任務執(zhí)行總延時;A 為屬于該串聯(lián)支路的子任務集合;ts,j為屬于該串聯(lián)支路第j 個任務的執(zhí)行延時。
并聯(lián)支路延時模型的表達式為:
式中:tp為該并聯(lián)支路的子任務執(zhí)行總延時;B 為屬于該并聯(lián)支路的子任務集合;tp,j為屬于該并聯(lián)支路第j 個任務的執(zhí)行延時。
孤立支路延時為tis,與該支路上第j 個任務的執(zhí)行延時相等。
復合支路延時模型表達式為:
式中:tmix為該復合支路的任務執(zhí)行總延時;tis為孤立支路的延時;Tis為屬于該復合支路的孤立支路延時集合;Ts為屬于該復合支路的串聯(lián)支路延時集合。
業(yè)務總延時可通過對干路上所有延時環(huán)節(jié)的累加獲得,其表達式為:
式中:t 為業(yè)務執(zhí)行總延時;tis,i為第i 個孤立支路延時;tmix,y為第y 個復合支路延時;N2、N3和N4分別為并聯(lián)支路、孤立支路和復合支路的總數(shù)。
2.3.4 計算負荷時序模型
為了分析業(yè)務對計算資源的需求,需要構建計算負荷時序曲線,在構建的數(shù)學模型中采用階梯函數(shù)ε(?)表示子任務的計算資源占用需求,其表達式為:
式中:Li,cpu(t)、Li,ram(t)和Li,bw(t)分別為第i 個容器系統(tǒng)的CPU、內存、網(wǎng)絡帶寬資源需求時序曲線;Vi為第i 個容器系統(tǒng)的子任務集合;tk,ini為第k 個子任務的開始執(zhí)行時刻;tk為第k 個子任務的執(zhí)行延時。
計算負荷時序曲線是對邊緣計算終端進行計算資源配置的依據(jù),通過子任務的計算資源需求量及子任務間的時序邏輯關系獲得。
計算資源需求量在應用程序交付環(huán)節(jié)的延時性能測試中獲得。通過賦予容器不同的計算資源量,測試應用軟件在容器中執(zhí)行任務的延時。最終,在滿足延時要求的條件下,獲得一個計算資源額定值作為子任務的計算資源需求量。該額定值將作為已知條件寫入矩陣A 中。子任務間的時序邏輯關系由業(yè)務流程決定并采用2.3 節(jié)時序邏輯模型進行刻畫。
由于本文研究邊緣計算終端架構是建立在虛擬機容器混合技術的基礎上,因此,需要確定由虛擬機技術構建的容器系統(tǒng)的計算資源,其表達式為:
式中:Vi,cpu、Vi,ram和Vi,bw分別為第i 個容器系統(tǒng)應配置的CPU、內存和網(wǎng)絡帶寬資源。
邊緣計算終端的計算資源應滿足容器系統(tǒng)計算資源的需求,其表達式為:
式中:Ecpu、Eram和Ebw分別為邊緣計算終端應配置的CPU、內存和網(wǎng)絡帶寬資源;m 為容器系統(tǒng)總數(shù)。
在傳統(tǒng)配電終端架構下,終端軟硬件具有強耦合性,一個終端只具備一個功能,即每個終端只能完成單一子任務,在這種架構下總的計算資源配置需求為:
式中:Scpu、Sram和Sbw分別為傳統(tǒng)配電終端架構下應配置的CPU、內存和網(wǎng)絡帶寬資源;n 為子任務總數(shù)。
計算負荷曲線生成算法如圖2 所示。利用計算負荷模型,通過所提算法可獲得邊緣計算終端各容器系統(tǒng)的計算負荷時序曲線。該算法思路為:首先,分別處理時序邏輯圖中的串聯(lián)支路、并聯(lián)支路和孤立支路,將串聯(lián)支路和并聯(lián)支路上所有子任務等值為一個新的子任務;然后,處理復合支路上的子任務,將復合支路上的子任務等值為一個新的子任務;最后,干路上只剩下等值而成的孤立支路和原本存在的孤立支路,將干路視為串聯(lián)支路進行處理,即可獲得最終計算負荷曲線。
圖2 計算負荷曲線生成算法流程Fig.2 Algorithm flow of calculation load curve generation
以圖1 的業(yè)務時序邏輯圖為例,該業(yè)務仿真參數(shù)如附錄A 表A3 所示。表中包括了該業(yè)務所含子任務的編號、計算資源的需求、該計算資源環(huán)境下的子任務執(zhí)行延時和描述時序邏輯圖的矩陣B、C 和D 的參數(shù)。
采用本文提出的計算負荷模型和計算負荷曲線生成算法可以獲得各容器系統(tǒng)的計算負荷曲線。CPU 資源曲線如圖3 所示,內存和帶寬資源曲線分別如附錄A 圖A4 和A5 所示。圖3 中,實線表示的是以圖1 為例的仿真結果,虛線表示的是業(yè)務時序邏輯結構改變后的仿真結果。業(yè)務時序邏輯改變后的結構圖如附錄A 圖A6 所示,矩陣C 和D 相應的取值如附錄A 表A4 所示。
圖3 CPU 資源對比Fig.3 Comparison of CPU resource
業(yè)務時序邏輯結構改變后,該業(yè)務中的子任務3從串聯(lián)支路移到了并聯(lián)支路處,并與子任務1 和2構成并聯(lián)關系。分析計算負荷曲線可知,業(yè)務時序邏輯結構的變化會對計算負荷曲線造成影響,在0至0.10 s,由于原本并聯(lián)支路增加了子任務3,使得該時間段內計算負荷增加。再對比業(yè)務邏輯結構改變前后計算負荷最終歸零時刻,當串聯(lián)支路的子任務移到并聯(lián)支路時,業(yè)務延時從0.75 s 減少至0.70 s。
依據(jù)獲得的計算負荷曲線,可為邊緣計算終端配置計算資源,其配置結果如表1 所示。
由表1 可知,業(yè)務時序邏輯結構對邊緣計算終端計算資源配置造成影響。串聯(lián)支路的子任務減少將有利于縮短業(yè)務延時。若并聯(lián)支路的子任務增加,其計算負荷又恰好為業(yè)務周期內的計算負荷峰段,則須為邊緣計算終端配置更多計算資源。邊緣計算終端業(yè)務的設計須考慮合理的業(yè)務時序邏輯結構,有利于節(jié)省邊緣計算終端計算資源。因此,可依據(jù)工程實際需要,對業(yè)務時序邏輯結構進行合理設計。
表1 業(yè)務的時序邏輯結構對計算資源配置的影響Table 1 Impact of sequential logic structure of bussiness on computing resource configuration
通過基于虛擬機容器混合技術的邊緣計算終端架構實現(xiàn)軟硬分離、軟件定義。傳統(tǒng)配電終端架構是指每個子任務只能由特定的終端設備完成,軟硬件間具有強耦合,因此,在這種架構下,所配置的計算資源由各子任務的計算資源需求直接疊加而成。采用前述建立的計算資源配置模型,可獲得在這2 種架構下的計算資源配置結果,如表2 所示。
表2 終端架構對計算資源配置的影響Table 2 Impact of terminal architecture on computing resource configuration
由表2 可知,基于虛擬機容器混合技術的邊緣計算終端架構與傳統(tǒng)配電終端架構相比需要配置更少的計算資源。其原因在于,通過容器虛擬化技術能實現(xiàn)軟件與硬件分離,硬件可被隨時賦能,并且容器的創(chuàng)建與回收能快速完成,實現(xiàn)了計算資源的高效利用,從而降低了計算資源的配置。
本文將業(yè)務時序邏輯與邊緣計算終端架構融合到計算負荷建模中,提出了計算負荷曲線生成算法獲得業(yè)務的計算負荷時序曲線,并以此作為依據(jù)指導邊緣計算終端業(yè)務的邏輯設計和計算資源的合理配置。計算負荷建模是本文研究的核心,也是未來深入研究計算資源優(yōu)化配置和動態(tài)調度的基礎。
本文以圖1 為基礎開展研究,圖1 的時序邏輯結構是涵蓋所有支路類型的最小子圖,但所提出的業(yè)務計算負荷建模方法仍適用于任何具有時序邏輯的業(yè)務類型。同時,本文從邊緣計算終端計算資源配置的角度研究業(yè)務計算負荷建模方法,為后續(xù)研究考慮不同業(yè)務類型、同一業(yè)務的不同時序邏輯結構、邊緣計算終端架構和計算資源供給平衡策略等因素的優(yōu)化問題奠定基礎。
附錄見本刊網(wǎng)絡版(http://www.aeps-info.com/aeps/ch/index.aspx),掃英文摘要后二維碼可以閱讀網(wǎng)絡全文。