石小兵
(安徽工業(yè)經(jīng)濟(jì)職業(yè)技術(shù)學(xué)院 財(cái)經(jīng)學(xué)院,安徽 合肥 230001)
為了提高云計(jì)算服務(wù)的靈活性和可擴(kuò)展性,云服務(wù)平臺(tái)(如Amazon Elastic Compute Cloud、Google Compute Engine)允許用戶(hù)按需使用計(jì)算單元,即按需使用處理器、內(nèi)存、存儲(chǔ)和操作系統(tǒng)資源,并按年、天、小時(shí)甚至分鐘計(jì)費(fèi)[1-2]。用戶(hù)能夠在云服務(wù)提供商的分布式計(jì)算環(huán)境上開(kāi)發(fā)和執(zhí)行任務(wù)。為了降低在云計(jì)算平臺(tái)中進(jìn)行大規(guī)模多媒體處理的成本,設(shè)計(jì)了一個(gè)云計(jì)算平臺(tái)——MMC(Multi-Media Cloud)。MMC通過(guò)合理地調(diào)整多媒體任務(wù)所需的資源,在確保任務(wù)按時(shí)完成的情況下,降低云基礎(chǔ)設(shè)施的成本。
MMC的體系結(jié)構(gòu)如圖1所示,MMC由五個(gè)部分組成:前端、云存儲(chǔ)和實(shí)例類(lèi)型、監(jiān)控組件以及本地和全局控制器實(shí)例。
用戶(hù)通過(guò)前端提交工作負(fù)載,并為此工作負(fù)載設(shè)置特定的完成時(shí)間,或者由MMC分配合適的完成時(shí)間。工作負(fù)荷可以包括多種類(lèi)型的多媒體文件以及用于處理輸入的腳本和可執(zhí)行文件。用戶(hù)通常希望在輸入圖像或視頻上執(zhí)行諸如面部識(shí)別、視頻轉(zhuǎn)碼的特定任務(wù)。當(dāng)全局控制器實(shí)例檢測(cè)到新的工作負(fù)載時(shí),會(huì)將工作負(fù)載的一小部分輸入分配給本地控制器實(shí)例。本地控制器實(shí)例的計(jì)算實(shí)例會(huì)在這一小部分的輸入上執(zhí)行相應(yīng)的代碼,并向監(jiān)控組件和相應(yīng)的全局控制器實(shí)例提供執(zhí)行時(shí)間。全局控制器實(shí)例根據(jù)這些測(cè)量值和執(zhí)行狀態(tài)的日志來(lái)確認(rèn)工作負(fù)載處理過(guò)程中所提交的代碼是否存在錯(cuò)誤,并得出完成該工作負(fù)載所需CSP(Compute unit and Seconds Product)的估計(jì)值。其中,CSP是指所分配的計(jì)算單元數(shù)量與其使用時(shí)間的乘積,CSP是一個(gè)用來(lái)量化資源分配的指標(biāo)。此估計(jì)值用于確認(rèn)MMC是否可以在所請(qǐng)求的特定完成時(shí)間內(nèi)完成工作負(fù)載,或相應(yīng)地調(diào)整已分配的完成時(shí)間。全局控制器實(shí)例對(duì)每個(gè)工作負(fù)載的CSP進(jìn)行估計(jì),以便為不同的工作負(fù)載設(shè)置相應(yīng)的服務(wù)費(fèi),并按需調(diào)整計(jì)算單元的數(shù)量,以便滿(mǎn)足所有已確認(rèn)的完成時(shí)間。最后,所有計(jì)算單元產(chǎn)生的結(jié)果都上載到前端,以供用戶(hù)查詢(xún)。
(1)前端
MMC的前端提供工作負(fù)載上傳、啟動(dòng)、執(zhí)行監(jiān)視、文本文件和圖像查看和編輯功能,以及下載正在執(zhí)行的各個(gè)任務(wù)的結(jié)果。如果用戶(hù)對(duì)任務(wù)執(zhí)行的結(jié)果滿(mǎn)意或執(zhí)行不正確,則用戶(hù)可以利用前端來(lái)取消待處理的工作負(fù)載。
(2)云存儲(chǔ)和示例類(lèi)型
云存儲(chǔ)和示例類(lèi)型的部署采用云服務(wù)提供商提供的存儲(chǔ)和實(shí)例服務(wù)。實(shí)例服務(wù)需要提供了多種可用配置以及基于每小時(shí)預(yù)訂的靈活計(jì)費(fèi)。MMC使用Linux和Window實(shí)例,這些實(shí)例支持批處理腳本、Python和Java等高級(jí)語(yǔ)言,Javascript、Matlab以及OpenCV和ImageMagick庫(kù)。根據(jù)用戶(hù)提交的腳本和可執(zhí)行文件的類(lèi)型,MMC將這些實(shí)例中的任何一個(gè)派生到I種實(shí)例類(lèi)型中任意數(shù)量的類(lèi)型i實(shí)例。用pi(1≤i≤I)表示每種實(shí)例類(lèi)型的計(jì)算單元數(shù)量。此外,在第t個(gè)時(shí)刻,MMC中包含類(lèi)型i的實(shí)例數(shù)量為ni[t]。對(duì)于ni[t]個(gè)實(shí)例中的第j個(gè)實(shí)例,用ai,j[t]表示直到下一個(gè)計(jì)費(fèi)周期為止的剩余時(shí)間。
圖1 MMC平臺(tái)系統(tǒng)結(jié)構(gòu)
(3)監(jiān)控組件
為了觀察計(jì)算單元的利用率,MMC平臺(tái)設(shè)置了一個(gè)監(jiān)控組件,該監(jiān)控組件通過(guò)系統(tǒng)命令監(jiān)測(cè)每個(gè)實(shí)例中處理器的利用率。在第t個(gè)監(jiān)視時(shí)刻,MMC中所有當(dāng)前正在執(zhí)行的工作負(fù)載的集合共含有M[t]種不同的多媒體類(lèi)型(如圖像類(lèi)型、音頻類(lèi)型、視頻類(lèi)型)。
在每個(gè)監(jiān)視時(shí)刻t,對(duì)于每個(gè)工作負(fù)載w(1≤w≤W[t]),監(jiān)控組件需要監(jiān)測(cè)被處理的剩余多媒體項(xiàng)目mw,k[t]以及處理工作負(fù)載w中類(lèi)型k的多媒體所需的CSPsbw,k[t]。監(jiān)控組件持續(xù)檢測(cè)完成每個(gè)工作負(fù)載w所需的CSPrw[t],rw[t]計(jì)算方式如(1)所示:
(1)
MMC還需要監(jiān)測(cè)處于激活狀態(tài)的計(jì)算單元的總數(shù)量(如式(2)所示)以及已付費(fèi)CSP的數(shù)量(如式(3)所示)。
(2)
(3)
(4)本地和全局控制器實(shí)例
(4)
其中,vw,k[t]是測(cè)量的誤差。在時(shí)刻t,對(duì)于每個(gè)工作負(fù)載w中媒體類(lèi)型k所需CSPs的估計(jì)值如(5)所示:
bw,k[t]=bw,k[t-1]+zw,k[t]
(5)
其中,zw,k[t]是誤差。采用卡爾曼濾波對(duì)bw,k[t]進(jìn)行更準(zhǔn)確的估計(jì),如(6)、(7)所示:
bw,k[t-1])
(6)
(7)
服務(wù)速率sw[t]是指在監(jiān)視時(shí)刻t和t+1之間的時(shí)間間隔內(nèi)分配給工作負(fù)載w的計(jì)算單元數(shù)量。若sw[t]值是一個(gè)小數(shù)(例如sw[t]=0.7),那么這就意味著為工作負(fù)載w分配了一個(gè)計(jì)算單元,其使用的時(shí)間間隔為0.7。給定工作負(fù)載完成時(shí)間dw[t]和相應(yīng)的CSP估計(jì),如果出現(xiàn)了sw[t]>Nw,max的情況(其中Nw,max是計(jì)算單元數(shù)量),那么就需要增加dw[t]以使sw[t]=Nw,max。由此操作便可以得到每一個(gè)工作負(fù)載w的完成時(shí)間。
全局控制器實(shí)例通過(guò)基于比例公平性的分配機(jī)制來(lái)確保每個(gè)工作負(fù)載都能在其完成時(shí)間之前被執(zhí)行。在每個(gè)監(jiān)視實(shí)例t,對(duì)于每個(gè)工作負(fù)載w,全局控制器實(shí)例最大化關(guān)于服務(wù)率的目標(biāo)函數(shù),從而確保滿(mǎn)足所有工作負(fù)載的CSP需求rw[t]。目標(biāo)函數(shù)的表達(dá)式如下所示:
f(sw[t])=rw[t]ln(sw[t])-dw[t]sw[t]
(8)
(9)
目標(biāo)函數(shù)達(dá)到最大值意味著有足夠的計(jì)算單元來(lái)適應(yīng)需求,因此,能夠在每個(gè)監(jiān)視時(shí)刻t根據(jù)每個(gè)工作負(fù)載所需的CSP和完成時(shí)間進(jìn)行服務(wù)速率分配。然后,可以計(jì)算所需的計(jì)算單元總數(shù)為式(10)。
(10)
(11)
(12)
Ntot[t+1]=
(13)
為了對(duì)所設(shè)計(jì)的平臺(tái)進(jìn)行評(píng)估,第三方的云服務(wù)所提供的實(shí)例來(lái)部署MMC。其中,每個(gè)實(shí)例都有一個(gè)對(duì)應(yīng)的本地控制器實(shí)例,當(dāng)全局控制器實(shí)例檢測(cè)到該本地控制器實(shí)例處于空閑,就會(huì)為其分配新任務(wù)。另外,采用一個(gè)單獨(dú)的實(shí)例作為全局控制器實(shí)例。實(shí)驗(yàn)使用的參數(shù)設(shè)置為:α=5,β=0.9,Nmin=10,N=100,Nw,max=10。監(jiān)控組件使用SQL數(shù)據(jù)庫(kù)來(lái)記錄每個(gè)工作負(fù)載中完成的任務(wù)。最后,產(chǎn)生的結(jié)果以及中間進(jìn)度的摘要通過(guò)前端的Web界面?zhèn)鬟_(dá)給用戶(hù)。
將MMC與亞馬遜的Autoscale服務(wù)(AAS)進(jìn)行對(duì)比[3]。 AAS不對(duì)CSP進(jìn)行估計(jì),只根據(jù)CPU利用率和帶寬限制來(lái)控制實(shí)例數(shù)量。AAS每隔5min檢查一次所有使用的計(jì)算單元的平均CPU使用率。如果檢測(cè)到平均CPU利用率超過(guò)20%,則將啟動(dòng)新實(shí)例。否則,AAS會(huì)關(guān)閉部分活動(dòng)的實(shí)例。在AAS中執(zhí)行了所有工作負(fù)載,并測(cè)量了完成工作負(fù)載的最長(zhǎng)時(shí)間。
圖2 累計(jì)成本對(duì)比
圖3 深度學(xué)習(xí)工作負(fù)載下累積成本對(duì)比
圖2展示了在兩種方法的累積成本。顯然,AAS的成本明顯高于MMC的成本。這主要是因?yàn)锳AS僅基于CPU利用率進(jìn)行決策,因此即使在工作負(fù)載處理即將完成時(shí),它也會(huì)繼續(xù)擴(kuò)大實(shí)例的數(shù)量。而且只有在工作負(fù)載完成后,CPU利用率降低的情況下,AAS才減小實(shí)例數(shù)量。總體而言,圖2的結(jié)果表明,MMC所采用的基于AIMD的計(jì)算單元管理是一種簡(jiǎn)單有效的方法,可降低云計(jì)算基礎(chǔ)架構(gòu)所產(chǎn)生的成本,同時(shí)滿(mǎn)足每個(gè)工作負(fù)載的完成時(shí)間約束。
考察Dithn平臺(tái)在深度學(xué)習(xí)工作負(fù)載下的性能。該深度學(xué)習(xí)任務(wù)是一個(gè)基于深層卷積神經(jīng)網(wǎng)絡(luò)[4]的圖像分類(lèi)任務(wù),并采用ImageNet[5]作為輸入數(shù)據(jù)集。實(shí)驗(yàn)結(jié)果如圖3所示。由實(shí)驗(yàn)結(jié)果可知,AAS的成本要高于MMC的成本(約30%)。
MMC是一個(gè)面向大規(guī)模多媒體的云計(jì)算平臺(tái),該平臺(tái)支持上載和執(zhí)行多媒體處理工作負(fù)載。MMC中的實(shí)例負(fù)責(zé)執(zhí)行工作負(fù)載中的任務(wù),并使用AIMD算法來(lái)調(diào)整計(jì)算單元的數(shù)量,以提高計(jì)算單元的利用率。MMC使用卡爾曼濾波估計(jì)器來(lái)計(jì)算每種任務(wù)與每種工作負(fù)載所需的計(jì)算單位秒。實(shí)驗(yàn)結(jié)果表明,MMC能夠降低云計(jì)算的成本,并確保在規(guī)定的時(shí)間內(nèi)完成工作負(fù)載任務(wù)。