摘 要: 分析了己有的調(diào)度機(jī)制和常用的任務(wù)調(diào)度算法,并在此基礎(chǔ)上設(shè)計(jì)了資源評(píng)價(jià)模型,。將資源評(píng)價(jià)模型加入調(diào)度系統(tǒng)中,,資源信息由評(píng)價(jià)模塊進(jìn)行分析和評(píng)價(jià),,并提供給任務(wù)調(diào)度器,實(shí)現(xiàn)資源和任務(wù)的優(yōu)化匹配,,提高了服務(wù)質(zhì)量(QoS),。
關(guān)鍵詞: 云計(jì)算;資源評(píng)價(jià),;模型
近幾年來(lái),,隨著云計(jì)算技術(shù)的廣泛應(yīng)用以及電子商務(wù)、網(wǎng)絡(luò)社區(qū),、搜索服務(wù)等互聯(lián)網(wǎng)應(yīng)用的快速發(fā)展,人們對(duì)網(wǎng)絡(luò)服務(wù)和計(jì)算服務(wù)的需求迅速增加,,對(duì)服務(wù)質(zhì)量的要求也在不斷提高,。在傳統(tǒng)的商業(yè)模式下,用戶為了獲取某項(xiàng)服務(wù),,需要不斷升級(jí)硬件設(shè)備,,本地安裝軟件、配置程序等,。而如今,,云計(jì)算作為一種新的計(jì)算模式,使得用戶可以通過(guò)任何電子終端或網(wǎng)絡(luò)瀏覽器,,隨時(shí)隨地按照需要獲取服務(wù),,而不必考慮基礎(chǔ)設(shè)施的架構(gòu)、維護(hù)以及服務(wù)的實(shí)現(xiàn)細(xì)節(jié)等,。云計(jì)算正逐漸被商品化,,人們付出一定的費(fèi)用來(lái)獲取所需的服務(wù)[1],與水,、電,、煤氣及電話服務(wù)等類似。由于這種商業(yè)特性,,用戶服務(wù)質(zhì)量的保障受到各大云服務(wù)提供商的重視,,因而任務(wù)調(diào)度與資源分配問(wèn)題也顯得格外重要。在己有的任務(wù)調(diào)度系統(tǒng)中,,任務(wù)調(diào)度模塊與資源信息收集模塊往往緊密耦合,,任務(wù)調(diào)度的選擇對(duì)象為所有節(jié)點(diǎn)的全部資源信息。任務(wù)調(diào)度器需要對(duì)收集到的所有節(jié)點(diǎn)的各類資源信息進(jìn)行整理,,并與任務(wù)進(jìn)行匹配,,以選擇最適宜的節(jié)點(diǎn)進(jìn)行調(diào)度,對(duì)資源的評(píng)價(jià)功能多是集中在中心調(diào)度器中,。在資源大規(guī)模性及動(dòng)態(tài)性強(qiáng)的云計(jì)算環(huán)境下,,這種機(jī)制給中心任務(wù)調(diào)度器帶來(lái)了很大的壓力,,影響調(diào)度效率,并且對(duì)任務(wù)執(zhí)行效率,、資源收費(fèi)策略及系統(tǒng)利用率等缺乏綜合考慮,。
針對(duì)上述特點(diǎn),作者設(shè)計(jì)了資源評(píng)價(jià)模型,,并將資源評(píng)價(jià)模型加入到調(diào)度系統(tǒng)中,,資源信息由評(píng)價(jià)模塊進(jìn)行分析和評(píng)價(jià),將評(píng)價(jià)結(jié)果提供給任務(wù)調(diào)度器,,實(shí)現(xiàn)資源和任務(wù)的優(yōu)化匹配,,提高了服務(wù)質(zhì)量(QoS)。
1 模型體系結(jié)構(gòu)
本模型基于Linux系統(tǒng)的分布式平臺(tái)上實(shí)現(xiàn),,采用無(wú)中心分布式管理模式,,通過(guò)各節(jié)點(diǎn)的相互監(jiān)控實(shí)現(xiàn)服務(wù)和節(jié)點(diǎn)故障的檢測(cè),并通過(guò)協(xié)商進(jìn)行故障服務(wù)的接管,。本模型設(shè)計(jì)結(jié)合資源評(píng)價(jià)的分布式調(diào)度模型,,不存在中心評(píng)價(jià)與調(diào)度節(jié)點(diǎn),各節(jié)點(diǎn)的地位作用是對(duì)等的,,節(jié)點(diǎn)間需相互協(xié)商以完成資源評(píng)價(jià)與任務(wù)調(diào)度,。每個(gè)節(jié)點(diǎn)都針對(duì)任務(wù)信息進(jìn)行本地資源評(píng)價(jià),并與其他候選調(diào)度節(jié)點(diǎn)進(jìn)行比較及綜合評(píng)價(jià),,找到最優(yōu)節(jié)點(diǎn),,以決定是否將任務(wù)由本節(jié)點(diǎn)執(zhí)行。
模型體系結(jié)構(gòu)如圖1所示,,具體描述如下:
?。?)節(jié)點(diǎn)首先發(fā)現(xiàn)任務(wù),作為任務(wù)源節(jié)點(diǎn),,將任務(wù)信息以廣播的形式發(fā)布在組群中,,發(fā)起協(xié)商。
?。?)組群內(nèi)所有節(jié)點(diǎn)收到協(xié)商邀請(qǐng),,收集本地資源信息,針對(duì)任務(wù)需求進(jìn)行本地資源評(píng)價(jià),,從而獲得任務(wù)分配到該節(jié)點(diǎn)的性能評(píng)估值,,并將本地評(píng)估值在組群內(nèi)廣播。
?。?)各參與協(xié)商節(jié)點(diǎn)收集其他參與節(jié)點(diǎn)的本地評(píng)價(jià)信息,,并根據(jù)任務(wù)調(diào)度目標(biāo),對(duì)包括本節(jié)點(diǎn)在內(nèi)的所有候選調(diào)度節(jié)點(diǎn)進(jìn)行綜合評(píng)價(jià),選出評(píng)估值最優(yōu)的節(jié)點(diǎn),;若最優(yōu)節(jié)點(diǎn)為本節(jié)點(diǎn),,則將任務(wù)在本地執(zhí)行,否則,,放棄本次協(xié)商,。
2 模型功能與模塊劃分
2.1 系統(tǒng)功能模塊
本實(shí)驗(yàn)室已有的基于Linux的分布式平臺(tái),主要提供容錯(cuò)及故障接管功能,,通過(guò)核心態(tài)心跳檢測(cè)機(jī)制進(jìn)行節(jié)點(diǎn)間的監(jiān)控,,接管故障節(jié)點(diǎn),重啟失效任務(wù),,如圖2所示,。資源監(jiān)控模塊負(fù)責(zé)對(duì)系統(tǒng)計(jì)算資源、存儲(chǔ)資源,、網(wǎng)絡(luò)資源以及負(fù)載信息的收集,;任務(wù)監(jiān)控模塊負(fù)責(zé)對(duì)任務(wù)的監(jiān)控,以及對(duì)新任務(wù)的獲?。恍奶鴻z測(cè)模塊是系統(tǒng)進(jìn)行故障監(jiān)測(cè)的核心模塊,,它實(shí)現(xiàn)在系統(tǒng)核心態(tài),,通過(guò)定時(shí)發(fā)布心跳信息進(jìn)行節(jié)點(diǎn)間的相互監(jiān)控;用戶模塊接收用戶輸入?yún)?shù),,以及向用戶顯示系統(tǒng)狀態(tài)等,;中心控制模塊是系統(tǒng)的核心模塊,負(fù)責(zé)系統(tǒng)各模塊間的消息傳遞,,根據(jù)資源信息,、任務(wù)信息、用戶信息以及故障信息進(jìn)行任務(wù)調(diào)度和故障接管等,。
本文重點(diǎn)描述資源評(píng)價(jià)模型(即處于中心控制模塊中),,結(jié)合任務(wù)信息、資源信息及節(jié)點(diǎn)故障信息對(duì)各節(jié)點(diǎn)執(zhí)行任務(wù)的適宜程度進(jìn)行評(píng)估,,將評(píng)估結(jié)果提供給任務(wù)調(diào)度子模塊,,作為任務(wù)調(diào)度的依據(jù)。
2.2 評(píng)價(jià)模塊及消息流程
本模型是針對(duì)任務(wù)調(diào)度的資源評(píng)價(jià)模型,,其核心功能是資源評(píng)價(jià),,包括本地評(píng)價(jià)和綜合評(píng)價(jià)。根據(jù)功能對(duì)資源評(píng)價(jià)模塊進(jìn)行劃分,,如圖3所示,。
系統(tǒng)采用分布式架構(gòu),每個(gè)節(jié)點(diǎn)都包含相同的模塊,,采用消息驅(qū)動(dòng)機(jī)制,。消息包括4種:(1)MSG_TASK表示新任務(wù)消息,;(2)MSG_HELP表示失效任務(wù)接管信息;(3)MSG_ASSESS表示本地評(píng)價(jià)信息,;(4)MSG_FITNESS表示最終評(píng)價(jià)結(jié)果,。
根據(jù)消息類型及其攜帶的不同參數(shù),確定消息的處理方式,。消息傳遞流程如圖4所示,。任務(wù)信息由心跳檢測(cè)模塊通過(guò)MSG_HELP消息或任務(wù)監(jiān)控模塊通過(guò)MSG_TASK消息發(fā)布,分別表示失效任務(wù)接管和新任務(wù)調(diào)度,。消息形式為(task_id,,task_infor),表示任務(wù)標(biāo)識(shí)號(hào)和任務(wù)信息,。評(píng)價(jià)模塊收到任務(wù)信息,,設(shè)置該task_id的ITIMER_REAL定時(shí)器;本地評(píng)價(jià)模塊執(zhí)行Self_assess(),,并將評(píng)價(jià)信息通過(guò)消息MSG_ASSESS(task_id,,node_id,assessment)發(fā)送,;綜合評(píng)價(jià)模塊處理接收到的所有節(jié)點(diǎn)的MSG_ASSESS消息,,將該評(píng)價(jià)信息加入到候選節(jié)點(diǎn)列表candidate_list中;在定時(shí)器到了指定時(shí)間后執(zhí)行Final_ssess(),,對(duì)包括本節(jié)點(diǎn)在內(nèi)的所有節(jié)點(diǎn)進(jìn)行綜合評(píng)價(jià),;并發(fā)送最終評(píng)價(jià)結(jié)果MSG_RESULT(tasKid,result),,同時(shí)忽略此后收到的該task_id的MSG_ASSESS,。主要結(jié)構(gòu)如下。
receive(message),;
switch(message.msg--type)
{ //根據(jù)消息類型判斷
Ease MSG_TASK:
Ease MSG_HELP:
Sef_assess(),; //本地評(píng)價(jià)
Send_assess(); //發(fā)送本地評(píng)價(jià)信息
Case MSG_ASSESS:
Addto_candidate_list(),; //將節(jié)點(diǎn)加入候選節(jié)點(diǎn)列表
Final_assess(),; //綜合評(píng)價(jià)
Send_result(); //發(fā)送最終評(píng)價(jià)結(jié)果
Case MSG_RESULT:
sched_task(),; //調(diào)度模塊根據(jù)評(píng)價(jià)結(jié)果執(zhí)行任務(wù)調(diào)度
}
2.3 任務(wù)信息參數(shù)化
該子模塊負(fù)責(zé)把任務(wù)信息進(jìn)行抽象,,得到評(píng)價(jià)所需的參數(shù)化任務(wù)描述,需輸出的信息包括任務(wù)的客觀屬性和用戶的QoS需求,。對(duì)于任務(wù)客觀屬性信息,,可通過(guò)任務(wù)長(zhǎng)度、數(shù)據(jù)文件大小等抽象出任務(wù)對(duì)各類資源的需求量Rq以及限制條件。
任務(wù)主觀描述信息建立在對(duì)用戶QoS需求的分析上,,而用戶往往只能提供定性的需求信息,,模型無(wú)法將其作為參數(shù)直接使用。然而要求用戶提供定量的QoS描述不適合云計(jì)算這種面向服務(wù)的商業(yè)計(jì)算模式,。因此,,本模型需要考慮將QoS參數(shù)由定性轉(zhuǎn)化為定量描述,本文運(yùn)用云理論模型[2-3]將用戶QoS描述參數(shù)化,,作為評(píng)價(jià)模型輸入的定量值,。
2.4 資源信息參數(shù)化
資源信息參數(shù)化主要對(duì)本節(jié)點(diǎn)資源的屬性信息進(jìn)行抽象和整理。資源信息由資源監(jiān)控模塊提供,,包括所有與任務(wù)執(zhí)行性能,、時(shí)間及費(fèi)用等相關(guān)的因素,可分為靜態(tài)屬性和動(dòng)態(tài)屬性信息,。資源的靜態(tài)信息指節(jié)點(diǎn)的硬件信息,,如計(jì)算速度、內(nèi)存大小,、數(shù)據(jù)存儲(chǔ)容量及網(wǎng)絡(luò)帶寬等,。資源動(dòng)態(tài)信息需要定時(shí)收集,其中包括CPU隊(duì)列長(zhǎng)度,、內(nèi)存使用率,、硬盤利用率、網(wǎng)絡(luò)負(fù)載及延遲等,。
本實(shí)驗(yàn)室對(duì)資源動(dòng)態(tài)監(jiān)控方面的研究主要實(shí)現(xiàn)在基于Linux系統(tǒng)的平臺(tái)上,使用shell命令虛擬內(nèi)存統(tǒng)計(jì)(vmstat)可以對(duì)系統(tǒng)的CPU利用率,、虛擬內(nèi)存使用情況及進(jìn)程進(jìn)行監(jiān)視,,統(tǒng)計(jì)系統(tǒng)的整體使用情況;此外,,使用iostat命令還可以監(jiān)視磁盤及I/O使用情況,。資源的整體狀態(tài)是動(dòng)態(tài)變化的,上述信息需定時(shí)統(tǒng)計(jì),,為資源的分析評(píng)價(jià)提供依據(jù),。將收集到的資源信息保存在文件nodeinfor.txt中,并定時(shí)更新,。
針對(duì)本文分布式環(huán)境的特點(diǎn),,采用招投標(biāo)模型的方法進(jìn)行價(jià)格制定和服務(wù)協(xié)商。任務(wù)源節(jié)點(diǎn)首先發(fā)布招標(biāo)信息,;資源提供者通過(guò)對(duì)本地資源的評(píng)估,,提供資源信息和報(bào)價(jià),進(jìn)行投標(biāo);使用者根據(jù)一定的評(píng)價(jià)策略選擇最適合的資源,。
2.5 故障率檢測(cè)
系統(tǒng)采用心跳機(jī)制實(shí)現(xiàn)節(jié)點(diǎn)間相互監(jiān)控,,通過(guò)定時(shí)發(fā)送心跳消息檢測(cè)其他節(jié)點(diǎn)的狀態(tài),記錄各節(jié)點(diǎn)的故障信息,,從而得到各節(jié)點(diǎn)的故障率,。本實(shí)驗(yàn)室在心跳機(jī)制方面己進(jìn)行了相關(guān)研究,為提高心跳檢測(cè)的實(shí)時(shí)性,,一方面,,減少心跳包發(fā)送的延遲,將心跳協(xié)議實(shí)現(xiàn)在Linux系統(tǒng)內(nèi)核態(tài),,使得心跳包的發(fā)送不受系統(tǒng)協(xié)議棧和應(yīng)用層任務(wù)切換的影響[4-5],;另一方面,減少心跳包傳輸?shù)难舆t,,設(shè)計(jì)并實(shí)現(xiàn)了基于實(shí)時(shí)以太網(wǎng)的心跳協(xié)議,,通過(guò)硬實(shí)時(shí)通信協(xié)議TTEP(Time-Triggered Ethernet Protocol)來(lái)保證心跳協(xié)議數(shù)據(jù)包傳輸?shù)膶?shí)時(shí)性,避免了以太網(wǎng)中數(shù)據(jù)包擁塞導(dǎo)致的心跳包傳輸延遲,,提高檢測(cè)的準(zhǔn)確率[6],。
2.6 本地評(píng)價(jià)與綜合評(píng)價(jià)
本地評(píng)價(jià)和綜合評(píng)價(jià)是資源評(píng)價(jià)模塊的核心。本地評(píng)價(jià)模塊負(fù)責(zé)處理MSG_HELP以及MSG_TASK消息,,形式為(task_id,,task_infor),并執(zhí)行self_assess(),。結(jié)合參數(shù)化的資源信息及task_infor計(jì)算本地評(píng)價(jià)值,,將消息MSG_ASSESS(task_id,node_id,,assessment)進(jìn)行廣播,。
消息MSG_ASSESS由綜合評(píng)價(jià)模塊處理,將該節(jié)點(diǎn)及其評(píng)價(jià)信息加入候選節(jié)點(diǎn)列表candidate_list中,,數(shù)據(jù)結(jié)構(gòu)為:
struct candidate_list{
int task_id,; //任務(wù)標(biāo)識(shí)
struct assess_node list[MAXNODENUM];
//參與評(píng)價(jià)的節(jié)點(diǎn)列表
}
struct assess_node{ //參與評(píng)價(jià)的節(jié)點(diǎn)信息
int node_id,; //節(jié)點(diǎn)標(biāo)識(shí)
double load,; //節(jié)點(diǎn)負(fù)載
double exe_time; //節(jié)點(diǎn)估計(jì)完成時(shí)間
double cost,; //所需費(fèi)用
double stability,; //節(jié)點(diǎn)可靠性
}
為了保證及時(shí)評(píng)價(jià)和調(diào)度,責(zé)任節(jié)點(diǎn)在發(fā)布任務(wù)信息時(shí)設(shè)置定時(shí)器,,給定一個(gè)時(shí)間間隔,。該計(jì)數(shù)隨著實(shí)際時(shí)間而減少,,當(dāng)時(shí)間間隔減為0時(shí),綜合評(píng)價(jià)器執(zhí)行final_assess(),,對(duì)候選節(jié)點(diǎn)列表中的節(jié)點(diǎn)進(jìn)行綜合評(píng)價(jià),。本模型采用ITIMER_REAL定時(shí)器,如下所示:
void init_time(){ //定時(shí)器初始化
struct itimerval value,;
value.it_value.tv_sec=1,; //設(shè)定執(zhí)行任務(wù)的時(shí)間間隔
value.it_value.tv_usec=0;
value.it_interval=value.it_value,; //設(shè)定初始時(shí)間計(jì)數(shù)
setitimer(ITIMER_REAL,,&value,NULL),;
//設(shè)置計(jì)時(shí)器ITIMER_REAL
}
void init_sigaction(void){ //建立信號(hào)處理機(jī)制
struct sigaction tact,;
tact.sa_handler=final_assess;
//收到信號(hào)后執(zhí)行綜合評(píng)價(jià)函數(shù)
tact.sa_flags=0,;
sigemptyset(&tact.sa_mask),; //初始化信號(hào)集
sigaction(SIGALRM,&tact,,NULL),;
//建立信號(hào)處理機(jī)制
}
在發(fā)布任務(wù)信息時(shí)調(diào)用ini_time()函數(shù)將定時(shí)器初始化,規(guī)定時(shí)間間隔后定時(shí)器發(fā)送SIGALRM信號(hào),,綜合評(píng)價(jià)函數(shù)final_assess()被觸發(fā)執(zhí)行,。
本文對(duì)資源評(píng)價(jià)模型的體系結(jié)構(gòu)進(jìn)行了詳細(xì)描述,并介紹了其中的功能和模塊劃分,,以及對(duì)每個(gè)模塊中所采用的關(guān)鍵問(wèn)題和技術(shù)進(jìn)行了描述并給出了解決辦法,。資源評(píng)價(jià)模型主要用于對(duì)獨(dú)立任務(wù)的調(diào)度,尚存在一些不足和需要改進(jìn)地方,,在以后的研究中將作進(jìn)一步探討并改進(jìn),。
參考文獻(xiàn)
[1] RAJKUMAR B, CHEE S Y,, VENUGOPALA S, et al.Cloud computing and emerging IT platforms: vision,, hype,,and reality for delivering computing as the 5th utility[J].Future Generation Computer Systems,2009,,25(6):599-616.
[2] 尹國(guó)定,,衛(wèi)紅.云計(jì)算-實(shí)現(xiàn)概念計(jì)算的方法[J].東南大學(xué)學(xué)報(bào),2003,,33(4):502-506.
[3] 胡亮,,胡德斌,,孫葉萌,等.計(jì)算網(wǎng)格中經(jīng)濟(jì)模型的應(yīng)用策略[J].吉林大學(xué)學(xué)報(bào),,2009,,47(2):306-311.
[4] Wang Zhanjie, Li Xiao. A new real-time heartbeat failure detector[C]. 4th International Conference on Wireless Communications,, Networking and Mobile Computing,, 2008:1-3.
[5] Wang Zhanjie, He Kai,, Wang Hailong. A safety-critical peal-time network protocol[C]. 2008 IEEE International Conference on Granular Computing,,2008:312-315.
[6] Wang Zhanjie, Chen Wen,, Wang Hailong. Improvement on real-time capability of heartbeat mechanism[C]. International Conference on Advanced Measurement and Test,, 2010:938-942.