摘 要: 分析了己有的調(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à);模型
近幾年來,隨著云計(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ì)算模式,使得用戶可以通過任何電子終端或網(wǎng)絡(luò)瀏覽器,隨時(shí)隨地按照需要獲取服務(wù),而不必考慮基礎(chǔ)設(shè)施的架構(gòu)、維護(hù)以及服務(wù)的實(shí)現(xiàn)細(xì)節(jié)等。云計(jì)算正逐漸被商品化,人們付出一定的費(fèi)用來獲取所需的服務(wù)[1],與水、電、煤氣及電話服務(wù)等類似。由于這種商業(yè)特性,用戶服務(wù)質(zhì)量的保障受到各大云服務(wù)提供商的重視,因而任務(wù)調(diào)度與資源分配問題也顯得格外重要。在己有的任務(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)度器帶來了很大的壓力,影響調(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),采用無中心分布式管理模式,通過各節(jié)點(diǎn)的相互監(jiān)控實(shí)現(xiàn)服務(wù)和節(jié)點(diǎn)故障的檢測(cè),并通過協(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ò)及故障接管功能,通過核心態(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ù)的獲取;心跳檢測(cè)模塊是系統(tǒng)進(jìn)行故障監(jiān)測(cè)的核心模塊,它實(shí)現(xiàn)在系統(tǒng)核心態(tài),通過定時(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è)模塊通過MSG_HELP消息或任務(wù)監(jiān)控模塊通過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à)信息通過消息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ù)客觀屬性信息,可通過任務(wù)長(zhǎng)度、數(shù)據(jù)文件大小等抽象出任務(wù)對(duì)各類資源的需求量Rq以及限制條件。
任務(wù)主觀描述信息建立在對(duì)用戶QoS需求的分析上,而用戶往往只能提供定性的需求信息,模型無法將其作為參數(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)信息;資源提供者通過對(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)控,通過定時(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é)議,通過硬實(shí)時(shí)通信協(xié)議TTEP(Time-Triggered Ethernet Protocol)來保證心跳協(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)鍵問題和技術(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.